Compare commits
1 Commits
PARTYTOOL1
...
tags/relea
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71043f958f |
2840
mozilla/directory/perldap/API.pm
Normal file
2840
mozilla/directory/perldap/API.pm
Normal file
File diff suppressed because it is too large
Load Diff
1792
mozilla/directory/perldap/API.xs
Normal file
1792
mozilla/directory/perldap/API.xs
Normal file
File diff suppressed because it is too large
Load Diff
48
mozilla/directory/perldap/CREDITS
Normal file
48
mozilla/directory/perldap/CREDITS
Normal file
@@ -0,0 +1,48 @@
|
||||
This is a short list of people that have contributed to the success of
|
||||
this project.
|
||||
|
||||
|
||||
* Leif Hedstrom <leif@perldap.org>
|
||||
|
||||
- Project lead.
|
||||
- Wrote some of the API code, and most of OO layers (Conn.pm,
|
||||
Entry.pm etc.)
|
||||
- Unix portability test.
|
||||
- Port to Windows/NT and ActivePerl.
|
||||
|
||||
|
||||
* Clayton Donley
|
||||
|
||||
- Wrote a lot of the initial API code (API.xs and API.pm).
|
||||
|
||||
|
||||
* Kevin McCarthy <kmccarth@perldap.org>
|
||||
|
||||
- Bug fixes, tons of contribution, particularly to the API.xs file.
|
||||
|
||||
|
||||
* Michelle Wyner <mwyner@perldap.org>
|
||||
|
||||
- Testing, bug fixes, and documentation, as well as working on new
|
||||
modules for PerLDAP v2.0.
|
||||
|
||||
|
||||
* John Kristian <kristian@netscape.com>
|
||||
|
||||
- Rewrote the entire LDIF module, great stuff!
|
||||
|
||||
|
||||
* Netscape Netcenter team (Kevin Burns, Max Block, Mark Takacs etc.)
|
||||
|
||||
- Tons of ideas and requests for features.
|
||||
- Discovering bugs daily (great, thanks... ;-).
|
||||
|
||||
|
||||
* Bob Ferguson <rferguso@netscape.com>
|
||||
|
||||
- Primary guinea pig for all my NT builds.
|
||||
|
||||
|
||||
* Everyone else that I've forgot to mention:
|
||||
|
||||
- Thanks for testing and debugging this package!
|
||||
554
mozilla/directory/perldap/ChangeLog
Normal file
554
mozilla/directory/perldap/ChangeLog
Normal file
@@ -0,0 +1,554 @@
|
||||
1999-08-24 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Merged v1.3.x into trunk, tagged it as v1.4, and released it!
|
||||
|
||||
1999-08-19 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Changed internal version numbering again, just called this plain
|
||||
v1.4.
|
||||
|
||||
* Entry.pm (FIRSTKEY): Bug fix, we'd crap out if there are no
|
||||
attributes in the returned entry.
|
||||
(NEXTKEY): Ditto.
|
||||
|
||||
1999-08-18 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Set version number to v1.4! Woohoo! Also tagged it as v1.3.4,
|
||||
last "development" release.
|
||||
|
||||
1999-08-17 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Makefile.PL: Fixes for Windows/NT, cleaned out some code etc.
|
||||
(MY::postamble): Support for "make html".
|
||||
|
||||
* MANIFEST: Updated with all new files etc.
|
||||
|
||||
* test.pl: Renamed to oldtest.pl, to avoid "make test" to fail.
|
||||
|
||||
1999-08-16 Kevin McCarthy <kmccarth@perldap.org> and Leif Hedstrom
|
||||
|
||||
* API.xs: Cleaned most all the memory allocation changes, we are
|
||||
changing it to use the LDAP_OPT_MEMALLOC_FN_PTRS option in the
|
||||
C-SDK instead (much cleaner!).
|
||||
(perldap_init): New function, set up the memory management
|
||||
handlers. This is called when the API module is loaded.
|
||||
(perldap_malloc): New function, our memory management method(s).
|
||||
(perldap_calloc): Ditto.
|
||||
(perldap_realloc): Ditto.
|
||||
(perldap_free): Ditto.
|
||||
|
||||
1999-08-16 Kevin McCarthy <kmccarth@perldap.org>
|
||||
|
||||
* API.xs: Cleaned up prototypes, changed strdup() to use a
|
||||
Perl'ified version, change a number of free()'s to use Safefree.
|
||||
(ldap_value_free_perl): New function, similar to
|
||||
ldap_mods_free_perl(), to avoid memory problems (on NT and
|
||||
ActivePerl primarily).
|
||||
(StrDup): New function, to handle strdup() calls in a safe way.
|
||||
(ber_bvfree_perl): Ditto.
|
||||
(ber_bvecfree_perl): Ditto.
|
||||
|
||||
1999-08-15 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* API.xs (ldap_mods_free_perl): Modified version of
|
||||
ldap_mods_free(), which uses Perl native free method instead of
|
||||
the things from the LDAP SDK. This fixes some nasty issues with
|
||||
Windows/NT and ActiveState Perl. Woohoo!!!
|
||||
|
||||
1999-08-14 Leif Hedstrom <leif@netscape.com> and Kevin McCarthy
|
||||
|
||||
* Entry.pm (setValues): Implemented bug fix for bug id 7131, where
|
||||
the "_save_" structures weren't set properly when using setValues().
|
||||
|
||||
1999-08-14 Kevin McCarthy <kmccarth@perldap.org>
|
||||
|
||||
* Conn.pm (update): Rewrote to optimize add/remove vs replace
|
||||
operations. Basically, we'll try to do whatever seems to be the
|
||||
smallest amount of work for the LDAP server now.
|
||||
|
||||
1999-08-13 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Makefile.PL: Cleaned up code, and added support for linking in
|
||||
the missing libraries need for some missing symbols.
|
||||
|
||||
1999-08-13 Michelle Wyner <mwyner@netscape.com>
|
||||
|
||||
* Entry.pm: Updated documentation, and cleaned it up.
|
||||
|
||||
* Conn.pm: Ditto.
|
||||
|
||||
1999-08-12 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (move): Changed name, was rename(), is now move().
|
||||
|
||||
1999-08-10 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (setValues): Renamed, used to be setValue(), which is
|
||||
now an alias to setValues().
|
||||
(getValues): New method, to get the array of values.
|
||||
(STORE): Fixed tests around DN handling, making sure it's not
|
||||
treated as an array. I also optimized a couple of tests, since we
|
||||
now filter out "DN" earlier in the funtion(s).
|
||||
(attrModified): Ditto.
|
||||
(attrClean): Ditto.
|
||||
(unRemove): Ditto.
|
||||
(removeValue): Ditto.
|
||||
(addValue): Ditto.
|
||||
|
||||
1999-08-08 Leif Hedstrom <leif@netscape.com> and Kevin McCarthy
|
||||
|
||||
* Entry.pm (setValue): Remove _delete_ flag, if set.
|
||||
|
||||
* Conn.pm (close): Fixed memory leak, moved code from the DESTROY
|
||||
method over here.
|
||||
(DESTROY): Call the close() method.
|
||||
(getErrorCode): We now return LDAP_SUCCESS if there is no LDAP
|
||||
connection handle.
|
||||
(getErrorString): Ditto.
|
||||
|
||||
* Entry.pm (STORE): Bug fix for large attribute sets.
|
||||
(attrModified): Ditto.
|
||||
(removeValue): Ditto.
|
||||
(addValue): Ditto.
|
||||
(EXISTS): Fix for bug 4368, cleaning up the code, and avoid the
|
||||
double calls.
|
||||
|
||||
1999-08-06 Leif Hedstrom <leif@netscape.com> and Kevin McCarthy
|
||||
|
||||
* API.xs: Added some more tests around free() statements. These
|
||||
are most likely never triggered, but better safe than sorrow (and
|
||||
the overhead of testing this is insignificant).
|
||||
|
||||
* Conn.pm (browse): Added this function, to make it easy to browse
|
||||
an entry.
|
||||
(compare): Compare an attribute value against a DN/entry, without
|
||||
having to do the search.
|
||||
|
||||
* Entry.pm (removeValue): Fixed loop bug.
|
||||
(addValue): Ditto.
|
||||
(hasValue): Ditto.
|
||||
(matchValue): Fixed loop bug, and also missing normalization in
|
||||
half of the case statement.
|
||||
(rename): Added this new method, to rename attributes.
|
||||
(copy): Added, to copy attributes.
|
||||
|
||||
* Merged v1.2.3 with v1.3 branch.
|
||||
|
||||
1999-08-06 Kevin McCarthy <kmccarth@perldap.org>
|
||||
|
||||
* Entry.pm (addDNValue): Bug fix, index for norm was wrong.
|
||||
|
||||
* Entry.pm (size): Optimzied for performance.
|
||||
|
||||
1999-07-25 Kevin McCarthy <kmccarth@perldap.org>
|
||||
|
||||
* API.xs: Fixed memory allocation problems in parsing and
|
||||
generating the LDAPMods structure.
|
||||
|
||||
1999-06-22 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (add): Fixed bug 3342, thanks to Kevin McCarthy for
|
||||
debugging this, and providing a patch. This fixes the problem with
|
||||
adding new entries that has binary data.
|
||||
|
||||
1999-03-23 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Changed versioning numbers for all .pm files.
|
||||
|
||||
1999-03-22 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm: Removed all _self_obj_ stuff...
|
||||
|
||||
* Conn.pm: Ditto.
|
||||
|
||||
* Conn.pm: Cleanup in use statements, and "use strict".
|
||||
(search): Avoid warnings of uninitialized variables.
|
||||
(searchURL): Ditto.
|
||||
(modifyRDN): Bugfix, we did not update the appropriate DN in the
|
||||
self object (very minor...).
|
||||
|
||||
* Entry.pm: Cleanup in use statements, and "use strict".
|
||||
(BEGIN): Added this initializer, to use the new LDIF module.
|
||||
(STORE): Fixed bug where we would not ignore the internal instance
|
||||
variables properly.
|
||||
|
||||
* Utils.pm: Cleanup in all use statements, and "use strict". Also
|
||||
enforces the VERSION control feature.
|
||||
|
||||
* Merged v1.2.1 to devel-branch-1_3, and tagged v1.3.1.
|
||||
|
||||
1999-03-21 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Checked in v1.2.1(beta).
|
||||
|
||||
1999-03-19 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (add): Fixed the code so that it will handle hash array,
|
||||
as the documentation indicates. (Pointed out by Kevin Burns).
|
||||
(add): Code cleanup in the add() method.
|
||||
|
||||
1999-03-18 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm: Changed back some of the "my" definitions, to make
|
||||
sure arrays are properly reset.
|
||||
(setValue): Added the _modified_ flag, from Stephen P. Schaefer
|
||||
<stephen@networks.com>.
|
||||
(addValue): Bug fix, when calling delete, and then
|
||||
addValue(). From Stephen P. Schaefer as well.
|
||||
|
||||
* Conn.pm: Ditto. This fixes the bug where qsearch/printLDIF()
|
||||
would print multiple values.
|
||||
|
||||
1999-03-12 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm: Changed docs for modifyRDN(), it was wrong...
|
||||
|
||||
1999-03-11 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (new): Added this method, so that "new ...::Entry" will
|
||||
work as expected.
|
||||
|
||||
1999-03-09 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm: Tons of changes to handling the save/modified/deleted
|
||||
attribute values.
|
||||
(DESTROY): Added this destructor again, this time it does seem to
|
||||
help quite a lot! Whoohoo...
|
||||
|
||||
* Conn.pm (update): Bug fix for bug #2530, keeping sort order for
|
||||
attribute values.
|
||||
|
||||
1999-03-08 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (unRemove): Bug fix, this was terribly horked, please
|
||||
let's try it to make sure it works...
|
||||
|
||||
* Conn.pm (newEntry): Bug fix, forgot to give it the self_obj
|
||||
member value... Sigh.
|
||||
|
||||
1999-03-05 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (DELETE): We now handle the event that someone tries to
|
||||
delete an internal attribute.
|
||||
|
||||
* Conn.pm (update): Bug: We forgot to test for existance of
|
||||
"_save_" before trying to loop over it.
|
||||
|
||||
* Entry.pm (attrClean): Added this method, to make it easier to
|
||||
reset the internal state of en Entry. This is used primarily by
|
||||
the Conn.pm package.
|
||||
(unRemove): Bug Fix: $selfl changed to $self...
|
||||
|
||||
1999-02-28 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (matchValue): Added support for the normalization,
|
||||
which should have been done before... Bug #2854.
|
||||
|
||||
* Conn.pm (printError): Changed to use ldap_err2string instead of
|
||||
ldap_perror.
|
||||
|
||||
* Utils.pm (ldapArgs): Changed "root" to "base" in the LD
|
||||
structure.
|
||||
(userCredentials): Ditto.
|
||||
|
||||
* Conn.pm: Changed documentation to reflect the "base/root"
|
||||
change.
|
||||
|
||||
1999-01-06 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (nextEntry): Fixed (tried to fix...) the bug with
|
||||
missing attributes. I hope this will work, at a minimum I'm sure
|
||||
it won't hurt. The idea is to keep the case on the attribute type
|
||||
when requesting the values_len().
|
||||
|
||||
1999-01-11 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* API.xs: Added IF statements around all ldap_value_free() calls.
|
||||
|
||||
1999-01-05 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (getRes): Ooops, didn't return the appropriate
|
||||
value... :(
|
||||
(init): Changed test for LDAP_SUCCESS, to always return 0 or 1.
|
||||
(close): Ditto.
|
||||
(delete): Ditto.
|
||||
(add): Ditto.
|
||||
(modifyRDN): Ditto.
|
||||
(update): Ditto.
|
||||
(simpleAuth): Ditto.
|
||||
|
||||
* Entry.pm (NEXTKEY): Don't return the last $key if it's one that
|
||||
should be hidden.
|
||||
|
||||
* Conn.pm (newEntry): New method, to create an empty LDAP::Entry
|
||||
object. It is properly "tied" into the appropriate object.
|
||||
|
||||
1999-01-04 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (setDN): Added third optional argument, to enfoce DN
|
||||
normalization.
|
||||
(getDN): Ditto.
|
||||
(hasDNValue): Ditto.
|
||||
(matchDNValue): Ditto.
|
||||
|
||||
* Entry.pm (removeValue): Added support for DN normalization
|
||||
(optional argument).
|
||||
(addValue): Ditto
|
||||
(getDN): Ditto.
|
||||
|
||||
1998-12-31 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (DESTROY): Added this method, don't know if it actually
|
||||
makes any sense at all... :(
|
||||
|
||||
* Conn.pm (add): Use _oc_order_ to find a list of attributes, to
|
||||
avoide calling the TIEHASH methods.
|
||||
(update): Ditto.
|
||||
(ALL): Clean out some "my" definitions.
|
||||
|
||||
* Entry.pm (unRemove): New function, to undo remove opertaions on
|
||||
an attribute.
|
||||
(DELETE): Bug-fix, don't undef the attribute, it would prevent us
|
||||
from updating it properly in the Conn::update() method.
|
||||
(remove): Ditto.
|
||||
|
||||
* Conn.pm (nextEntry): Return $obj instead of blessing the %entry
|
||||
(again).
|
||||
|
||||
1998-12-25 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (POD): Changed examples from $conn -> $entry.
|
||||
|
||||
1998-12-17 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (DESTROY): undef the Perl data after doing a
|
||||
ldap_msgfree(), bug #1964.
|
||||
(search): Ditto.
|
||||
(searchURL): Ditto.
|
||||
(nextEntry): Changed the order of setting numattr, to make sure
|
||||
it's zero if we don't find anything.
|
||||
|
||||
1998-12-16 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (FIRSTKEY): Modified to honor the oc_order.
|
||||
(NEXTKEY): Ditto.
|
||||
(markModified): Made as an alias for attrModified().
|
||||
|
||||
* Conn.pm (nextEntry): Added code to handle internal counters for
|
||||
number of attributes in oc_order. This is used/needed for the
|
||||
FIRSTKEY and NEXTKEY methods in the Entry/Tie::Hash object.
|
||||
|
||||
* Entry.pm (isAttr): New method, to make sure an attribute name
|
||||
really is a valid LDAP attribute.
|
||||
(FIRSTKEY): Now we'll handle each() and keys() properly, whooohoo!
|
||||
(NEXTKEY): Ditto.
|
||||
|
||||
1998-12-15 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (isDeleted): Added new method, almost identical to isModified().
|
||||
(EXISTS): New method, to implement the EXISTS functionality.
|
||||
|
||||
* API.xs (RET_CPP): Test for NULL pointers, bug #1387.
|
||||
(RET_BVPP): Ditto.
|
||||
|
||||
* Utils.pm (ldapArgs): Fixed bug where "-s 0" would not be honored
|
||||
(I'm an idiot, OK?).
|
||||
|
||||
1998-12-14 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (getRes): New method, to return the internal result message.
|
||||
(getLD): Use defined() around test for existence.
|
||||
|
||||
1998-12-11 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (new): Make sure binddn and bindpasswd are set to the
|
||||
empty string unless specified.
|
||||
(init): Make sure certdb is defined before trying to use it.
|
||||
(setDefaultRebindProc): Added default auth method, unless
|
||||
explicitly specified.
|
||||
|
||||
* Utils.pm (askPassword): Added support for Term::ReadKey.
|
||||
(askPassword): Moved the eval "use ..." here.
|
||||
(userCredentials): Removed verbose print statement.
|
||||
(askPassword): Added an optional argument to print a prompt;
|
||||
|
||||
* Conn.pm (setDefaultRebindProc): Added a default "auth" value, if
|
||||
not provided in the call.
|
||||
|
||||
1998-12-04 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Makefile.PL: Modified so that "silent" install will actually
|
||||
echo what options it's setting.
|
||||
It will now croak() if the SDK dir specified doesn't exist.
|
||||
|
||||
* INSTALL: Updated to reflect new v1.1 stuff. Added links to the
|
||||
FAQ.
|
||||
|
||||
* README: Ditto. Also changed some of the binary install
|
||||
information, which might not be useful anyways...
|
||||
|
||||
* Makefile.PL: Added "filters" to remove .dll and .sl from shared
|
||||
libraries when creating link options. I also replaced the code to
|
||||
put the valid library extensions into a variable (bug #1344).
|
||||
|
||||
* Makefile.PL: Fixed some crap with the config parsing, and ENV
|
||||
handling (for silent installs).
|
||||
|
||||
1998-12-03 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (update): Bug fix, now we empty the hash array before
|
||||
examining changed attributes (bug #1385).
|
||||
|
||||
* Makefile.PL: Added the "-nolinenumbers" XSUBS options (bug #1329).
|
||||
|
||||
1998-09-26 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (init): Cleaned out _perror() calls.
|
||||
(delete): Added support for calling delete() with an Entry::
|
||||
object as paramter.
|
||||
(new): Cleaned out some dead code for $ref.
|
||||
|
||||
* Entry.pm (setValue): New method, to avoid having to use Perl
|
||||
assignment statements to set an entire attribute value.
|
||||
|
||||
1998-09-18 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (init): Changed call to ldapssl_client_init() to pass a
|
||||
0 value as the handle pointer. This avoids a Perl compiler warning.
|
||||
|
||||
1998-09-12 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* LDIF.pm (readEntries): Changed tests for empty arguments, to use
|
||||
defined().
|
||||
|
||||
* Utils.pm (ldapArgs): Bug fix, we used the wrong option for the
|
||||
certificate (-P) when checking to set the LDAP port.
|
||||
(normalizeDN): Chagned tests for empty arguments, to use use defined().
|
||||
|
||||
* Entry.pm (STORE): Changed tests for empty arguments, to use
|
||||
defined().
|
||||
(DELETE): Ditto.
|
||||
(attrModified): Ditto.
|
||||
(isModified): Ditto.
|
||||
(remove): Ditto.
|
||||
(removeValue): Ditto.
|
||||
(addValue): Ditto.
|
||||
(hasValue): Ditto.
|
||||
(matchValue): Ditto.
|
||||
(setDN): Ditto.
|
||||
(size): Ditto.
|
||||
(exists): Ditto.
|
||||
|
||||
* Conn.pm (printError): Changed test for $str to see if it's defined.
|
||||
(delete): Cleaned up code around $dn.
|
||||
(modifyRDN): Cleaned up testes around $dn and $del.
|
||||
|
||||
1998-09-11 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (modifyRDN): We now preserve the case of the DN/RDN, but
|
||||
still treat RDNs as CIS when comparing strings.
|
||||
|
||||
1998-09-08 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (setDefaultRebindProc): Bug fix, it had the Ldapc:: crap
|
||||
stil in there... :-(.
|
||||
(simpleAuth): New method, to do simple authentication rebind.
|
||||
|
||||
1998-09-07 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Makefile.PL: Changed all <> to <STDIN>, to support command line
|
||||
arguments for MakeMaker.
|
||||
|
||||
1998-09-03 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (nextEntry): Fixed bug with case sensitivity.
|
||||
|
||||
1998-08-18 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (setDefaultRebindProc): It's back!
|
||||
Officially released PerLDAP v1.0.
|
||||
|
||||
1998-08-13 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Makefile.PL: Fixed so that automated installs works.
|
||||
|
||||
* Conn.pm (update): Fixed narly bug with ldap_modify()...
|
||||
|
||||
* All: Cleaned up some hash indexes, to make sure they are
|
||||
properly quoted, and there are no conflicts to resolve.
|
||||
|
||||
* Entry.pm (STORE): Fixed a bug with attribute names not being
|
||||
properly added to _oc_order_.
|
||||
(addValue): Ditto, added the same code as for STORE.
|
||||
|
||||
1998-08-06 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Entry.pm (printLDIF): Copied/modified from the Utils.pm library.
|
||||
(isModified): Added this function, thought it might be useful.
|
||||
|
||||
1998-08-03 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (modifyRDN): Fixed! It also has an option to take an
|
||||
"external" DN as an argument, if supplied.
|
||||
|
||||
1998-08-02 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (getErrorCode): Now takes two optional arguments, to
|
||||
return the match string, and extra error string. Note that these
|
||||
two arguments are pointers to strings!
|
||||
|
||||
* API.xs(ldap_get_lderrno): Fixed this function, at least it seems
|
||||
to work now...
|
||||
|
||||
* Conn.pm (getLD): Added this function, convenient way to get the
|
||||
LD from the OO layer.
|
||||
|
||||
1998-07-30 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Conn.pm (modifyRDN): New method, to rename the RDN of the entry.
|
||||
|
||||
* Utils.pm (answer): New function, from LdapUtils.pm.
|
||||
|
||||
* Conn.pm (delete): Fixed references to normalizeDN.
|
||||
|
||||
* Utils.pm (userCredentials): Added this function, to make it easy
|
||||
to get credentials when binding as a user.
|
||||
(normalizeDN): Fixed bugs, because of calling convention...
|
||||
|
||||
* Conn.pm (getError): Fixed bug with passing read-only argument.
|
||||
|
||||
1998-07-29 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* Utils.pm (unixCrypt): Moved from my LdapUtils.pm module.
|
||||
Added askPassword to the export tag.
|
||||
|
||||
* Conn.pm (new): Added support for passing a hash array of all the
|
||||
parameters, as returned by the ldapArgs() function.
|
||||
|
||||
* Utils.pm (str2Scope): New function, for converting strings
|
||||
(subtree) to a numerical scope value (2).
|
||||
(askPassword): Ditto, ask for a password, interactively.
|
||||
(ldapArgs): Ditto, handle common LDAP command line arguments.
|
||||
|
||||
* Makefile.PL: Minor change, to do regex match on OS version for
|
||||
MSWin.
|
||||
|
||||
* Entry.pm: Changed all _XXX hash values to also end with a _,
|
||||
hence making it easier to isolate them (/^_.*_$/).
|
||||
|
||||
* Conn.pm (nextEntry): Changed to accept that the attributes are
|
||||
now arrays, not pointers to arrays. We still consider them as
|
||||
pointers internally though, it's cleaner API.
|
||||
|
||||
* API.pm: Changed to use the native Exporter function to export
|
||||
tags into EXPORT_OK.
|
||||
|
||||
1998-07-22 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* LDIF.pm (readEntry): Moved from my LdapUtils.pm package.
|
||||
|
||||
* Utils.pm (printEntry): Moved from the ::Connection class, and
|
||||
marked it as "obsolete".
|
||||
(encodeBase64): Moved from my LdapUtils.pm package.
|
||||
(decodeBase64): Ditto.
|
||||
|
||||
1240
mozilla/directory/perldap/Conn.pm
Normal file
1240
mozilla/directory/perldap/Conn.pm
Normal file
File diff suppressed because it is too large
Load Diff
1203
mozilla/directory/perldap/Entry.pm
Normal file
1203
mozilla/directory/perldap/Entry.pm
Normal file
File diff suppressed because it is too large
Load Diff
98
mozilla/directory/perldap/INSTALL
Normal file
98
mozilla/directory/perldap/INSTALL
Normal file
@@ -0,0 +1,98 @@
|
||||
PerLDAP installation instructions
|
||||
==================================
|
||||
|
||||
Building this package is fairly straight forward, but requires some
|
||||
knowledge about using compilers and compiler tools on your system. If you
|
||||
are uncomfortable using these tools, we recommend you get one of the
|
||||
prebuilt binary distributions instead.
|
||||
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
In order to build the module, you'll need
|
||||
|
||||
- Perl, version 5.003 or later. We definitely recommend you to use
|
||||
v5.004 or later.
|
||||
|
||||
- An ANSI-C compiler, e.g. gcc-2.x, or Visual C++ 5.0.
|
||||
|
||||
- The LDAP client libraries and include files, e.g. the SDK from
|
||||
Netscape Communications. See the README file for information on
|
||||
retrieving binaries.
|
||||
|
||||
You can download (or CVS checkout) the Directory SDK source, see further
|
||||
information available on
|
||||
|
||||
http://www.mozilla.org/directory/
|
||||
|
||||
and the FAQ at
|
||||
|
||||
http://www.mozilla.org/directory/faq/perldap-faq.html
|
||||
|
||||
|
||||
|
||||
Building
|
||||
========
|
||||
|
||||
This package uses the normal Perl5 MakeMaker installation system. To
|
||||
generate a Makefile appropriate for your platform, run perl on the
|
||||
provided Makefile.PL script, e.g.
|
||||
|
||||
% perl Makefile.PL
|
||||
|
||||
|
||||
You might have to use the command `perl5' or `perl-5.004', depending on
|
||||
how you installed Perl-5. The script will now ask you a few questions to
|
||||
find the necessary library and include files. A typical configuration
|
||||
session is
|
||||
|
||||
data 195% perl5 Makefile.PL
|
||||
|
||||
PerLDAP - Perl 5 Module for LDAP
|
||||
================================
|
||||
Directory containing 'include' and 'lib' directory of the Netscape
|
||||
LDAP Software Developer Kit (default: /usr): /opt/ldapsdk3
|
||||
Using LDAPv3 Developer Kit (default: yes)?
|
||||
Include SSL Support (default: yes)?
|
||||
Libraries to link with (default: -L/opt/pkg/ldapsdk3/lib -lldapssl30):
|
||||
Checking if your kit is complete...
|
||||
Looks good
|
||||
Writing Makefile for Mozilla::LDAP::API
|
||||
|
||||
|
||||
|
||||
The important question is where your LDAP SDK is installed, in the example
|
||||
above the base directory is /opt/ldapsdk3. This directory should have two
|
||||
subdirectories, named "lib" and "include". If you installed the SDK in the
|
||||
standard /usr hierarchy, use the default value as provided by the install
|
||||
script.
|
||||
|
||||
Assuming you get no errors or warning, proceed with the build and install:
|
||||
|
||||
% make
|
||||
% make install
|
||||
|
||||
|
||||
That should be it!
|
||||
|
||||
|
||||
Automated Configuration and Installs
|
||||
====================================
|
||||
|
||||
The Makefile.PL script also honors a set of environment variables to make
|
||||
it possible to do configuration and installs non-interactively. The
|
||||
variables are
|
||||
|
||||
LDAPSDKDIR - Full path to the C SDK base directory
|
||||
LDAPV3ON - Set to "N" to diable LDAP v3 (on by default)
|
||||
LDAPSDKSSL - Set to "N" to disable SSL (SSL is default)
|
||||
|
||||
|
||||
With these variables set, you will not be asked any of the questions above
|
||||
(but it will echo the paramaters). Just run the Makefile.PL script, and
|
||||
finish the build, e.g.
|
||||
|
||||
% perl5 Makefile.PL
|
||||
% make
|
||||
% make install
|
||||
1224
mozilla/directory/perldap/LDIF.pm
Normal file
1224
mozilla/directory/perldap/LDIF.pm
Normal file
File diff suppressed because it is too large
Load Diff
40
mozilla/directory/perldap/MANIFEST
Normal file
40
mozilla/directory/perldap/MANIFEST
Normal file
@@ -0,0 +1,40 @@
|
||||
ChangeLog
|
||||
API.pm
|
||||
API.xs
|
||||
MANIFEST
|
||||
Makefile.PL
|
||||
constant.h
|
||||
oldtest.pl
|
||||
typemap
|
||||
Entry.pm
|
||||
Conn.pm
|
||||
LDIF.pm
|
||||
Utils.pm
|
||||
README
|
||||
INSTALL
|
||||
CREDITS
|
||||
RELEASE
|
||||
MPL-1.0.txt
|
||||
test_api/search.pl
|
||||
test_api/write.pl
|
||||
test_api/api.pl
|
||||
t/conn.pl
|
||||
t/entry.pl
|
||||
t/ChangeLog
|
||||
t/api.t
|
||||
t/conn.t
|
||||
t/entry.t
|
||||
t/ldif.t
|
||||
t/utils.t
|
||||
examples/ChangeLog
|
||||
examples/lfinger.pl
|
||||
examples/qsearch.pl
|
||||
examples/monitor.pl
|
||||
examples/ldappasswd.pl
|
||||
examples/rmentry.pl
|
||||
examples/tabdump.pl
|
||||
examples/modattr.pl
|
||||
examples/rename.pl
|
||||
examples/psoftsync.pl
|
||||
examples/changes2ldif.pl
|
||||
examples/rand_mods.pl
|
||||
360
mozilla/directory/perldap/MPL-1.0.txt
Normal file
360
mozilla/directory/perldap/MPL-1.0.txt
Normal file
@@ -0,0 +1,360 @@
|
||||
MOZILLA PUBLIC LICENSE
|
||||
Version 1.0
|
||||
|
||||
----------------
|
||||
|
||||
1. Definitions.
|
||||
|
||||
1.1. ``Contributor'' means each entity that creates or contributes to
|
||||
the creation of Modifications.
|
||||
|
||||
1.2. ``Contributor Version'' means the combination of the Original
|
||||
Code, prior Modifications used by a Contributor, and the Modifications
|
||||
made by that particular Contributor.
|
||||
|
||||
1.3. ``Covered Code'' means the Original Code or Modifications or the
|
||||
combination of the Original Code and Modifications, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.4. ``Electronic Distribution Mechanism'' means a mechanism generally
|
||||
accepted in the software development community for the electronic
|
||||
transfer of data.
|
||||
|
||||
1.5. ``Executable'' means Covered Code in any form other than Source
|
||||
Code.
|
||||
|
||||
1.6. ``Initial Developer'' means the individual or entity identified as
|
||||
the Initial Developer in the Source Code notice required by Exhibit A.
|
||||
|
||||
1.7. ``Larger Work'' means a work which combines Covered Code or
|
||||
portions thereof with code not governed by the terms of this License.
|
||||
|
||||
1.8. ``License'' means this document.
|
||||
|
||||
1.9. ``Modifications'' means any addition to or deletion from the
|
||||
substance or structure of either the Original Code or any previous
|
||||
Modifications. When Covered Code is released as a series of files, a
|
||||
Modification is:
|
||||
|
||||
A. Any addition to or deletion from the contents of a file
|
||||
containing Original Code or previous Modifications.
|
||||
|
||||
B. Any new file that contains any part of the Original Code or
|
||||
previous Modifications.
|
||||
|
||||
1.10. ``Original Code'' means Source Code of computer software code
|
||||
which is described in the Source Code notice required by Exhibit A as
|
||||
Original Code, and which, at the time of its release under this License
|
||||
is not already Covered Code governed by this License.
|
||||
|
||||
1.11. ``Source Code'' means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or a list of source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
1.12. ``You'' means an individual or a legal entity exercising rights
|
||||
under, and complying with all of the terms of, this License or a future
|
||||
version of this License issued under Section 6.1. For legal entities,
|
||||
``You'' includes any entity which controls, is controlled by, or is
|
||||
under common control with You. For purposes of this definition,
|
||||
``control'' means (a) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (b) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares or beneficial ownership of such entity.
|
||||
|
||||
2. Source Code License.
|
||||
|
||||
2.1. The Initial Developer Grant.
|
||||
The Initial Developer hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license, subject to third party intellectual property
|
||||
claims:
|
||||
|
||||
(a) to use, reproduce, modify, display, perform, sublicense and
|
||||
distribute the Original Code (or portions thereof) with or without
|
||||
Modifications, or as part of a Larger Work; and
|
||||
|
||||
(b) under patents now or hereafter owned or controlled by Initial
|
||||
Developer, to make, have made, use and sell (``Utilize'') the
|
||||
Original Code (or portions thereof), but solely to the extent that
|
||||
any such patent is reasonably necessary to enable You to Utilize
|
||||
the Original Code (or portions thereof) and not to any greater
|
||||
extent that may be necessary to Utilize further Modifications or
|
||||
combinations.
|
||||
|
||||
2.2. Contributor Grant.
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license, subject to third party intellectual property
|
||||
claims:
|
||||
|
||||
(a) to use, reproduce, modify, display, perform, sublicense and
|
||||
distribute the Modifications created by such Contributor (or
|
||||
portions thereof) either on an unmodified basis, with other
|
||||
Modifications, as Covered Code or as part of a Larger Work; and
|
||||
|
||||
(b) under patents now or hereafter owned or controlled by
|
||||
Contributor, to Utilize the Contributor Version (or portions
|
||||
thereof), but solely to the extent that any such patent is
|
||||
reasonably necessary to enable You to Utilize the Contributor
|
||||
Version (or portions thereof), and not to any greater extent that
|
||||
may be necessary to Utilize further Modifications or combinations.
|
||||
|
||||
3. Distribution Obligations.
|
||||
|
||||
3.1. Application of License.
|
||||
The Modifications which You create or to which You contribute are
|
||||
governed by the terms of this License, including without limitation
|
||||
Section 2.2. The Source Code version of Covered Code may be distributed
|
||||
only under the terms of this License or a future version of this
|
||||
License released under Section 6.1, and You must include a copy of this
|
||||
License with every copy of the Source Code You distribute. You may not
|
||||
offer or impose any terms on any Source Code version that alters or
|
||||
restricts the applicable version of this License or the recipients'
|
||||
rights hereunder. However, You may include an additional document
|
||||
offering the additional rights described in Section 3.5.
|
||||
|
||||
3.2. Availability of Source Code.
|
||||
Any Modification which You create or to which You contribute must be
|
||||
made available in Source Code form under the terms of this License
|
||||
either on the same media as an Executable version or via an accepted
|
||||
Electronic Distribution Mechanism to anyone to whom you made an
|
||||
Executable version available; and if made available via Electronic
|
||||
Distribution Mechanism, must remain available for at least twelve (12)
|
||||
months after the date it initially became available, or at least six
|
||||
(6) months after a subsequent version of that particular Modification
|
||||
has been made available to such recipients. You are responsible for
|
||||
ensuring that the Source Code version remains available even if the
|
||||
Electronic Distribution Mechanism is maintained by a third party.
|
||||
|
||||
3.3. Description of Modifications.
|
||||
You must cause all Covered Code to which you contribute to contain a
|
||||
file documenting the changes You made to create that Covered Code and
|
||||
the date of any change. You must include a prominent statement that the
|
||||
Modification is derived, directly or indirectly, from Original Code
|
||||
provided by the Initial Developer and including the name of the Initial
|
||||
Developer in (a) the Source Code, and (b) in any notice in an
|
||||
Executable version or related documentation in which You describe the
|
||||
origin or ownership of the Covered Code.
|
||||
|
||||
3.4. Intellectual Property Matters
|
||||
|
||||
(a) Third Party Claims.
|
||||
If You have knowledge that a party claims an intellectual property
|
||||
right in particular functionality or code (or its utilization
|
||||
under this License), you must include a text file with the source
|
||||
code distribution titled ``LEGAL'' which describes the claim and
|
||||
the party making the claim in sufficient detail that a recipient
|
||||
will know whom to contact. If you obtain such knowledge after You
|
||||
make Your Modification available as described in Section 3.2, You
|
||||
shall promptly modify the LEGAL file in all copies You make
|
||||
available thereafter and shall take other steps (such as notifying
|
||||
appropriate mailing lists or newsgroups) reasonably calculated to
|
||||
inform those who received the Covered Code that new knowledge has
|
||||
been obtained.
|
||||
|
||||
(b) Contributor APIs.
|
||||
If Your Modification is an application programming interface and
|
||||
You own or control patents which are reasonably necessary to
|
||||
implement that API, you must also include this information in the
|
||||
LEGAL file.
|
||||
|
||||
3.5. Required Notices.
|
||||
You must duplicate the notice in Exhibit A in each file of the Source
|
||||
Code, and this License in any documentation for the Source Code, where
|
||||
You describe recipients' rights relating to Covered Code. If You
|
||||
created one or more Modification(s), You may add your name as a
|
||||
Contributor to the notice described in Exhibit A. If it is not possible
|
||||
to put such notice in a particular Source Code file due to its
|
||||
structure, then you must include such notice in a location (such as a
|
||||
relevant directory file) where a user would be likely to look for such
|
||||
a notice. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations to one or more recipients
|
||||
of Covered Code. However, You may do so only on Your own behalf, and
|
||||
not on behalf of the Initial Developer or any Contributor. You must
|
||||
make it absolutely clear than any such warranty, support, indemnity or
|
||||
liability obligation is offered by You alone, and You hereby agree to
|
||||
indemnify the Initial Developer and every Contributor for any liability
|
||||
incurred by the Initial Developer or such Contributor as a result of
|
||||
warranty, support, indemnity or liability terms You offer.
|
||||
|
||||
3.6. Distribution of Executable Versions.
|
||||
You may distribute Covered Code in Executable form only if the
|
||||
requirements of Section 3.1-3.5 have been met for that Covered Code,
|
||||
and if You include a notice stating that the Source Code version of the
|
||||
Covered Code is available under the terms of this License, including a
|
||||
description of how and where You have fulfilled the obligations of
|
||||
Section 3.2. The notice must be conspicuously included in any notice in
|
||||
an Executable version, related documentation or collateral in which You
|
||||
describe recipients' rights relating to the Covered Code. You may
|
||||
distribute the Executable version of Covered Code under a license of
|
||||
Your choice, which may contain terms different from this License,
|
||||
provided that You are in compliance with the terms of this License and
|
||||
that the license for the Executable version does not attempt to limit
|
||||
or alter the recipient's rights in the Source Code version from the
|
||||
rights set forth in this License. If You distribute the Executable
|
||||
version under a different license You must make it absolutely clear
|
||||
that any terms which differ from this License are offered by You alone,
|
||||
not by the Initial Developer or any Contributor. You hereby agree to
|
||||
indemnify the Initial Developer and every Contributor for any liability
|
||||
incurred by the Initial Developer or such Contributor as a result of
|
||||
any such terms You offer.
|
||||
|
||||
3.7. Larger Works.
|
||||
You may create a Larger Work by combining Covered Code with other code
|
||||
not governed by the terms of this License and distribute the Larger
|
||||
Work as a single product. In such a case, You must make sure the
|
||||
requirements of this License are fulfilled for the Covered Code.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation.
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Code due to statute
|
||||
or regulation then You must: (a) comply with the terms of this License
|
||||
to the maximum extent possible; and (b) describe the limitations and
|
||||
the code they affect. Such description must be included in the LEGAL
|
||||
file described in Section 3.4 and must be included with all
|
||||
distributions of the Source Code. Except to the extent prohibited by
|
||||
statute or regulation, such description must be sufficiently detailed
|
||||
for a recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Application of this License.
|
||||
|
||||
This License applies to code to which the Initial Developer has
|
||||
attached the notice in Exhibit A, and to related Covered Code.
|
||||
|
||||
6. Versions of the License.
|
||||
|
||||
6.1. New Versions.
|
||||
Netscape Communications Corporation (``Netscape'') may publish revised
|
||||
and/or new versions of the License from time to time. Each version will
|
||||
be given a distinguishing version number.
|
||||
|
||||
6.2. Effect of New Versions.
|
||||
Once Covered Code has been published under a particular version of the
|
||||
License, You may always continue to use it under the terms of that
|
||||
version. You may also choose to use such Covered Code under the terms
|
||||
of any subsequent version of the License published by Netscape. No one
|
||||
other than Netscape has the right to modify the terms applicable to
|
||||
Covered Code created under this License.
|
||||
|
||||
6.3. Derivative Works.
|
||||
If you create or use a modified version of this License (which you may
|
||||
only do in order to apply it to code which is not already Covered Code
|
||||
governed by this License), you must (a) rename Your license so that the
|
||||
phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or
|
||||
any confusingly similar phrase do not appear anywhere in your license
|
||||
and (b) otherwise make it clear that your version of the license
|
||||
contains terms which differ from the Mozilla Public License and
|
||||
Netscape Public License. (Filling in the name of the Initial Developer,
|
||||
Original Code or Contributor in the notice described in Exhibit A shall
|
||||
not of themselves be deemed to be modifications of this License.)
|
||||
|
||||
7. DISCLAIMER OF WARRANTY.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS,
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
|
||||
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
|
||||
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
|
||||
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
|
||||
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
|
||||
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
||||
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
||||
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
|
||||
8. TERMINATION.
|
||||
|
||||
This License and the rights granted hereunder will terminate
|
||||
automatically if You fail to comply with terms herein and fail to cure
|
||||
such breach within 30 days of becoming aware of the breach. All
|
||||
sublicenses to the Covered Code which are properly granted shall
|
||||
survive any termination of this License. Provisions which, by their
|
||||
nature, must remain in effect beyond the termination of this License
|
||||
shall survive.
|
||||
|
||||
9. LIMITATION OF LIABILITY.
|
||||
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
||||
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
|
||||
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
|
||||
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER
|
||||
PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
||||
OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
|
||||
GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND
|
||||
ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
|
||||
BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
||||
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
||||
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
|
||||
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT
|
||||
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
10. U.S. GOVERNMENT END USERS.
|
||||
|
||||
The Covered Code is a ``commercial item,'' as that term is defined in
|
||||
48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer
|
||||
software'' and ``commercial computer software documentation,'' as such
|
||||
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
|
||||
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
|
||||
all U.S. Government End Users acquire Covered Code with only those
|
||||
rights set forth herein.
|
||||
|
||||
11. MISCELLANEOUS.
|
||||
|
||||
This License represents the complete agreement concerning subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. This License shall be governed by
|
||||
California law provisions (except to the extent applicable law, if any,
|
||||
provides otherwise), excluding its conflict-of-law provisions. With
|
||||
respect to disputes in which at least one party is a citizen of, or an
|
||||
entity chartered or registered to do business in, the United States of
|
||||
America: (a) unless otherwise agreed in writing, all disputes relating
|
||||
to this License (excepting any dispute relating to intellectual
|
||||
property rights) shall be subject to final and binding arbitration,
|
||||
with the losing party paying all costs of arbitration; (b) any
|
||||
arbitration relating to this Agreement shall be held in Santa Clara
|
||||
County, California, under the auspices of JAMS/EndDispute; and (c) any
|
||||
litigation relating to this Agreement shall be subject to the
|
||||
jurisdiction of the Federal Courts of the Northern District of
|
||||
California, with venue lying in Santa Clara County, California, with
|
||||
the losing party responsible for costs, including without limitation,
|
||||
court costs and reasonable attorneys fees and expenses. The application
|
||||
of the United Nations Convention on Contracts for the International
|
||||
Sale of Goods is expressly excluded. Any law or regulation which
|
||||
provides that the language of a contract shall be construed against the
|
||||
drafter shall not apply to this License.
|
||||
|
||||
12. RESPONSIBILITY FOR CLAIMS.
|
||||
|
||||
Except in cases where another Contributor has failed to comply with
|
||||
Section 3.4, You are responsible for damages arising, directly or
|
||||
indirectly, out of Your utilization of rights under this License, based
|
||||
on the number of copies of Covered Code you made available, the
|
||||
revenues you received from utilizing such rights, and other relevant
|
||||
factors. You agree to work with affected parties to distribute
|
||||
responsibility on an equitable basis.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
``The contents of this file are subject to the Mozilla Public License
|
||||
Version 1.0 (the "License"); you may not use this file except in
|
||||
compliance with the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS"
|
||||
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
License for the specific language governing rights and limitations
|
||||
under the License.
|
||||
|
||||
The Original Code is ______________________________________.
|
||||
|
||||
The Initial Developer of the Original Code is ________________________.
|
||||
Portions created by ______________________ are Copyright (C) ______
|
||||
_______________________. All Rights Reserved.
|
||||
|
||||
Contributor(s): ______________________________________.''
|
||||
194
mozilla/directory/perldap/Makefile.PL
Normal file
194
mozilla/directory/perldap/Makefile.PL
Normal file
@@ -0,0 +1,194 @@
|
||||
#############################################################################
|
||||
# $Id: Makefile.PL,v 1.15 1999-08-24 22:30:46 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# The Makefile "source".
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use ExtUtils::MakeMaker;
|
||||
use Config;
|
||||
use Carp;
|
||||
|
||||
$perlpath = $Config{'perlpath'};
|
||||
$osname = $Config{'osname'};
|
||||
|
||||
$ldapsdk_loc = $ENV{"LDAPSDKDIR"}; # Full Path to C SDK Top-Level
|
||||
$ldapsdk_ssl = $ENV{"LDAPSDKSSL"}; # N to exclude SSL
|
||||
$ldapsdk_ver = $ENV{"LDAPV3ON"}; # N to exclude LDAP v3 features
|
||||
|
||||
$libexts = "so|sl|a|lib";
|
||||
|
||||
|
||||
print "\nPerLDAP - Perl 5 Module for LDAP\n";
|
||||
print "================================\n";
|
||||
|
||||
$silent = 1;
|
||||
print "Directory containing 'include' and 'lib' directory of the Netscape\n";
|
||||
print "LDAP Software Developer Kit (default: /usr): ";
|
||||
if (!$ldapsdk_loc)
|
||||
{
|
||||
$silent = 0;
|
||||
chomp ($ldapsdk_loc = <STDIN>);
|
||||
$ldapsdk_loc = "/usr" unless $ldapsdk_loc =~ /\S/;
|
||||
} else {
|
||||
print "$ldapsdk_loc\n";
|
||||
}
|
||||
croak("Directory $ldapsdk_loc does not exist!") unless -d $ldapsdk_loc;
|
||||
|
||||
if ($osname =~ /mswin/i)
|
||||
{
|
||||
$dir_sep = "\\";
|
||||
} else {
|
||||
$dir_sep = "/";
|
||||
}
|
||||
|
||||
$include_ldap = $ldapsdk_loc . $dir_sep . "include";
|
||||
$lib_ldap = $ldapsdk_loc . $dir_sep . "lib";
|
||||
|
||||
print "Using LDAPv3 Developer Kit (default: yes)? ";
|
||||
if (!$ldapsdk_ver)
|
||||
{
|
||||
$silent = 0;
|
||||
chomp ($ldapsdk_ver = <STDIN>);
|
||||
} else {
|
||||
print "YES\n";
|
||||
}
|
||||
$v3_def = "-DLDAPV3" unless ($ldapsdk_ver =~ /^n/i);
|
||||
|
||||
|
||||
print "Include SSL Support (default: yes)? ";
|
||||
if (!$ldapsdk_ssl)
|
||||
{
|
||||
$silent = 0;
|
||||
chomp ($ldapsdk_ssl = <STDIN>);
|
||||
} else {
|
||||
print "YES\n";
|
||||
}
|
||||
$ssl_def = "-DUSE_SSL" unless ($ldapsdk_ssl =~ /^n/i);
|
||||
|
||||
|
||||
opendir(DIR,$lib_ldap);
|
||||
@files = grep{/ldap|lber/} readdir(DIR);
|
||||
closedir(DIR);
|
||||
|
||||
if (!((@ldaplib = grep{/ldapssl.*\.($libexts)$/} @files) && $ssl_def))
|
||||
{
|
||||
@ldaplib = grep{/ldap.*\.($libexts)$/} @files;
|
||||
@lberlib = grep{/lber.*\.($libexts)$/} @files;
|
||||
}
|
||||
|
||||
if ($#ldaplib < 0)
|
||||
{
|
||||
die "No LDAP libraries found.";
|
||||
}
|
||||
|
||||
if ($#ldaplib > 0)
|
||||
{
|
||||
print "Located multiple libraries:\n";
|
||||
foreach $alib (@ldaplib)
|
||||
{
|
||||
print " - $alib\n";
|
||||
}
|
||||
}
|
||||
|
||||
$lline_ldap = $ldaplib[0];
|
||||
$lline_ldap =~ s/^lib//;
|
||||
$lline_ldap =~ s/\.($libexts)$//;
|
||||
$lline = "-L$lib_ldap -l$lline_ldap";
|
||||
|
||||
if ($#lberlib >= 0 && $lline =~ /ldap$/)
|
||||
{
|
||||
$lline_lber = $lberlib[0];
|
||||
$lline_lber =~ s/^lib//;
|
||||
$lline_lber =~ s/\.($libexts)$//;
|
||||
$lline .= " -l$lline_lber";
|
||||
}
|
||||
|
||||
print "Libraries to link with (default: $lline): ";
|
||||
if (!$silent)
|
||||
{
|
||||
chomp ($lib_line = <STDIN>);
|
||||
$lib_line = $lline unless $lib_line =~ /\S/;
|
||||
} else {
|
||||
print "\n";
|
||||
}
|
||||
|
||||
|
||||
# Include directories etc.
|
||||
$my_includes = "";
|
||||
$my_includes .= " -I$include_ldap" unless ($include_ldap eq "/usr/include");
|
||||
|
||||
|
||||
# Add system dependant stuff here...
|
||||
@extras = ();
|
||||
if ($osname =~ /mswin/i)
|
||||
{
|
||||
$my_extlib = "$lib_ldap\\$ldaplib[0]";
|
||||
$my_extlib .= " $lib_ldap\\$lberlib[0]" if $lber_lib;
|
||||
push(@extras, 'dynamic_lib' => {
|
||||
'OTHERLDFLAGS' => "kernel32.lib oldnames.lib" });
|
||||
} else {
|
||||
$my_extlib = "";
|
||||
}
|
||||
|
||||
push(@extras,
|
||||
CAPI => 'TRUE')
|
||||
if ($] >= 5.005 and $^O eq 'MSWin32'
|
||||
and $Config{archname} =~ /-object\b/i);
|
||||
|
||||
push(@extras,
|
||||
ABSTRACT => 'Perl methods for LDAP C API calls',
|
||||
AUTHOR => 'Netscape Communications Corp., Inc. and Clayton Donley')
|
||||
if ($] >= 5.005);
|
||||
|
||||
#
|
||||
# Ok, let's do it!
|
||||
#
|
||||
WriteMakefile(
|
||||
'NAME' => 'Mozilla::LDAP::API',
|
||||
'DISTNAME' => 'PerLDAP',
|
||||
'VERSION_FROM' => 'API.pm',
|
||||
'INC' => $my_includes,
|
||||
'LIBS' => [$lib_line],
|
||||
'MYEXTLIB' => $my_extlib,
|
||||
'DEFINE' => "$v3_def $ssl_def",
|
||||
'XSOPT' => "-nolinenumbers",
|
||||
@extras
|
||||
);
|
||||
|
||||
|
||||
#
|
||||
# Generate a "make HTML" target
|
||||
#
|
||||
sub MY::postamble
|
||||
{
|
||||
'
|
||||
.SUFFIXES: .pm .html
|
||||
.PHONY: html
|
||||
|
||||
.pm.html:
|
||||
pod2html --netscape $< > $@
|
||||
|
||||
html: Entry.html Conn.html Utils.html API.html LDIF.html $(FIRST_MAKEFILE)
|
||||
@rm -f pod2html-itemcache pod2html-dircache
|
||||
'
|
||||
}
|
||||
131
mozilla/directory/perldap/README
Normal file
131
mozilla/directory/perldap/README
Normal file
@@ -0,0 +1,131 @@
|
||||
#############################################################################
|
||||
# #
|
||||
# PerLDAP v1.4 - A Perl Developers' Kit for LDAP #
|
||||
# #
|
||||
#############################################################################
|
||||
|
||||
|
||||
What is PerLDAP?
|
||||
================
|
||||
|
||||
PerLDAP is a set of modules written in Perl and C that allow developers to
|
||||
leverage their existing Perl knowledge to easily access and manage LDAP-
|
||||
enabled directories. PerLDAP makes it very easy to search, add, delete,
|
||||
and modify directory entries. For example, Perl developers can easily
|
||||
build web applications to access information stored in a directory or
|
||||
create directory sync tools between directories and other services.
|
||||
|
||||
PerLDAP is an open source development project, the result of a joint effort
|
||||
between Netscape and Clayton Donley, an open source developer. PerLDAP
|
||||
currently provides the basic functions to allow Perl users to access and
|
||||
manipulate directories easily. Based on developer feedback and
|
||||
involvement, PerLDAP will continue to evolve to include additional
|
||||
functionality in future releases.
|
||||
|
||||
|
||||
Compiling the PerLDAP Sources
|
||||
=============================
|
||||
|
||||
The source to PerLDAP is available on the Mozilla site at:
|
||||
|
||||
http://www.mozilla.org/directory/
|
||||
|
||||
You can either retrieve the .tar/zip file with the source distribution, or
|
||||
use CVS to checkout the module directly. The name of the CVS module is
|
||||
PerLDAP, and it checks out the directory
|
||||
|
||||
mozilla/directory/perldap
|
||||
|
||||
Further instructions for using CVS and Mozilla is available at
|
||||
|
||||
http://www.mozilla.org/cvs.html
|
||||
|
||||
and an FAQ for PerLDAP is at
|
||||
|
||||
http://www.mozilla.org/directory/faq/perldap-faq.html
|
||||
|
||||
|
||||
Instructions for building the source can be found in the INSTALL file
|
||||
in the source distribution. The latest stable release of PerLDAP is
|
||||
v1.4, the next version is planned to be v2.0 (development continues on the
|
||||
v1.9 development branch).
|
||||
|
||||
|
||||
Getting Started
|
||||
===============
|
||||
|
||||
Documentation for this module is in standard Perl 'pod' format. HTML
|
||||
versions of this documentation can also be found on the Netscape DevEdge
|
||||
site at: http://developer.netscape.com/tech/directory/.
|
||||
|
||||
Additionally, many good examples can be found in the 'examples' directory.
|
||||
|
||||
|
||||
Modules and Examples Included
|
||||
=============================
|
||||
|
||||
Mozilla::LDAP::API - Low level interface between Perl and the LDAP C API
|
||||
Mozilla::LDAP::Entry - Perl methods for manipulating entry objects
|
||||
Mozilla::LDAP::Conn - Perl methods for performing LDAP operations
|
||||
Mozilla::LDAP::LDIF - Perl methods for utilizing LDIF
|
||||
Mozilla::LDAP::Utils - Some convenient LDAP related utilities
|
||||
test_api/search.pl - Tests low level API search calls
|
||||
test_api/write.pl - Tests low level API write calls
|
||||
test_api/api.pl - Tests ALL low level LDAPv2 calls
|
||||
examples/lfinger.pl - LDAP version of the regular Unix finger command.
|
||||
examples/qsearch.pl - Simple ldapsearch replacement.
|
||||
examples/monitor.pl - Retrieve status information from an LDAP server.
|
||||
examples/ldappasswd.pl - Change the LDAP password for a user.
|
||||
examples/rmentry.pl - Remove an entire entry from the database.
|
||||
examples/rename.pl - Rename (modRDN) an entry.
|
||||
examples/tabdump.pl - Dump LDAP information into a tab separated file.
|
||||
examples/psoftsync.pl - Synchronize LDAP with a PeopleSoft "dump" file.
|
||||
|
||||
|
||||
All examples support the "standard" LDAP command line options, which are
|
||||
|
||||
-h hostname LDAP server name
|
||||
-p port # LDAP port, default is 389 (or 636 for SSL)
|
||||
-b base DN LDAP Base-DN
|
||||
-D bind DN LDAP bind DN (connect to server as this "user")
|
||||
-w bind pswd Password to bind to the server
|
||||
-P certfile Use SSL, with the publick keys from this file
|
||||
|
||||
|
||||
Note that the examples currently only support Simple Authentication
|
||||
(passwords), the Client Authentication features (using certificates) will
|
||||
be used in the next release. All examples also honors the environment
|
||||
variable LDAP_BASEDN, set it to your systems base DN, e.g.
|
||||
|
||||
% setenv LDAP_BASEDN 'dc=netscape,dc=com'
|
||||
|
||||
or for Bourne shell
|
||||
|
||||
# LDAP_BASEDN='dc=netscape,dc=com'; export LDAP_BASEDN
|
||||
|
||||
|
||||
Reporting problems and bugs
|
||||
===========================
|
||||
|
||||
Address all bug reports and comments to the Mozilla newsgroups at:
|
||||
|
||||
news://news.mozilla.org/netscape.public.mozilla.directory
|
||||
|
||||
|
||||
License/Copyright
|
||||
=================
|
||||
|
||||
Portions by Netscape (c) Copyright 1998 Netscape Communications Corp, Inc.
|
||||
Portions by Clayton Donley (c) Copyright 1998 Clayton Donley
|
||||
|
||||
Please read the MPL-1.0.txt file included for information on the Mozilla
|
||||
Public License, which covers all files in this distribution.
|
||||
|
||||
Known Bugs
|
||||
==========
|
||||
|
||||
There are a number of issues still outstanding at the time of release. Most
|
||||
of these are already in the process of being resolved.
|
||||
|
||||
- The Rebind operation on NT does NOT work properly when set to a Perl
|
||||
function. This is being investigated.
|
||||
79
mozilla/directory/perldap/RELEASE
Normal file
79
mozilla/directory/perldap/RELEASE
Normal file
@@ -0,0 +1,79 @@
|
||||
#############################################################################
|
||||
# #
|
||||
# PerLDAP Release Notes #
|
||||
# #
|
||||
#############################################################################
|
||||
|
||||
VERSION 1.4 - AUGUST 18, 1999
|
||||
=============================
|
||||
|
||||
This is primarily a bug fix release, however there are 5 new methods
|
||||
introduced as well. Brief descriptions follow in this document. To get
|
||||
full examples and a larger summary, see the PerLDAP Programmer's Guide.
|
||||
|
||||
|
||||
New Methods Added
|
||||
-----------------
|
||||
|
||||
Entry.pm:
|
||||
* getValues() - returns the array of values.
|
||||
* move() - move one attribute to another, and delete the original.
|
||||
* copy() - copy one attribute to another.
|
||||
|
||||
Conn.pm:
|
||||
* browse() - makes it easy to browse an entry.
|
||||
* compare() - compare an attribute value against a DN/entry
|
||||
without having to do the search.
|
||||
|
||||
|
||||
Bug Fixes and other changes
|
||||
---------------------------
|
||||
|
||||
Entry.pm:
|
||||
* addDNValue() - fixed wrong index for norm.
|
||||
* matchValue() - fixed missing normalization in half of case statement.
|
||||
* setValue() - remove _delete_ flag if set, fix for saving state.
|
||||
* STORE - fixed not ignoring the internal instance variables properly.
|
||||
* Fixed numerous bugs for large attribute sets.
|
||||
* Fixed bug 4368 ("exists vs. EXISTS").
|
||||
* Fixed several loop bugs.
|
||||
* Removed all _self_obj_ references, it's obsolete in this
|
||||
version.
|
||||
* We support each() and keys() now on the Entry object, to loop
|
||||
through all attribute names (types).
|
||||
|
||||
|
||||
Conn.pm:
|
||||
* close() - fixed memory leak.
|
||||
* modifyRDN() - fixed problem where we weren't updating the
|
||||
appropriate DN in the self object.
|
||||
* Fixed bug 3342 (problems adding entries with binary data).
|
||||
* getErrorCode()/getErrorString() - return LDAP_SUCCESS if no
|
||||
LDAP connection handle.
|
||||
* add() - fixed code to handle hash array as docs indicate.
|
||||
* update() - optimization for "replace" vs "add/delete", we try to
|
||||
use whatever LDAPMod is most efficient.
|
||||
|
||||
LDIF.pm:
|
||||
|
||||
* Complete rewrite, by John Kristian <kristian@netscape.com>.
|
||||
|
||||
API.xs:
|
||||
* Fixed memory allocation problems, replacing all memory management
|
||||
routines. This solves all known issues with ActiveState Perl.
|
||||
* More safety checks around calls to *_free().
|
||||
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
* Various other optimizations on tests and such.
|
||||
* Fixed most (all?) known memory leaks.
|
||||
* Fixed a lot of problems with Makefile.PL, adding some new targets
|
||||
(like "make html"). Add a skeleton to "make test".
|
||||
* Fixed numerous small bugs, as reported to Mozilla.
|
||||
* We produce less warnings now, and try to "use strict" when
|
||||
appropriate.
|
||||
* We have a new versioning scheme, conforming to standard
|
||||
Perl. We'll change this again when Perl's new versioning system
|
||||
is in place (allowing versions like 1.2.3).
|
||||
387
mozilla/directory/perldap/Utils.pm
Normal file
387
mozilla/directory/perldap/Utils.pm
Normal file
@@ -0,0 +1,387 @@
|
||||
#############################################################################
|
||||
# $Id: Utils.pm,v 1.13 1999-08-24 22:30:48 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Lots of Useful Little Utilities, for LDAP related operations.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
package Mozilla::LDAP::Utils;
|
||||
|
||||
use Mozilla::LDAP::API 1.4 qw(:constant);
|
||||
use Mozilla::LDAP::Conn;
|
||||
use Exporter;
|
||||
|
||||
use strict;
|
||||
use vars qw($VERSION @ISA %EXPORT_TAGS);
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
$VERSION = "1.4";
|
||||
|
||||
%EXPORT_TAGS = (
|
||||
all => [qw(normalizeDN
|
||||
isUrl
|
||||
printEntry
|
||||
printentry
|
||||
encodeBase64
|
||||
decodeBase64
|
||||
str2Scope
|
||||
askPassword
|
||||
ldapArgs
|
||||
unixCrypt
|
||||
userCredentials
|
||||
answer)]
|
||||
);
|
||||
|
||||
|
||||
# Add Everything in %EXPORT_TAGS to @EXPORT_OK
|
||||
Exporter::export_ok_tags('all');
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Normalize the DN string (first argument), and return the new, normalized,
|
||||
# string (DN). This is useful to make sure that two syntactically
|
||||
# identical DNs compare (eq) as the same string.
|
||||
#
|
||||
sub normalizeDN
|
||||
{
|
||||
my ($dn) = @_;
|
||||
my (@vals);
|
||||
|
||||
return "" unless (defined($dn) && ($dn ne ""));
|
||||
|
||||
@vals = Mozilla::LDAP::API::ldap_explode_dn(lc $dn, 0);
|
||||
|
||||
return join(",", @vals);
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Checks if a string is a properly formed LDAP URL.
|
||||
#
|
||||
sub isURL
|
||||
{
|
||||
return ldap_is_ldap_url($_[0]);
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Print an entry, in LDIF format. This is sort of obsolete, we encourage
|
||||
# you to use the :;LDAP::LDIF class instead.
|
||||
#
|
||||
sub printEntry
|
||||
{
|
||||
my $entry = $_[0];
|
||||
my ($attr);
|
||||
|
||||
local $_;
|
||||
|
||||
print "dn: ", $entry->{"dn"},"\n";
|
||||
foreach $attr (@{$entry->{"_oc_order_"}})
|
||||
{
|
||||
next if ($attr =~ /^_.+_$/);
|
||||
next if $entry->{"_${attr}_deleted_"};
|
||||
foreach (@{$entry->{$attr}})
|
||||
{
|
||||
print "$attr: $_\n";
|
||||
}
|
||||
}
|
||||
|
||||
print "\n";
|
||||
}
|
||||
*printentry = \*printEntry;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Perform Base64 encoding, this is based on MIME::Base64.pm, written
|
||||
# by Gisle Aas <gisle@aas.no>. If possible, use the MIME:: package instead.
|
||||
#
|
||||
sub encodeBase64
|
||||
{
|
||||
my ($res) = "";
|
||||
my ($eol) = "$_[1]";
|
||||
my ($padding);
|
||||
|
||||
pos($_[0]) = 0; # ensure start at the beginning
|
||||
while ($_[0] =~ /(.{1,45})/gs) {
|
||||
$res .= substr(pack('u', $1), 1);
|
||||
chop($res);
|
||||
}
|
||||
|
||||
$res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs
|
||||
$padding = (3 - length($_[0]) % 3) % 3;
|
||||
$res =~ s/.{$padding}$/'=' x $padding/e if $padding;
|
||||
|
||||
if (length $eol) {
|
||||
$res =~ s/(.{1,76})/$1$eol/g;
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Perform Base64 decoding, this is based on MIME::Base64.pm, written
|
||||
# by Gisle Aas <gisle@aas.no>. If possible, use the MIME:: package instead.
|
||||
#
|
||||
sub decodeBase64
|
||||
{
|
||||
my ($str) = shift;
|
||||
my ($res) = "";
|
||||
my ($len);
|
||||
|
||||
$str =~ tr|A-Za-z0-9+=/||cd;
|
||||
Carp::croak("Base64 decoder requires string length to be a multiple of 4")
|
||||
if length($str) % 4;
|
||||
|
||||
$str =~ s/=+$//; # remove padding
|
||||
$str =~ tr|A-Za-z0-9+/| -_|; # convert to uuencoded format
|
||||
while ($str =~ /(.{1,60})/gs)
|
||||
{
|
||||
$len = chr(32 + length($1)*3/4);
|
||||
$res .= unpack("u", $len . $1 ); # uudecode
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Convert a "human" readable string to an LDAP scope value
|
||||
#
|
||||
sub str2Scope
|
||||
{
|
||||
my ($str) = $_[0];
|
||||
|
||||
return $str if ($str =~ /^[0-9]+$/);
|
||||
|
||||
if ($str =~ /^sub/i)
|
||||
{
|
||||
return LDAP_SCOPE_SUBTREE;
|
||||
}
|
||||
elsif ($str =~ /^base/i)
|
||||
{
|
||||
return LDAP_SCOPE_BASE;
|
||||
}
|
||||
elsif ($str =~ /^one/i)
|
||||
{
|
||||
return LDAP_SCOPE_ONELEVEL;
|
||||
}
|
||||
|
||||
# Default...
|
||||
return LDAP_SCOPE_SUBTREE;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Ask for a password, without displaying it on the TTY.
|
||||
#
|
||||
sub askPassword
|
||||
{
|
||||
my ($prompt) = $_[0];
|
||||
my ($hasReadKey) = 0;
|
||||
|
||||
eval "use Term::ReadKey";
|
||||
$hasReadKey=1 unless ($@);
|
||||
|
||||
print "LDAP password: " if $prompt;
|
||||
if ($hasReadKey)
|
||||
{
|
||||
ReadMode(2);
|
||||
chop($_ = ReadLine(0));
|
||||
ReadMode(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
system('/bin/stty -echo');
|
||||
chop($_ = <STDIN>);
|
||||
system('/bin/stty echo');
|
||||
}
|
||||
print "\n";
|
||||
|
||||
return $_;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Handle some standard LDAP options, and construct a nice little structure
|
||||
# that we can use later on. We really should have some appropriate defaults,
|
||||
# perhaps from an Mozilla::LDAP::Config module.
|
||||
#
|
||||
sub ldapArgs
|
||||
{
|
||||
my ($bind, $base) = @_;
|
||||
my (%ld);
|
||||
|
||||
$main::opt_v = $main::opt_n if defined($main::opt_n);
|
||||
$main::opt_p = LDAPS_PORT if (!defined($main::opt_p) &&
|
||||
defined($main::opt_P) &&
|
||||
($main::opt_P ne ""));
|
||||
|
||||
$ld{"host"} = $main::opt_h || "ldap";
|
||||
$ld{"port"} = $main::opt_p || LDAP_PORT;
|
||||
$ld{"base"} = $main::opt_b || $base || $ENV{'LDAP_BASEDN'};
|
||||
$ld{"root"} = $ld{"base"};
|
||||
$ld{"bind"} = $main::opt_D || $bind || "";
|
||||
$ld{"pswd"} = $main::opt_w || "";
|
||||
$ld{"cert"} = $main::opt_P || "";
|
||||
$ld{"scope"} = (defined($main::opt_s) ? $main::opt_s : LDAP_SCOPE_SUBTREE);
|
||||
|
||||
if (($ld{"bind"} ne "") && ($ld{"pswd"} eq ""))
|
||||
{
|
||||
$ld{pswd} = askPassword(1);
|
||||
}
|
||||
|
||||
return %ld;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Create a Unix-type password, using the "crypt" function. A random salt
|
||||
# is always generated, perhaps it should be an optional argument?
|
||||
#
|
||||
sub unixCrypt
|
||||
{
|
||||
my ($ascii) =
|
||||
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
my ($salt) = substr($ascii, rand(62), 1) . substr($ascii, rand(62), 1);
|
||||
|
||||
srand(time ^ $$);
|
||||
crypt($_[0], $salt);
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Try to find a user to bind as, and possibly ask for the password. Pass
|
||||
# a pointer to the hash array with LDAP parameters to this function.
|
||||
#
|
||||
sub userCredentials
|
||||
{
|
||||
my ($ld) = @_;
|
||||
my ($conn, $entry, $pswd, $search);
|
||||
|
||||
if ($ld->{"bind"} eq "")
|
||||
{
|
||||
my ($base) = $ld->{"base"} || $ld->{"root"};
|
||||
|
||||
$conn = new Mozilla::LDAP::Conn($ld);
|
||||
die "Could't connect to LDAP server " . $ld->{"host"} unless $conn;
|
||||
|
||||
$search = "(&(objectclass=inetOrgPerson)(uid=$ENV{USER}))";
|
||||
$entry = $conn->search($base, "subtree", $search, 0, ("uid"));
|
||||
return 0 if (!$entry || $conn->nextEntry());
|
||||
|
||||
$conn->close();
|
||||
$ld->{"bind"} = $entry->getDN();
|
||||
}
|
||||
|
||||
if ($ld->{"pswd"} eq "")
|
||||
{
|
||||
$ld->{"pswd"} = Mozilla::LDAP::Utils::askPassword(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Ask a Y/N question, return "Y" or "N".
|
||||
#
|
||||
sub answer
|
||||
{
|
||||
die "Default string must be Y or N."
|
||||
unless (($_[0] eq "Y") || ($_[0] eq "N"));
|
||||
|
||||
chop($_ = <STDIN>);
|
||||
|
||||
return $_[0] if /^$/;
|
||||
return "Y" if /^[yY]/;
|
||||
return "N" if /^[nN]/;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Mandatory TRUE return value.
|
||||
#
|
||||
1;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# POD documentation...
|
||||
#
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Mozilla::LDAP::Utils.pm - Collection of useful little utilities.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Mozilla::LDAP::Utils;
|
||||
|
||||
=head1 ABSTRACT
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
|
||||
=head1 OBJECT CLASS METHODS
|
||||
|
||||
=over 13
|
||||
|
||||
=item B<normalizeDN>
|
||||
|
||||
This function will remove all extraneous white spaces in the DN, and also
|
||||
change all upper case characters to lower case. The only argument is the
|
||||
DN string to normalize, and the return value is the new, clean DN.
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
There are plenty of examples to look at, in the examples directory. We are
|
||||
adding more examples every day (almost).
|
||||
|
||||
=head1 INSTALLATION
|
||||
|
||||
Installing this package is part of the Makefile supplied in the
|
||||
package. See the installation procedures which are part of this package.
|
||||
|
||||
=head1 AVAILABILITY
|
||||
|
||||
This package can be retrieved from a number of places, including:
|
||||
|
||||
http://www.mozilla.org/directory/
|
||||
Your local CPAN server
|
||||
|
||||
=head1 CREDITS
|
||||
|
||||
Most of this code was developed by Leif Hedstrom, Netscape Communications
|
||||
Corporation.
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
None. :)
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Mozilla::LDAP::Conn>, L<Mozilla::LDAP::Entry>, L<Mozilla::LDAP::API>, and
|
||||
of course L<Perl>.
|
||||
|
||||
=cut
|
||||
954
mozilla/directory/perldap/constant.h
Normal file
954
mozilla/directory/perldap/constant.h
Normal file
@@ -0,0 +1,954 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* $Id: constant.h,v 1.7 1998-08-13 09:14:14 leif Exp $
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License
|
||||
* Version 1.0 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS"
|
||||
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing rights and limitations
|
||||
* under the License.
|
||||
*
|
||||
* The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
* Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
* created by Netscape are Copyright (C) Netscape Communications
|
||||
* Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
* Donley. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Constants.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#include "EXTERN.h"
|
||||
#include "perl.h"
|
||||
#include "XSUB.h"
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#include <ldap.h>
|
||||
|
||||
static int
|
||||
not_here(s)
|
||||
char *s;
|
||||
{
|
||||
croak("%s not implemented on this architecture", s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
double
|
||||
constant(name, arg)
|
||||
char *name;
|
||||
int arg;
|
||||
{
|
||||
errno = 0;
|
||||
if (name[0] == 'L' && name[1] == 'D' && name[2] == 'A' && name[3] == 'P'
|
||||
&& name[4] == '_')
|
||||
{
|
||||
switch (name[5]) {
|
||||
case 'A':
|
||||
if (strEQ(name, "LDAP_ADMINLIMIT_EXCEEDED"))
|
||||
#ifdef LDAP_ADMINLIMIT_EXCEEDED
|
||||
return LDAP_ADMINLIMIT_EXCEEDED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_AFFECTS_MULTIPLE_DSAS"))
|
||||
#ifdef LDAP_AFFECTS_MULTIPLE_DSAS
|
||||
return LDAP_AFFECTS_MULTIPLE_DSAS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_ALIAS_DEREF_PROBLEM"))
|
||||
#ifdef LDAP_ALIAS_DEREF_PROBLEM
|
||||
return LDAP_ALIAS_DEREF_PROBLEM;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_ALIAS_PROBLEM"))
|
||||
#ifdef LDAP_ALIAS_PROBLEM
|
||||
return LDAP_ALIAS_PROBLEM;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_ALREADY_EXISTS"))
|
||||
#ifdef LDAP_ALREADY_EXISTS
|
||||
return LDAP_ALREADY_EXISTS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_AUTH_METHOD_NOT_SUPPORTED"))
|
||||
#ifdef LDAP_AUTH_METHOD_NOT_SUPPORTED
|
||||
return LDAP_AUTH_METHOD_NOT_SUPPORTED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_AUTH_NONE"))
|
||||
#ifdef LDAP_AUTH_NONE
|
||||
return LDAP_AUTH_NONE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_AUTH_SASL"))
|
||||
#ifdef LDAP_AUTH_SASL
|
||||
return LDAP_AUTH_SASL;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_AUTH_SIMPLE"))
|
||||
#ifdef LDAP_AUTH_SIMPLE
|
||||
return LDAP_AUTH_SIMPLE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_AUTH_UNKNOWN"))
|
||||
#ifdef LDAP_AUTH_UNKNOWN
|
||||
return LDAP_AUTH_UNKNOWN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'B':
|
||||
if (strEQ(name, "LDAP_BUSY"))
|
||||
#ifdef LDAP_BUSY
|
||||
return LDAP_BUSY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'C':
|
||||
if (strEQ(name, "LDAP_CACHE_CHECK"))
|
||||
#ifdef LDAP_CACHE_CHECK
|
||||
return LDAP_CACHE_CHECK;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CACHE_LOCALDB"))
|
||||
#ifdef LDAP_CACHE_LOCALDB
|
||||
return LDAP_CACHE_LOCALDB;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CACHE_POPULATE"))
|
||||
#ifdef LDAP_CACHE_POPULATE
|
||||
return LDAP_CACHE_POPULATE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CHANGETYPE_ADD"))
|
||||
#ifdef LDAP_CHANGETYPE_ADD
|
||||
return LDAP_CHANGETYPE_ADD;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CHANGETYPE_ANY"))
|
||||
#ifdef LDAP_CHANGETYPE_ANY
|
||||
return LDAP_CHANGETYPE_ANY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CHANGETYPE_DELETE"))
|
||||
#ifdef LDAP_CHANGETYPE_DELETE
|
||||
return LDAP_CHANGETYPE_DELETE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CHANGETYPE_MODDN"))
|
||||
#ifdef LDAP_CHANGETYPE_MODDN
|
||||
return LDAP_CHANGETYPE_MODDN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CHANGETYPE_MODIFY"))
|
||||
#ifdef LDAP_CHANGETYPE_MODIFY
|
||||
return LDAP_CHANGETYPE_MODIFY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CLIENT_LOOP"))
|
||||
#ifdef LDAP_CLIENT_LOOP
|
||||
return LDAP_CLIENT_LOOP;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_COMPARE_FALSE"))
|
||||
#ifdef LDAP_COMPARE_FALSE
|
||||
return LDAP_COMPARE_FALSE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_COMPARE_TRUE"))
|
||||
#ifdef LDAP_COMPARE_TRUE
|
||||
return LDAP_COMPARE_TRUE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CONFIDENTIALITY_REQUIRED"))
|
||||
#ifdef LDAP_CONFIDENTIALITY_REQUIRED
|
||||
return LDAP_CONFIDENTIALITY_REQUIRED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CONNECT_ERROR"))
|
||||
#ifdef LDAP_CONNECT_ERROR
|
||||
return LDAP_CONNECT_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_CONSTRAINT_VIOLATION"))
|
||||
#ifdef LDAP_CONSTRAINT_VIOLATION
|
||||
return LDAP_CONSTRAINT_VIOLATION;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_DECODING_ERROR"))
|
||||
#ifdef LDAP_DECODING_ERROR
|
||||
return LDAP_DECODING_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'D':
|
||||
if (strEQ(name, "LDAP_DEREF_ALWAYS"))
|
||||
#ifdef LDAP_DEREF_ALWAYS
|
||||
return LDAP_DEREF_ALWAYS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_DEREF_FINDING"))
|
||||
#ifdef LDAP_DEREF_FINDING
|
||||
return LDAP_DEREF_FINDING;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_DEREF_NEVER"))
|
||||
#ifdef LDAP_DEREF_NEVER
|
||||
return LDAP_DEREF_NEVER;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_DEREF_SEARCHING"))
|
||||
#ifdef LDAP_DEREF_SEARCHING
|
||||
return LDAP_DEREF_SEARCHING;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'E':
|
||||
if (strEQ(name, "LDAP_ENCODING_ERROR"))
|
||||
#ifdef LDAP_ENCODING_ERROR
|
||||
return LDAP_ENCODING_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'F':
|
||||
if (strEQ(name, "LDAP_FILTER_ERROR"))
|
||||
#ifdef LDAP_FILTER_ERROR
|
||||
return LDAP_FILTER_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_FILT_MAXSIZ"))
|
||||
#ifdef LDAP_FILT_MAXSIZ
|
||||
return LDAP_FILT_MAXSIZ;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'I':
|
||||
if (strEQ(name, "LDAP_INAPPROPRIATE_AUTH"))
|
||||
#ifdef LDAP_INAPPROPRIATE_AUTH
|
||||
return LDAP_INAPPROPRIATE_AUTH;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_INAPPROPRIATE_MATCHING"))
|
||||
#ifdef LDAP_INAPPROPRIATE_MATCHING
|
||||
return LDAP_INAPPROPRIATE_MATCHING;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_INSUFFICIENT_ACCESS"))
|
||||
#ifdef LDAP_INSUFFICIENT_ACCESS
|
||||
return LDAP_INSUFFICIENT_ACCESS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_INVALID_CREDENTIALS"))
|
||||
#ifdef LDAP_INVALID_CREDENTIALS
|
||||
return LDAP_INVALID_CREDENTIALS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_INVALID_DN_SYNTAX"))
|
||||
#ifdef LDAP_INVALID_DN_SYNTAX
|
||||
return LDAP_INVALID_DN_SYNTAX;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_INVALID_SYNTAX"))
|
||||
#ifdef LDAP_INVALID_SYNTAX
|
||||
return LDAP_INVALID_SYNTAX;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_IS_LEAF"))
|
||||
#ifdef LDAP_IS_LEAF
|
||||
return LDAP_IS_LEAF;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'L':
|
||||
if (strEQ(name, "LDAP_LOCAL_ERROR"))
|
||||
#ifdef LDAP_LOCAL_ERROR
|
||||
return LDAP_LOCAL_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_LOOP_DETECT"))
|
||||
#ifdef LDAP_LOOP_DETECT
|
||||
return LDAP_LOOP_DETECT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'M':
|
||||
if (strEQ(name, "LDAP_MOD_ADD"))
|
||||
#ifdef LDAP_MOD_ADD
|
||||
return LDAP_MOD_ADD;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MOD_BVALUES"))
|
||||
#ifdef LDAP_MOD_BVALUES
|
||||
return LDAP_MOD_BVALUES;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MOD_DELETE"))
|
||||
#ifdef LDAP_MOD_DELETE
|
||||
return LDAP_MOD_DELETE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MOD_REPLACE"))
|
||||
#ifdef LDAP_MOD_REPLACE
|
||||
return LDAP_MOD_REPLACE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MORE_RESULTS_TO_RETURN"))
|
||||
#ifdef LDAP_MORE_RESULTS_TO_RETURN
|
||||
return LDAP_MORE_RESULTS_TO_RETURN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MSG_ALL"))
|
||||
#ifdef LDAP_MSG_ALL
|
||||
return LDAP_MSG_ALL;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MSG_ONE"))
|
||||
#ifdef LDAP_MSG_ONE
|
||||
return LDAP_MSG_ONE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_MSG_RECEIVED"))
|
||||
#ifdef LDAP_MSG_RECEIVED
|
||||
return LDAP_MSG_RECEIVED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'N':
|
||||
if (strEQ(name, "LDAP_NAMING_VIOLATION"))
|
||||
#ifdef LDAP_NAMING_VIOLATION
|
||||
return LDAP_NAMING_VIOLATION;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NOT_ALLOWED_ON_NONLEAF"))
|
||||
#ifdef LDAP_NOT_ALLOWED_ON_NONLEAF
|
||||
return LDAP_NOT_ALLOWED_ON_NONLEAF;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NOT_ALLOWED_ON_RDN"))
|
||||
#ifdef LDAP_NOT_ALLOWED_ON_RDN
|
||||
return LDAP_NOT_ALLOWED_ON_RDN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NOT_SUPPORTED"))
|
||||
#ifdef LDAP_NOT_SUPPORTED
|
||||
return LDAP_NOT_SUPPORTED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NO_LIMIT"))
|
||||
#ifdef LDAP_NO_LIMIT
|
||||
return LDAP_NO_LIMIT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NO_MEMORY"))
|
||||
#ifdef LDAP_NO_MEMORY
|
||||
return LDAP_NO_MEMORY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NO_OBJECT_CLASS_MODS"))
|
||||
#ifdef LDAP_NO_OBJECT_CLASS_MODS
|
||||
return LDAP_NO_OBJECT_CLASS_MODS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NO_RESULTS_RETURNED"))
|
||||
#ifdef LDAP_NO_RESULTS_RETURNED
|
||||
return LDAP_NO_RESULTS_RETURNED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NO_SUCH_ATTRIBUTE"))
|
||||
#ifdef LDAP_NO_SUCH_ATTRIBUTE
|
||||
return LDAP_NO_SUCH_ATTRIBUTE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_NO_SUCH_OBJECT"))
|
||||
#ifdef LDAP_NO_SUCH_OBJECT
|
||||
return LDAP_NO_SUCH_OBJECT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'O':
|
||||
if (strEQ(name, "LDAP_OBJECT_CLASS_VIOLATION"))
|
||||
#ifdef LDAP_OBJECT_CLASS_VIOLATION
|
||||
return LDAP_OBJECT_CLASS_VIOLATION;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPERATIONS_ERROR"))
|
||||
#ifdef LDAP_OPERATIONS_ERROR
|
||||
return LDAP_OPERATIONS_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_CACHE_ENABLE"))
|
||||
#ifdef LDAP_OPT_CACHE_ENABLE
|
||||
return LDAP_OPT_CACHE_ENABLE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_CACHE_FN_PTRS"))
|
||||
#ifdef LDAP_OPT_CACHE_FN_PTRS
|
||||
return LDAP_OPT_CACHE_FN_PTRS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_CACHE_STRATEGY"))
|
||||
#ifdef LDAP_OPT_CACHE_STRATEGY
|
||||
return LDAP_OPT_CACHE_STRATEGY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_CLIENT_CONTROLS"))
|
||||
#ifdef LDAP_OPT_CLIENT_CONTROLS
|
||||
return LDAP_OPT_CLIENT_CONTROLS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_DEREF"))
|
||||
#ifdef LDAP_OPT_DEREF
|
||||
return LDAP_OPT_DEREF;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_DESC"))
|
||||
#ifdef LDAP_OPT_DESC
|
||||
return LDAP_OPT_DESC;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_DNS"))
|
||||
#ifdef LDAP_OPT_DNS
|
||||
return LDAP_OPT_DNS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_DNS_FN_PTRS"))
|
||||
#ifdef LDAP_OPT_DNS_FN_PTRS
|
||||
return LDAP_OPT_DNS_FN_PTRS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_ERROR_NUMBER"))
|
||||
#ifdef LDAP_OPT_ERROR_NUMBER
|
||||
return LDAP_OPT_ERROR_NUMBER;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_ERROR_STRING"))
|
||||
#ifdef LDAP_OPT_ERROR_STRING
|
||||
return LDAP_OPT_ERROR_STRING;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_HOST_NAME"))
|
||||
#ifdef LDAP_OPT_HOST_NAME
|
||||
return LDAP_OPT_HOST_NAME;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_IO_FN_PTRS"))
|
||||
#ifdef LDAP_OPT_IO_FN_PTRS
|
||||
return LDAP_OPT_IO_FN_PTRS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_MEMALLOC_FN_PTRS"))
|
||||
#ifdef LDAP_OPT_MEMALLOC_FN_PTRS
|
||||
return LDAP_OPT_MEMALLOC_FN_PTRS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_PREFERRED_LANGUAGE"))
|
||||
#ifdef LDAP_OPT_PREFERRED_LANGUAGE
|
||||
return LDAP_OPT_PREFERRED_LANGUAGE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_PROTOCOL_VERSION"))
|
||||
#ifdef LDAP_OPT_PROTOCOL_VERSION
|
||||
return LDAP_OPT_PROTOCOL_VERSION;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_REBIND_ARG"))
|
||||
#ifdef LDAP_OPT_REBIND_ARG
|
||||
return LDAP_OPT_REBIND_ARG;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_REBIND_FN"))
|
||||
#ifdef LDAP_OPT_REBIND_FN
|
||||
return LDAP_OPT_REBIND_FN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_RECONNECT"))
|
||||
#ifdef LDAP_OPT_RECONNECT
|
||||
return LDAP_OPT_RECONNECT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_REFERRALS"))
|
||||
#ifdef LDAP_OPT_REFERRALS
|
||||
return LDAP_OPT_REFERRALS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_REFERRAL_HOP_LIMIT"))
|
||||
#ifdef LDAP_OPT_REFERRAL_HOP_LIMIT
|
||||
return LDAP_OPT_REFERRAL_HOP_LIMIT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_RESTART"))
|
||||
#ifdef LDAP_OPT_RESTART
|
||||
return LDAP_OPT_RESTART;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_RETURN_REFERRALS"))
|
||||
#ifdef LDAP_OPT_RETURN_REFERRALS
|
||||
return LDAP_OPT_RETURN_REFERRALS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_SERVER_CONTROLS"))
|
||||
#ifdef LDAP_OPT_SERVER_CONTROLS
|
||||
return LDAP_OPT_SERVER_CONTROLS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_SIZELIMIT"))
|
||||
#ifdef LDAP_OPT_SIZELIMIT
|
||||
return LDAP_OPT_SIZELIMIT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_SSL"))
|
||||
#ifdef LDAP_OPT_SSL
|
||||
return LDAP_OPT_SSL;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_THREAD_FN_PTRS"))
|
||||
#ifdef LDAP_OPT_THREAD_FN_PTRS
|
||||
return LDAP_OPT_THREAD_FN_PTRS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OPT_TIMELIMIT"))
|
||||
#ifdef LDAP_OPT_TIMELIMIT
|
||||
return LDAP_OPT_TIMELIMIT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_OTHER"))
|
||||
#ifdef LDAP_OTHER
|
||||
return LDAP_OTHER;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'P':
|
||||
if (strEQ(name, "LDAP_PARAM_ERROR"))
|
||||
#ifdef LDAP_PARAM_ERROR
|
||||
return LDAP_PARAM_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_PARTIAL_RESULTS"))
|
||||
#ifdef LDAP_PARTIAL_RESULTS
|
||||
return LDAP_PARTIAL_RESULTS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_PORT"))
|
||||
#ifdef LDAP_PORT
|
||||
return LDAP_PORT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_PORT_MAX"))
|
||||
#ifdef LDAP_PORT_MAX
|
||||
return LDAP_PORT_MAX;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_PROTOCOL_ERROR"))
|
||||
#ifdef LDAP_PROTOCOL_ERROR
|
||||
return LDAP_PROTOCOL_ERROR;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'R':
|
||||
if (strEQ(name, "LDAP_REFERRAL"))
|
||||
#ifdef LDAP_REFERRAL
|
||||
return LDAP_REFERRAL;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_REFERRAL_LIMIT_EXCEEDED"))
|
||||
#ifdef LDAP_REFERRAL_LIMIT_EXCEEDED
|
||||
return LDAP_REFERRAL_LIMIT_EXCEEDED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RESULTS_TOO_LARGE"))
|
||||
#ifdef LDAP_RESULTS_TOO_LARGE
|
||||
return LDAP_RESULTS_TOO_LARGE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_ADD"))
|
||||
#ifdef LDAP_RES_ADD
|
||||
return LDAP_RES_ADD;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_ANY"))
|
||||
#ifdef LDAP_RES_ANY
|
||||
return LDAP_RES_ANY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_BIND"))
|
||||
#ifdef LDAP_RES_BIND
|
||||
return LDAP_RES_BIND;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_COMPARE"))
|
||||
#ifdef LDAP_RES_COMPARE
|
||||
return LDAP_RES_COMPARE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_DELETE"))
|
||||
#ifdef LDAP_RES_DELETE
|
||||
return LDAP_RES_DELETE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_EXTENDED"))
|
||||
#ifdef LDAP_RES_EXTENDED
|
||||
return LDAP_RES_EXTENDED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_MODIFY"))
|
||||
#ifdef LDAP_RES_MODIFY
|
||||
return LDAP_RES_MODIFY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_MODRDN"))
|
||||
#ifdef LDAP_RES_MODRDN
|
||||
return LDAP_RES_MODRDN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_RENAME"))
|
||||
#ifdef LDAP_RES_RENAME
|
||||
return LDAP_RES_RENAME;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_SEARCH_ENTRY"))
|
||||
#ifdef LDAP_RES_SEARCH_ENTRY
|
||||
return LDAP_RES_SEARCH_ENTRY;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_SEARCH_REFERENCE"))
|
||||
#ifdef LDAP_RES_SEARCH_REFERENCE
|
||||
return LDAP_RES_SEARCH_REFERENCE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_RES_SEARCH_RESULT"))
|
||||
#ifdef LDAP_RES_SEARCH_RESULT
|
||||
return LDAP_RES_SEARCH_RESULT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'S':
|
||||
if (strEQ(name, "LDAP_SASL_BIND_IN_PROGRESS"))
|
||||
#ifdef LDAP_SASL_BIND_IN_PROGRESS
|
||||
return LDAP_SASL_BIND_IN_PROGRESS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SASL_SIMPLE"))
|
||||
#ifdef LDAP_SASL_SIMPLE
|
||||
return LDAP_SASL_SIMPLE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SCOPE_BASE"))
|
||||
#ifdef LDAP_SCOPE_BASE
|
||||
return LDAP_SCOPE_BASE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SCOPE_ONELEVEL"))
|
||||
#ifdef LDAP_SCOPE_ONELEVEL
|
||||
return LDAP_SCOPE_ONELEVEL;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SCOPE_SUBTREE"))
|
||||
#ifdef LDAP_SCOPE_SUBTREE
|
||||
return LDAP_SCOPE_SUBTREE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SECURITY_NONE"))
|
||||
#ifdef LDAP_SECURITY_NONE
|
||||
return LDAP_SECURITY_NONE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SERVER_DOWN"))
|
||||
#ifdef LDAP_SERVER_DOWN
|
||||
return LDAP_SERVER_DOWN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SIZELIMIT_EXCEEDED"))
|
||||
#ifdef LDAP_SIZELIMIT_EXCEEDED
|
||||
return LDAP_SIZELIMIT_EXCEEDED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SORT_CONTROL_MISSING"))
|
||||
#ifdef LDAP_SORT_CONTROL_MISSING
|
||||
return LDAP_SORT_CONTROL_MISSING;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_STRONG_AUTH_NOT_SUPPORTED"))
|
||||
#ifdef LDAP_STRONG_AUTH_NOT_SUPPORTED
|
||||
return LDAP_STRONG_AUTH_NOT_SUPPORTED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_STRONG_AUTH_REQUIRED"))
|
||||
#ifdef LDAP_STRONG_AUTH_REQUIRED
|
||||
return LDAP_STRONG_AUTH_REQUIRED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_SUCCESS"))
|
||||
#ifdef LDAP_SUCCESS
|
||||
return LDAP_SUCCESS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'T':
|
||||
if (strEQ(name, "LDAP_TIMELIMIT_EXCEEDED"))
|
||||
#ifdef LDAP_TIMELIMIT_EXCEEDED
|
||||
return LDAP_TIMELIMIT_EXCEEDED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_TIMEOUT"))
|
||||
#ifdef LDAP_TIMEOUT
|
||||
return LDAP_TIMEOUT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_TYPE_OR_VALUE_EXISTS"))
|
||||
#ifdef LDAP_TYPE_OR_VALUE_EXISTS
|
||||
return LDAP_TYPE_OR_VALUE_EXISTS;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'U':
|
||||
if (strEQ(name, "LDAP_UNAVAILABLE"))
|
||||
#ifdef LDAP_UNAVAILABLE
|
||||
return LDAP_UNAVAILABLE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_UNAVAILABLE_CRITICAL_EXTENSION"))
|
||||
#ifdef LDAP_UNAVAILABLE_CRITICAL_EXTENSION
|
||||
return LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_UNDEFINED_TYPE"))
|
||||
#ifdef LDAP_UNDEFINED_TYPE
|
||||
return LDAP_UNDEFINED_TYPE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_UNWILLING_TO_PERFORM"))
|
||||
#ifdef LDAP_UNWILLING_TO_PERFORM
|
||||
return LDAP_UNWILLING_TO_PERFORM;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_URL_ERR_BADSCOPE"))
|
||||
#ifdef LDAP_URL_ERR_BADSCOPE
|
||||
return LDAP_URL_ERR_BADSCOPE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_URL_ERR_MEM"))
|
||||
#ifdef LDAP_URL_ERR_MEM
|
||||
return LDAP_URL_ERR_MEM;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_URL_ERR_NODN"))
|
||||
#ifdef LDAP_URL_ERR_NODN
|
||||
return LDAP_URL_ERR_NODN;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_URL_ERR_NOTLDAP"))
|
||||
#ifdef LDAP_URL_ERR_NOTLDAP
|
||||
return LDAP_URL_ERR_NOTLDAP;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_URL_ERR_PARAM"))
|
||||
#ifdef LDAP_URL_ERR_PARAM
|
||||
return LDAP_URL_ERR_PARAM;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_URL_OPT_SECURE"))
|
||||
#ifdef LDAP_URL_OPT_SECURE
|
||||
return LDAP_URL_OPT_SECURE;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_USER_CANCELLED"))
|
||||
#ifdef LDAP_USER_CANCELLED
|
||||
return LDAP_USER_CANCELLED;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
case 'V':
|
||||
if (strEQ(name, "LDAP_VERSION"))
|
||||
#ifdef LDAP_VERSION
|
||||
return LDAP_VERSION;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_VERSION1"))
|
||||
#ifdef LDAP_VERSION1
|
||||
return LDAP_VERSION1;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_VERSION2"))
|
||||
#ifdef LDAP_VERSION2
|
||||
return LDAP_VERSION2;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_VERSION3"))
|
||||
#ifdef LDAP_VERSION3
|
||||
return LDAP_VERSION3;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
if (strEQ(name, "LDAP_VERSION_MAX"))
|
||||
#ifdef LDAP_VERSION_MAX
|
||||
return LDAP_VERSION_MAX;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (strEQ(name, "LDAPS_PORT"))
|
||||
#ifdef LDAPS_PORT
|
||||
return LDAPS_PORT;
|
||||
#else
|
||||
goto not_there;
|
||||
#endif
|
||||
}
|
||||
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
|
||||
not_there:
|
||||
errno = ENOENT;
|
||||
return 0;
|
||||
}
|
||||
35
mozilla/directory/perldap/examples/ChangeLog
Normal file
35
mozilla/directory/perldap/examples/ChangeLog
Normal file
@@ -0,0 +1,35 @@
|
||||
1999-06-30 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* rmentry.pl: Added support for "-p".
|
||||
|
||||
1999-01-05 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* psoftsync.pl (delAttr): Fixed annoying bug where I missed to
|
||||
"my" $entry.
|
||||
|
||||
1999-01-04 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* modattr.pl: Bug fixes for handling bad cases better (like
|
||||
missing attribute, adding empty values etc).
|
||||
|
||||
1998-12-11 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* modattr.pl: Modified slightly to enable the rebind proc.
|
||||
|
||||
1998-08-03 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* psoftsync.pl: New file, also merged in some modules from
|
||||
LdapUtils.pm, to make sure this works. NOTE: This script currently
|
||||
doesn't work, since all "modify" operations are horked.
|
||||
|
||||
1998-07-30 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* tabdump.pl: Actually works!
|
||||
|
||||
* ldappasswd.pl: Cleaned out some code, and moved it over to the
|
||||
::Utils module.
|
||||
|
||||
1998-07-29 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* qsearch.pl: First working version.
|
||||
|
||||
118
mozilla/directory/perldap/examples/changes2ldif.pl
Executable file
118
mozilla/directory/perldap/examples/changes2ldif.pl
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: changes2ldif.pl,v 1.2 1999-01-21 23:52:46 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Search the changelog, and produce an LDIF file suitable for ldapmodify
|
||||
# for instance. This should be merged into LDIF.pm eventually.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
use strict;
|
||||
no strict "vars";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "changes2ldif";
|
||||
$USAGE = "$APPNAM [-nv] -b base -h host -D bind -w pswd -P cert [min [max]]";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('nvb:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
$ld{root} = "cn=changelog" if (!defined($ld{root}) || $ld{root} eq "");
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Instantiate an LDAP object, which also binds to the LDAP server.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Create the search filter.
|
||||
#
|
||||
$min = $ARGV[$[];
|
||||
$max = $ARGV[$[ + 1];
|
||||
|
||||
if ($min ne "")
|
||||
{
|
||||
if ($max ne "")
|
||||
{
|
||||
$search = "(&(changenumber>=$min)(changenumber<=$max))";
|
||||
}
|
||||
else
|
||||
{
|
||||
$search = "(changenumber>=$min)";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$search = "(changenumber=*)";
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Do the searches, and print the results.
|
||||
#
|
||||
$entry = $conn->search($ld{root}, "ONE", "$search");
|
||||
while ($entry)
|
||||
{
|
||||
print "dn: ", $entry->{targetdn}[0], "\n";
|
||||
$type = $entry->{changetype}[0];
|
||||
print "changetype: $type\n";
|
||||
if ($type =~ /modify/i)
|
||||
{
|
||||
# Should we filter out modifiersname and modifytimestamp ? We do chop
|
||||
# off the trailing \0 though.
|
||||
chop($entry->{changes}[0]);
|
||||
print $entry->{changes}[0], "\n";
|
||||
}
|
||||
elsif ($type =~ /add/i)
|
||||
{
|
||||
print $entry->{changes}[0], "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "\n";
|
||||
}
|
||||
|
||||
$entry = $conn->nextEntry;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$ld{conn}->close if $ld{conn};
|
||||
104
mozilla/directory/perldap/examples/ldappasswd.pl
Executable file
104
mozilla/directory/perldap/examples/ldappasswd.pl
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: ldappasswd.pl,v 1.6 1998-08-13 09:13:23 leif Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# This is an LDAP version of the normal passwd/yppasswd command found
|
||||
# on most Unix systems. Note that this will only use the {crypt}
|
||||
# encryption/hash algorithm (at this point).
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "ldappasswd";
|
||||
$USAGE = "$APPNAM [-nv] -b base -h host -D bind -w pswd -P cert search ...";
|
||||
|
||||
@ATTRIBUTES = ("uid", "userpassword");
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('nvb:s:h:D:w:P:')) {
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
Mozilla::LDAP::Utils::userCredentials(\%ld) unless $opt_n;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Ask for the new password, and confirm it's correct.
|
||||
#
|
||||
do
|
||||
{
|
||||
print "New password: ";
|
||||
$new = Mozilla::LDAP::Utils::askPassword();
|
||||
print "New password (again): ";
|
||||
$new2 = Mozilla::LDAP::Utils::askPassword();
|
||||
print "Passwords didn't match, try again!\n\n" if ($new ne $new2);
|
||||
} until ($new eq $new2);
|
||||
print "\n";
|
||||
|
||||
$crypted = Mozilla::LDAP::Utils::unixCrypt("$new");
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Now do all the searches, one by one. If there are no search criteria, we
|
||||
# will change the password for the user running the script.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
foreach $search ($#ARGV >= $[ ? @ARGV : $ld{bind})
|
||||
{
|
||||
$entry = $conn->search($search, "subtree", "ALL", 0, @ATTRIBUTES);
|
||||
$entry = $conn->search($ld{root}, "subtree", $search, 0, @ATTRIBUTES)
|
||||
unless $entry;
|
||||
print "No such user: $search\n" unless $entry;
|
||||
|
||||
while ($entry)
|
||||
{
|
||||
$entry->{userpassword} = ["{crypt}" . $crypted];
|
||||
print "Changing password for: $entry->{dn}\n" if $opt_v;
|
||||
|
||||
if (!$opt_n)
|
||||
{
|
||||
$conn->update($entry);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
}
|
||||
|
||||
$entry = $conn->nextEntry();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
128
mozilla/directory/perldap/examples/lfinger.pl
Executable file
128
mozilla/directory/perldap/examples/lfinger.pl
Executable file
@@ -0,0 +1,128 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: lfinger.pl,v 1.10 1998-08-13 09:13:08 leif Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# "finger" version using LDAP information (using RFC 2307 objectclass).
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Constants, shouldn't have to edit these... The HIDE mechanism is a very
|
||||
# Netscape internal specific feature. We use this objectclass to mark some
|
||||
# entries to be "hidden", and some of our applications will honor this. With
|
||||
# more recent versions of the Directory Server this can be accomplished more
|
||||
# effectively with appropriate ACI/ACLs.
|
||||
#
|
||||
$APPNAM = "lfinger";
|
||||
$USAGE = "$APPNAM -m -b base -h host -D bind -w pswd -P cert user_info";
|
||||
|
||||
@ATTRIBUTES = ("uid", "cn", "homedirectory", "loginshell", "pager",
|
||||
"telephonenumber", "facsimiletelephonenumber", "mobile");
|
||||
$HIDE = "(objectclass=nscphidethis)";
|
||||
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Print a "finger" entry.
|
||||
#
|
||||
sub printIt
|
||||
{
|
||||
my($entry) = @_;
|
||||
|
||||
print "Login name: $entry->{uid}[0]";
|
||||
print " " x (39 - 11 - length($entry->{uid}[0]));
|
||||
print "In real life: $entry->{cn}[0]\n";
|
||||
if ($entry->{homedirectory}[0] || $entry->{loginshell}[0])
|
||||
{
|
||||
print "Directory: $entry->{homedirectory}[0]";
|
||||
print " " x (39 - 10 - length($entry->{homedirectory}[0]));
|
||||
print "Shell: $entry->{loginshell}[0]\n";
|
||||
}
|
||||
|
||||
if ($entry->{telephonenumber}[0] || $entry->{pager}[0])
|
||||
{
|
||||
print "Phone: $entry->{telephonenumber}[0]";
|
||||
print " " x (39 - 6 - length($entry->{telephonenumber}[0]));
|
||||
print "Pager: $entry->{pager}[0]\n";
|
||||
}
|
||||
|
||||
if ($entry->{mobile}[0] || $entry->{facsimiletelephonenumber}[0])
|
||||
{
|
||||
print "Mobile: $entry->{mobile}[0]";
|
||||
print " " x (39 - 7 - length($entry->{mobile}[0]));
|
||||
print "Fax: $entry->{facsimiletelephonenumber}[0]\n";
|
||||
}
|
||||
|
||||
print "\n";
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('mb:h:D:p:w:P:') || !defined($ARGV[$[]))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
$user=$ARGV[$[];
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Instantiate an LDAP object, which also binds to the LDAP server.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Ok, lets generate the filter, and do the search!
|
||||
#
|
||||
if ($opt_m)
|
||||
{
|
||||
$search = "(&(uid=$user)(!$HIDE))";
|
||||
}
|
||||
else
|
||||
{
|
||||
$search = "(&(|(cn=*$user*)(uid=*$user*)(telephonenumber=*$user*))(!$HIDE))";
|
||||
}
|
||||
|
||||
$entry = $conn->search($ld{root}, "subtree", $search, 0, @ATTRIBUTES);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
|
||||
while($entry)
|
||||
{
|
||||
printIt($entry);
|
||||
$entry = $conn->nextEntry();
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
331
mozilla/directory/perldap/examples/modattr.pl
Executable file
331
mozilla/directory/perldap/examples/modattr.pl
Executable file
@@ -0,0 +1,331 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: modattr.pl,v 1.8 1999-01-21 23:52:46 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# This script can be used to do a number of different modification
|
||||
# operations on a script. Like adding/deleting values, or entire
|
||||
# attributes.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
use strict;
|
||||
no strict "vars";
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "modattr";
|
||||
$USAGE = "$APPNAM [-dnvW] -b base -h host -D bind -w pswd -P cert attr=value filter";
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('adnvWb:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
Mozilla::LDAP::Utils::userCredentials(\%ld) unless $opt_n;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Let's process the changes requested, and commit them unless the "-n"
|
||||
# option was given.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
$conn->setDefaultRebindProc($ld{bind}, $ld{pswd});
|
||||
|
||||
($change, $search) = @ARGV;
|
||||
if (($change eq "") || ($search eq ""))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
($attr, $value) = split(/=/, $change, 2);
|
||||
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, $search);
|
||||
while ($entry)
|
||||
{
|
||||
$changed = 0;
|
||||
|
||||
if ($opt_d)
|
||||
{
|
||||
if (defined $entry->{$attr})
|
||||
{
|
||||
if ($value)
|
||||
{
|
||||
$changed = $entry->removeValue($attr, $value);
|
||||
if ($changed && $opt_v)
|
||||
{
|
||||
print "Removed value from ", $entry->getDN(), "\n" if $opt_v;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
delete $entry->{$attr};
|
||||
print "Deleted attribute $attr for ", $entry->getDN(), "\n" if $opt_v;
|
||||
$changed = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print "No attribute values for: $attr\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!defined($value) || !$value)
|
||||
{
|
||||
print "No value provided for the attribute $attr\n";
|
||||
}
|
||||
elsif ($opt_a)
|
||||
{
|
||||
$changed = $entry->addValue($attr, $value);
|
||||
if ($changed && $opt_v)
|
||||
{
|
||||
print "Added attribute to ", $entry->getDN(), "\n" if $opt_v;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$entry->setValue($attr, $value);
|
||||
$changed = 1;
|
||||
print "Set attribute for ", $entry->getDN(), "\n" if $opt_v;
|
||||
}
|
||||
}
|
||||
if ($changed && ! $opt_n)
|
||||
{
|
||||
$conn->update($entry);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
}
|
||||
|
||||
$entry = $conn->nextEntry();
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# POD documentation...
|
||||
#
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
modattr - Modify an attribute for one or more LDAP entries
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
modattr [-adnvW] -b base -h host -D bind DN -w pwd -P cert attr=value filter
|
||||
|
||||
=head1 ABSTRACT
|
||||
|
||||
This command line utility can be used to modify one attribute for one or
|
||||
more LDAP entries. As simple as this sounds, this turns out to be a very
|
||||
common operation. For instance, let's say you want to change "mailHost"
|
||||
for all users on a machine named I<dredd>, to be I<judge>. With this
|
||||
script all you have to do is
|
||||
|
||||
modattr mailHost=judge '(mailHost=dredd)'
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
There are four primary operations that can be made with this utility:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Set an attribute to a (single) specified value.
|
||||
|
||||
=item *
|
||||
|
||||
Add a value to an attribute (for multi-value attributes).
|
||||
|
||||
=item *
|
||||
|
||||
Delete a value from an attribute. If it's the last value (or if it's a
|
||||
single value), this will remove the entire attribute.
|
||||
|
||||
=item *
|
||||
|
||||
Delete an entire attribute, even if it has multiple values.
|
||||
|
||||
=back
|
||||
|
||||
The first three requires an option of the form B<attr=value>, while the
|
||||
last one only takes the name of the attribute as the option. The last
|
||||
argument is always an LDAP search filter, specifying which entries the
|
||||
operation should be applied to.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
All but the first two command line options for this tool are standard LDAP
|
||||
options, to set parameters for the LDAP connection. The two new options
|
||||
are I<-a> and I<-d> to add and remove attribute values.
|
||||
|
||||
Without either of these two options specified (they are both optional),
|
||||
the default action is to set the attribute to the specified value. That
|
||||
will effectively remove any existing values for this attribute.
|
||||
|
||||
=over 12
|
||||
|
||||
=item -a
|
||||
|
||||
Specify that the operation is an I<add>, to add a value to the
|
||||
attribute. If there is no existing value for this attribute, we'll create
|
||||
a new attribute, otherwise we add the new value if it's not already there.
|
||||
|
||||
=item -d
|
||||
|
||||
Delete the attribute value, or the entire attribute if there's no value
|
||||
specified. As you can see this option has two forms, and it's function
|
||||
depends on the last arguments. Be careful here, if you forget to specify
|
||||
the value to delete, you will remove all of them.
|
||||
|
||||
=item -h <host>
|
||||
|
||||
Name of the LDAP server to connect to.
|
||||
|
||||
=item -p <port>
|
||||
|
||||
TCP port for the LDAP connection.
|
||||
|
||||
=item -b <DN>
|
||||
|
||||
Base DN for the search
|
||||
|
||||
=item -D <bind>
|
||||
|
||||
User (DN) to bind as. We support a few convenience shortcuts here, like
|
||||
I<root>, I<user> and I<repl>.
|
||||
|
||||
=item -w <passwd>
|
||||
|
||||
This specifies the password to use when connecting to the LDAP
|
||||
server. This is strongly discouraged, and without this option the script
|
||||
will ask for the password interactively.
|
||||
|
||||
=item -s <scope>
|
||||
|
||||
Search scope, default is I<sub>, the other possible values are I<base> and
|
||||
I<one>. You can also specify the numeric scopes, I<0>, I<1> or I<2>.
|
||||
|
||||
=item -P
|
||||
|
||||
Use SSL for the LDAP connection, using the specified cert.db file for
|
||||
certificate information.
|
||||
|
||||
=item -n
|
||||
|
||||
Don't do anything, only show the changes that would have been made. This
|
||||
is very convenient, and can save you from embarrassing mistakes.
|
||||
|
||||
=item -v
|
||||
|
||||
Verbose output.
|
||||
|
||||
=back
|
||||
|
||||
The last two arguments are special for this script. The first
|
||||
argument specifies the attribute (and possibly the value) to operate on,
|
||||
and the last argument is a properly formed LDAP search filter.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
We'll give one example for each of the four operations this script can
|
||||
currently handle. Since the script itself is quite flexible, you'll
|
||||
probably find you can use this script for a lot of other applications, or
|
||||
call it from other scripts. Note that we don't specify any LDAP specific
|
||||
options here, we assume you have configured your defaults properly.
|
||||
|
||||
To set the I<description> attribute for user "leif", you would do
|
||||
|
||||
modattr 'description=Company Swede' '(uid=leif)'
|
||||
|
||||
The examples shows how to use this command without either of the I<-a> or
|
||||
the I<-d> argument. To add an e-mail alias (alternate address) to the same
|
||||
user, you would do
|
||||
|
||||
modattr -a 'mailAlternateAddress=theSwede@netscape.com' '(uid=leif)'
|
||||
|
||||
To remove an object class from all entries which uses it, you could do
|
||||
|
||||
modattr -d 'objectclass=dummyClass' '(objectclass=dummyClass)'
|
||||
|
||||
This example is not great, since unless you've assured that no entries
|
||||
uses any of the attributes in this class, you'll get schema
|
||||
violations. But don't despair, you can use this tool to clean up all
|
||||
entries first! To completely remove all usage of an attribute named
|
||||
I<dummyAttr>, you'd simply do
|
||||
|
||||
modattr -d dummyAttr '(dummyAttr=*)'
|
||||
|
||||
This shows the final format of this command, notice how we don't specify a
|
||||
value, to assure that the entire attribute is removed. This is potentially
|
||||
dangerous, so again be careful.
|
||||
|
||||
=head1 INSTALLATION
|
||||
|
||||
In order to use this script, you'll need Perl version 5.004 or later, the
|
||||
LDAP SDK, and also the LDAP Perl module (aka PerLDAP). Once you've installed
|
||||
these packages, just copy this file to where you keep your admin binaries,
|
||||
e.g. /usr/local/bin.
|
||||
|
||||
In order to get good performance, you should make sure you have indexes on
|
||||
the attributes you typically use with this script. Our experience has been
|
||||
that in most cases the standard indexes in the Directory Server are
|
||||
sufficient, e.g. I<CN>, I<UID> and I<MAIL>.
|
||||
|
||||
=head1 AVAILABILITY
|
||||
|
||||
This package can be retrieved from a number of places, including:
|
||||
|
||||
http://www.mozilla.org/directory/
|
||||
Your local CPAN server
|
||||
|
||||
=head1 CREDITS
|
||||
|
||||
This little tool was developed internally at Netscape, by Leif Hedstrom.
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
None, of course...
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Mozilla::LDAP::API> and L<Perl>
|
||||
|
||||
=cut
|
||||
67
mozilla/directory/perldap/examples/monitor.pl
Executable file
67
mozilla/directory/perldap/examples/monitor.pl
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: monitor.pl,v 1.2 1998-08-13 09:12:05 leif Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Ask the directory server for it's monitor entry, to see some
|
||||
# performance and usage stats.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "monitor";
|
||||
$USAGE = "$APPNAM [-nv] -b base -h host -D bind -w pswd -P cert";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('b:h:D:p:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs("", "cn=monitor");
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Instantiate an LDAP object, which also binds to the LDAP server, and then
|
||||
# do the simple search.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
$entry = $conn->search($ld{root}, "base", "objectclass=*");
|
||||
Mozilla::LDAP::Utils::printEntry($entry)
|
||||
if ($entry);
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
615
mozilla/directory/perldap/examples/psoftsync.pl
Executable file
615
mozilla/directory/perldap/examples/psoftsync.pl
Executable file
@@ -0,0 +1,615 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: psoftsync.pl,v 1.5 1999-01-21 23:52:47 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Synchronise some LDAP info with a PeopleSoft "dump". This "dump" file
|
||||
# is a "tab" separated file, as generated by an SQL utility on the
|
||||
# Oracle server.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Local configurations, check these out . Note that SYNCS and ORDER has to
|
||||
# have the same fields, this is because the hash array doesn't preserve
|
||||
# the order of it's entries... :-( The "codes" are bit fields, where the
|
||||
# three LSB are used as
|
||||
#
|
||||
# 1 Force the update, even if attribute is empty (i.e. delete it)
|
||||
# 2 The attribute is the base for a DN (e.g. "manager").
|
||||
# 4 The attribute should be deleted if the user is not in PeopleSoft.
|
||||
# 8 Don't warn if the attribute is missing in the Psoft file (-W option).
|
||||
# 16 Always delete this attribute in the PeopleSoft entry.
|
||||
# 32 Delete this attribute if the account has "expired".
|
||||
#
|
||||
%SYNCS = (
|
||||
"nscpharold" => 1 + 4,
|
||||
"uid" => 0,
|
||||
"" => 0,
|
||||
"" => 0,
|
||||
"employeenumber" => 1 + 4 + 32,
|
||||
"departmentnumber" => 1 + 4,
|
||||
"" => 0,
|
||||
"" => 0,
|
||||
"" => 0,
|
||||
"manager" => 1 + 2,
|
||||
"title" => 1 + 4 + 16 + 32,
|
||||
"ou" => 1 + 4 + 32,
|
||||
"businesscategory" => 1 + 4 + 32,
|
||||
"employeetype" => 0,
|
||||
"nscppersonexpdate" => 1 + 8
|
||||
);
|
||||
|
||||
@ORDER = (
|
||||
"nscpharold",
|
||||
"uid",
|
||||
"",
|
||||
"",
|
||||
"employeenumber",
|
||||
"departmentnumber",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"manager",
|
||||
"title",
|
||||
"ou",
|
||||
"businesscategory",
|
||||
"employeetype",
|
||||
"nscppersonexpdate"
|
||||
);
|
||||
|
||||
# This is used for mapping the employeeType attribute into a readable format.
|
||||
%EMPCODES = (
|
||||
"A" => "Applicant",
|
||||
"C" => "Contractor",
|
||||
"E" => "Employee",
|
||||
"O" => "OEM Partner",
|
||||
"T" => "Interim",
|
||||
"V" => "Vendor"
|
||||
);
|
||||
|
||||
# Expiration policy for other attributes, the EXPDELAY is a convenience
|
||||
# default setting.
|
||||
$EXPDELAY = 24 * 7;
|
||||
%EXPIRES = (
|
||||
"carlicense" => $EXPDELAY,
|
||||
"mailautoreplymode" => $EXPDELAY,
|
||||
"mailautoreplytext" => $EXPDELAY,
|
||||
"mailforwardingaddress" => $EXPDELAY,
|
||||
"facsimiletelephonenumber" => $EXPDELAY
|
||||
);
|
||||
|
||||
|
||||
$NOTYPE = "Unknown";
|
||||
$DELIMITER = "%%";
|
||||
$SENDMAIL = "/usr/lib/sendmail";
|
||||
|
||||
$SEARCH = "(&(uid=*)(!(objectclass=pseudoAccount)))";
|
||||
$MAILTO = "leif\@netscape.com";
|
||||
|
||||
#$LDAP_DEBUG = 1;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "psoftsync";
|
||||
$USAGE = "$APPNAM [-nvW] -b base -h host -D bind -w passwd -P cert PS_file";
|
||||
|
||||
@ATTRIBUTES = uniq(@ORDER);
|
||||
push(@ATTRIBUTES, "objectclass");
|
||||
|
||||
$TODAY = `/usr/bin/date '+%Y%m%d'`;
|
||||
chop($TODAY);
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Print an error for the PeopleSoft data. Note that we use the "__XXX__" fields
|
||||
# here, to avoid the problem when an attribute is "expired" or modified.
|
||||
#
|
||||
sub psoftError
|
||||
{
|
||||
my ($str, $entry) = @_;
|
||||
|
||||
print "Error: $str: ";
|
||||
print $entry->key(), " (";
|
||||
print $entry->{__employeenumber__}, ", ";
|
||||
print $entry->{__employeetype__}, ", ";
|
||||
print $entry->{__departmentnumber__}, ")\n";
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Read in a PeopleSoft file, and create all the entries.
|
||||
#
|
||||
sub readDump
|
||||
{
|
||||
my ($file) = @_;
|
||||
my (@info, %entries);
|
||||
my $val;
|
||||
|
||||
if (!open(PSOFT, $file))
|
||||
{
|
||||
print "Error: Can't read file $file\n";
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while (<PSOFT>)
|
||||
{
|
||||
next unless /$DELIMITER/;
|
||||
|
||||
@info = split(/\s*%%\s*/);
|
||||
$entry = new PsoftEntry($info[$[]);
|
||||
foreach $attr (@ORDER)
|
||||
{
|
||||
$val = shift(@info);
|
||||
next if ($attr eq "");
|
||||
|
||||
$entry->add($attr, $val, $SYNCS{$attr});
|
||||
}
|
||||
#
|
||||
# Perhaps we should do some sanity checks here on the PeopleSoft data?
|
||||
#
|
||||
|
||||
# Clean up some data if the user has expired ("best before...")
|
||||
if ($entry->expired($entry->{nscppersonexpdate}))
|
||||
{
|
||||
foreach $attr (@ORDER)
|
||||
{
|
||||
next unless $attr;
|
||||
|
||||
delete($entry->{$attr}) if ($SYNCS{$attr} & 32);
|
||||
}
|
||||
}
|
||||
|
||||
if ($entry->{uid})
|
||||
{
|
||||
$entries{$entry->{uid}} = $entry;
|
||||
}
|
||||
elsif ($opt_W)
|
||||
{
|
||||
psoftError("No UID", $entry);
|
||||
}
|
||||
}
|
||||
close(PSOFT);
|
||||
|
||||
return %entries;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Make a list "uniq", just like the Unix command.
|
||||
#
|
||||
sub uniq { # uniq(elements[])
|
||||
my %tmp;
|
||||
|
||||
grep($tmp{$_}++, @_);
|
||||
return sort(keys(%tmp));
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Delete an attribute from an entry.
|
||||
#
|
||||
sub delAttr { # delAttr(ENTRY, ATTR)
|
||||
my ($entry, $attr) = @_;
|
||||
|
||||
if (defined($entry->{$attr}))
|
||||
{
|
||||
$out->write("Deleted $attr for user: $entry->{uid}[0]") if $opt_v;
|
||||
delete($entry->{$attr});
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('nvMWb:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
Mozilla::LDAP::Utils::userCredentials(\%ld) unless $opt_n;
|
||||
|
||||
$out = new Mail();
|
||||
if ($opt_M)
|
||||
{
|
||||
$out->set("to", $MAILTO);
|
||||
$out->set("subject", "Hoth: PeopleSoft synchronization report");
|
||||
}
|
||||
else
|
||||
{
|
||||
$out->echo();
|
||||
$out->nomail();
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Read in all the PeopleSoft entries, and then instantiate an LDAP object,
|
||||
# which also binds to the LDAP server.
|
||||
#
|
||||
%psoft = readDump(@ARGV[$[]);
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Now process all the users, one by one.
|
||||
#
|
||||
$entry = $conn->search($ld{root}, "subtree", $SEARCH, 0, @ATTRIBUTES);
|
||||
|
||||
while ($entry)
|
||||
{
|
||||
$uid = $entry->{"uid"}[0];
|
||||
$changed = 0;
|
||||
|
||||
$psent = $psoft{$uid};
|
||||
if (!$psent)
|
||||
{
|
||||
print "Error: LDAP user $uid: No entry in PeopleSoft\n" if $opt_W;
|
||||
foreach $attr (@ORDER)
|
||||
{
|
||||
next unless $attr;
|
||||
$changed += delAttr($entry, $attr) if ($SYNCS{$attr} & 4);
|
||||
}
|
||||
if ($entry->{employeetype}[0] ne "$NOTYPE")
|
||||
{
|
||||
$entry->{employeetype} = ["$NOTYPE"];
|
||||
$changed = 1;
|
||||
$out->write("Set employeeType to $NOTYPE for user: $uid") if $opt_v;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$psent->handled(1);
|
||||
foreach $attr (@ORDER)
|
||||
{
|
||||
next unless $attr;
|
||||
|
||||
if (!defined($psent->{$attr}) || ($psent->{$attr} eq ""))
|
||||
{
|
||||
$changed += delAttr($entry, $attr) if ($SYNCS{$attr} & 1);
|
||||
}
|
||||
elsif ($entry->{$attr}[0] ne $psent->{$attr})
|
||||
{
|
||||
$entry->{$attr} = [$psent->{$attr}];
|
||||
$changed = 1;
|
||||
$out->write("Set $attr to $psent->{$attr} for user: $uid") if $opt_v;
|
||||
}
|
||||
}
|
||||
# Now handle the Expire date special case...
|
||||
if ($psent->expired() ne "")
|
||||
{
|
||||
if ($entry->addValue("objectclass", "nscphidethis"))
|
||||
{
|
||||
$changed = 1;
|
||||
$out->write("Expiring the user: $uid") if $opt_v;
|
||||
}
|
||||
|
||||
# Expire other attributes, IFF the expire is over a certain
|
||||
# treshhold (e.g. a week).
|
||||
}
|
||||
elsif ($entry->removeValue("objectclass", "nscphidethis"))
|
||||
{
|
||||
$changed = 1;
|
||||
$out->write("Enabling the user: $uid") if $opt_v;
|
||||
}
|
||||
}
|
||||
|
||||
$conn->update($entry) if ($changed && ! $opt_n);
|
||||
$entry = $conn->nextEntry();
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Close the LDAP connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Post process, figure out which PSoft entries have no entry in LDAP.
|
||||
#
|
||||
if ($opt_W)
|
||||
{
|
||||
foreach (keys(%psoft))
|
||||
{
|
||||
$ent=$psoft{$_};
|
||||
|
||||
psoftError("No LDAP entry", $ent) unless $ent->handled();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Package to an entry from the PeopleSoft database.
|
||||
#
|
||||
package PsoftEntry;
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Creator.
|
||||
#
|
||||
sub new
|
||||
{
|
||||
my ($class, $key) = @_;
|
||||
my $self = {};
|
||||
|
||||
bless $self, ref $class || $class;
|
||||
$self->{__key__} = $key;
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Add an attribute/field to the entry.
|
||||
#
|
||||
sub add
|
||||
{
|
||||
my ($self, $attr, $val, $lev) = @_;
|
||||
|
||||
return if ($lev & 16);
|
||||
|
||||
$attr = lc $attr;
|
||||
if ($attr eq "employeetype")
|
||||
{
|
||||
if (defined($main::EMPCODES{$val}))
|
||||
{
|
||||
$self->{$attr} = $main::EMPCODES{$val};
|
||||
}
|
||||
else
|
||||
{
|
||||
$self->{$attr} = $main::NOTYPE;
|
||||
}
|
||||
$self->{__employeetype__} = $val;
|
||||
}
|
||||
elsif (!defined($val) || ($val eq ""))
|
||||
{
|
||||
main::psoftError("No attribute $attr", $self)
|
||||
if ($main::opt_W && ($lev & 1) && !($lev & 8));
|
||||
}
|
||||
else
|
||||
{
|
||||
$self->{$attr} = ($lev & 2) ? "uid=$val,$main::ld{root}" : $val;
|
||||
$self->{"__${attr}__"} = $val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Return the value for an attribute/field.
|
||||
#
|
||||
sub get
|
||||
{
|
||||
my ($self, $attr) = @_;
|
||||
|
||||
return $self->{$attr};
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Mark the entry as "expired". If there is no "date" argument, we'll return
|
||||
# the current entries expire status.
|
||||
#
|
||||
sub expired
|
||||
{
|
||||
my ($self, $date) = @_;
|
||||
|
||||
if ($date)
|
||||
{
|
||||
# Only expire entries with reasonable expire dates...
|
||||
if (length($date) != 8)
|
||||
{
|
||||
main::psoftError("Bad expire date", $self) if $main::opt_W;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ($date lt $main::TODAY)
|
||||
{
|
||||
$self->{employeetype} = "$main::NOTYPE";
|
||||
$self->{__expired__} = 1;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return $self->{__expired__};
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Mark the entry as "handled", i.e. it exists in LDAP.
|
||||
#
|
||||
sub handled
|
||||
{
|
||||
my ($self, $flag) = @_;
|
||||
|
||||
$self->{__handled__} = 1 if $flag;
|
||||
|
||||
return $self->{__handled__};
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Return the "key" of this entry, typically the name field.
|
||||
#
|
||||
sub key
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
return $self->{__key__};
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# This sub-package will send mail to some recipients, IFF there is anything to
|
||||
# send, or your force it to send. Note that the Subject doesn't qualify it to
|
||||
# send a message (force it to send if you have to).
|
||||
#
|
||||
package Mail;
|
||||
|
||||
|
||||
#################################################################################
|
||||
# The constructor, which optionally takes the TO, FROM and SUBJECT.
|
||||
#
|
||||
sub new
|
||||
{
|
||||
my ($class, $to, $from, $subject) = @_;
|
||||
my $self = {};
|
||||
|
||||
bless $self, ref $class || $class;
|
||||
|
||||
$self->{to} = $to || "root";
|
||||
$self->{from} = $from || "ldap";
|
||||
$self->{subject} = $subject || "Output from LDAP script\n";
|
||||
@{$self->{message}} = ();
|
||||
$self->{send} = 0;
|
||||
$self->{nomail} = 0;
|
||||
$self->{echo} = 0;
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Destructor, which will also send the message, if appropriate.
|
||||
#
|
||||
sub DESTROY
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
if ($self->{send} && !$self->{nomail})
|
||||
{
|
||||
$self->send();
|
||||
$self->{send} = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Set a field for this entry, e.g. From:, To: etc.
|
||||
#
|
||||
sub set
|
||||
{
|
||||
my ($self, $field, $string) = @_;
|
||||
|
||||
if ($field && $string)
|
||||
{
|
||||
$field = lc $field;
|
||||
$self->{$field} = $string;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Add a line to the message, the argument is the string.
|
||||
#
|
||||
sub write
|
||||
{
|
||||
my ($self, $string) = @_;
|
||||
|
||||
if ($string ne "")
|
||||
{
|
||||
push(@{$self->{message}}, $string);
|
||||
print "$string\n" if $self->{echo};
|
||||
|
||||
$self->{send}++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Force the object to send the message, no matter if there's anything in the
|
||||
# body or not.
|
||||
#
|
||||
sub force
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
$self->{send} = 1;
|
||||
$self->{nomail} = 0;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Don't send the mail, this is the oppositte to "force...
|
||||
#
|
||||
sub nomail
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
$self->{send} = 0;
|
||||
$self->{nomail} = 1;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Enable echo-mode, where we will also print everything to STDOUT.
|
||||
#
|
||||
sub echo
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
$self->{echo} = 1;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Actually send the message. This is automatically done by the DESTROY method,
|
||||
# but we can force it to do it this way.
|
||||
#
|
||||
sub send
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
if ($self->{send} && !$self->{nomail})
|
||||
{
|
||||
open(MAILER, "|$main::SENDMAIL -t");
|
||||
print MAILER "From: $self->{from}\n";
|
||||
print MAILER "To: $self->{to}\n";
|
||||
print MAILER "Subject: $self->{subject}\n\n";
|
||||
|
||||
foreach (@{$self->{message}})
|
||||
{
|
||||
print MAILER "$_\n";
|
||||
}
|
||||
print MAILER ".\n";
|
||||
|
||||
close(MAILER);
|
||||
$self->{send} = 0;
|
||||
}
|
||||
}
|
||||
98
mozilla/directory/perldap/examples/qsearch.pl
Executable file
98
mozilla/directory/perldap/examples/qsearch.pl
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: qsearch.pl,v 1.8 1999-01-21 23:52:47 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Quick Search, like ldapsearch, but in Perl. Look how simple it is.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
use strict;
|
||||
no strict "vars";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "qsearch";
|
||||
$USAGE = "$APPNAM -b base -h host -D bind -w pswd -P cert filter [attr...]";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('b:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Now do all the searches, one by one.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
foreach (@ARGV)
|
||||
{
|
||||
if (/\=/)
|
||||
{
|
||||
push(@srch, $_);
|
||||
}
|
||||
else
|
||||
{
|
||||
push(@attr, $_);
|
||||
}
|
||||
}
|
||||
|
||||
foreach $search (@srch)
|
||||
{
|
||||
if ($#attr >= $[)
|
||||
{
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, $search, 0, @attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, "$search");
|
||||
}
|
||||
|
||||
print "Searched for `$search':\n\n";
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
|
||||
while ($entry)
|
||||
{
|
||||
$entry->printLDIF();
|
||||
$entry = $conn->nextEntry;
|
||||
}
|
||||
print "\n";
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
135
mozilla/directory/perldap/examples/rand_mods.pl
Executable file
135
mozilla/directory/perldap/examples/rand_mods.pl
Executable file
@@ -0,0 +1,135 @@
|
||||
#!/usr/bin/perl5
|
||||
#################################################################################
|
||||
# $Id: rand_mods.pl,v 1.2 1999-08-24 22:30:51 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License Version
|
||||
# 1.0 (the "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
# the specific language governing rights and limitations under the License.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape Communications
|
||||
# Corporation. Portions created by Netscape are Copyright (C) 1998 Netscape
|
||||
# Communications Corporation. All Rights Reserved.
|
||||
#
|
||||
# SYNOPSIS:
|
||||
# Modify an attribute for one or more entries, or possibly delete it.
|
||||
#
|
||||
# USAGE:
|
||||
# rand_mods [-adnvW] -b base -h host -D bind DN -w pwd -P cert filter loops
|
||||
# attribute ...
|
||||
#
|
||||
#################################################################################
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Modules we need. Note that we depend heavily on the Ldapp module,
|
||||
# which needs to be built from the C code. It also requires an LDAP SDK.
|
||||
#
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
use Carp;
|
||||
|
||||
use strict;
|
||||
no strict "vars";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "rand_mods";
|
||||
$USAGE = "$APPNAM [-dnvW] -b base -h host -D bind -w pswd filter loops attr ...";
|
||||
$AUTHOR = "Leif Hedstrom <leif\@netscape.com>";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('adnvWb:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Instantiate an LDAP object, which also binds to the LDAP server.
|
||||
#
|
||||
if (!getopts('b:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
croak "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Parse some extra argumens
|
||||
#
|
||||
my $srch, $loop;
|
||||
my (@attrs) = ("givenName", "sn");
|
||||
|
||||
if (! ($srch = shift(@ARGV)))
|
||||
{
|
||||
print "Usage: $APPNAME $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
$srch = "(&(!(objectclass=nscpHideThis))(uid=*))" if ($srch eq "");
|
||||
|
||||
if (! ($loops = shift(@ARGV)))
|
||||
{
|
||||
print "Usage: $APPNAME $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
@attrs = @ARGV if ($#ARGV > $[);
|
||||
$num_attrs = $#attrs;
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Find all the argument
|
||||
#
|
||||
my $num = 0;
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, $srch, 0, ("0.0"));
|
||||
while ($entry)
|
||||
{
|
||||
push(@users, $entry->getDN());
|
||||
$num++;
|
||||
$entry = $conn->nextEntry();
|
||||
}
|
||||
|
||||
print "Found $num users, randomizing changes now...\n";
|
||||
|
||||
srand(time ^ $$);
|
||||
|
||||
my $tmp, $tmp2, $dn, $loop2;
|
||||
while ($loops--)
|
||||
{
|
||||
$dn = $users[rand($num)];
|
||||
|
||||
print "$loops loops left...\n" if (($loops % 100) == 0);
|
||||
$entry = $conn->browse($dn, @attrs);
|
||||
|
||||
if ($entry)
|
||||
{
|
||||
$loop2 = $num_attrs + 1;
|
||||
while ($loop2--)
|
||||
{
|
||||
$tmp = $entry->{$attrs[$loop2]}[0];
|
||||
$tmp2 = rand($num_attrs);
|
||||
|
||||
$entry->{$attrs[$loop2]} = [ $entry->{$attrs[$tmp2]}[0] ];
|
||||
$entry->{$attrs[$tmp2]} = [ $tmp] ;
|
||||
|
||||
$entry->printLDIF();
|
||||
}
|
||||
|
||||
$conn->update($entry);
|
||||
}
|
||||
}
|
||||
98
mozilla/directory/perldap/examples/rename.pl
Executable file
98
mozilla/directory/perldap/examples/rename.pl
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: rename.pl,v 1.4 1999-01-21 23:52:47 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Rename an LDAP entry, changing it's DN. Note that currently this only
|
||||
# works with RDNs.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "rename";
|
||||
$USAGE = "$APPNAM [-nvI] -b base -h host -D bind -w pswd -P cert filter new_rdn";
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('nvIb:h:D:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
Mozilla::LDAP::Utils::userCredentials(\%ld) unless $opt_n;
|
||||
|
||||
($search, $rdn) = @ARGV;
|
||||
if (($search eq "") || ($rdn eq ""))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
# Instantiate an LDAP object, which also binds to the LDAP server.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
$key = "Y" if $opt_I;
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, $search, 0, @ATTRIBUTES);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
|
||||
if (! $entry || $conn->nextEntry())
|
||||
{
|
||||
print "Error: The search did not return exactly one match, abort!\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
if (! $opt_I)
|
||||
{
|
||||
print "Rename ", $entry->getDN(), " with $rdn [N]? ";
|
||||
$key = Mozilla::LDAP::Utils::answer("N") unless $opt_I;
|
||||
}
|
||||
|
||||
if ($key eq "Y")
|
||||
{
|
||||
# Note: I have to explicitly specify the original DN below, since the call
|
||||
# to nextEntry() above blows the DN away from the ::Conn object.
|
||||
if (! $opt_n)
|
||||
{
|
||||
$conn->modifyRDN($rdn, $entry->getDN());
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
}
|
||||
print "Renamed $entry->{dn}\n" if $opt_v;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
95
mozilla/directory/perldap/examples/rmentry.pl
Executable file
95
mozilla/directory/perldap/examples/rmentry.pl
Executable file
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: rmentry.pl,v 1.5 1999-08-24 22:30:51 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Remove one or several LDAP objects. By default this tool is
|
||||
# interactive, which can be disabled with the "-I" option (but
|
||||
# please be careful...).
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "rmentry";
|
||||
$USAGE = "$APPNAM [-nvI] -b base -h host -p port -D bind -w pswd" .
|
||||
"-P cert filter ...";
|
||||
|
||||
@ATTRIBUTES = ("uid");
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('nvIb:h:p:D:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
Mozilla::LDAP::Utils::userCredentials(\%ld) unless $opt_n;
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Do the search, and process all the entries.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
$key = "Y" if $opt_I;
|
||||
foreach $search (@ARGV)
|
||||
{
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, $search, 0, @ATTRIBUTES);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
|
||||
while ($entry)
|
||||
{
|
||||
if (! $opt_I)
|
||||
{
|
||||
print "Delete $entry->{dn} [N]? ";
|
||||
$key = Mozilla::LDAP::Utils::answer("N") unless $opt_I;
|
||||
}
|
||||
|
||||
if ($key eq "Y")
|
||||
{
|
||||
if (! $opt_n)
|
||||
{
|
||||
$conn->delete($entry);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
}
|
||||
print "Deleted $entry->{dn}\n" if $opt_v;
|
||||
}
|
||||
|
||||
$entry = $conn->nextEntry();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
81
mozilla/directory/perldap/examples/tabdump.pl
Executable file
81
mozilla/directory/perldap/examples/tabdump.pl
Executable file
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: tabdump.pl,v 1.3 1998-08-13 09:11:10 leif Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Generate a TAB separate "dump" of entries matching the search criteria,
|
||||
# using the list of attributes specified.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "tabdump";
|
||||
$USAGE = "$APPNAM [-nv] -b base -h host -D bind -w pswd -P cert attr1,attr2,.. srch";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('nvb:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs();
|
||||
|
||||
$attributes = $ARGV[$[];
|
||||
$search = $ARGV[$[ + 1];
|
||||
die "Need to specify a list of attributes and the search filter.\n"
|
||||
unless ($attributes && $search);
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Do the searches, and produce the output.
|
||||
#
|
||||
$conn = new Mozilla::LDAP::Conn(\%ld);
|
||||
die "Could't connect to LDAP server $ld{host}" unless $conn;
|
||||
|
||||
@attr = split(/,/, $attributes);
|
||||
$entry = $conn->search($ld{root}, $ld{scope}, $search, 0, @attr);
|
||||
$conn->printError() if $conn->getErrorCode();
|
||||
|
||||
while ($entry)
|
||||
{
|
||||
foreach (@attr)
|
||||
{
|
||||
print $entry->{$_}[0], "\t";
|
||||
}
|
||||
print "\n";
|
||||
$entry = $conn->nextEntry;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Close the connection.
|
||||
#
|
||||
$conn->close if $conn;
|
||||
162
mozilla/directory/perldap/oldtest.pl
Normal file
162
mozilla/directory/perldap/oldtest.pl
Normal file
@@ -0,0 +1,162 @@
|
||||
#############################################################################
|
||||
# $Id: oldtest.pl,v 1.2 1999-08-24 22:30:48 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Before `make install' is performed this script should be runnable with
|
||||
# `make test'. After `make install' it should work as `perl test.pl'
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
######################### We start with some black magic to print on failure.
|
||||
|
||||
# Change 1..1 below to 1..last_test_to_print .
|
||||
# (It may become useful if the test is moved to ./t subdirectory.)
|
||||
|
||||
BEGIN { $| = 1; print "1..8\n"; }
|
||||
END {print "modinit - not ok\n" unless $loaded;}
|
||||
use Mozilla::LDAP::API qw(:constant :api :ssl);
|
||||
$loaded = 1;
|
||||
print "modinit - ok\n";
|
||||
|
||||
######################### End of black magic.
|
||||
|
||||
|
||||
$attrs = [];
|
||||
|
||||
$ldap_host = $ENV{"LDAPHOST"};
|
||||
$filter = $ENV{"TESTFILTER"};
|
||||
$BASEDN = $ENV{"LDAPBASE"};
|
||||
|
||||
if (!$ldap_host)
|
||||
{
|
||||
print "\nEnter LDAP Server: ";
|
||||
chomp($ldap_host = <>);
|
||||
}
|
||||
|
||||
if (!$filter)
|
||||
{
|
||||
print "Enter Search Filter (ex. uid=abc123): ";
|
||||
chomp($filter = <>);
|
||||
}
|
||||
|
||||
if (!$BASEDN)
|
||||
{
|
||||
print "Enter LDAP Search Base (ex. o=Org, c=US): ";
|
||||
chomp($BASEDN = <>);
|
||||
}
|
||||
|
||||
print "\n";
|
||||
|
||||
|
||||
##
|
||||
## Initialize LDAP Connection
|
||||
##
|
||||
|
||||
if (($ld = ldap_init($ldap_host,LDAP_PORT)) == -1)
|
||||
{
|
||||
print "open - not ok\n";
|
||||
exit -1;
|
||||
}
|
||||
print "open - ok\n";
|
||||
|
||||
##
|
||||
## Bind as DN, PASSWORD (NULL,NULL) on LDAP connection $ld
|
||||
##
|
||||
|
||||
if (ldap_simple_bind_s($ld,"","") != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"bind_s");
|
||||
print "bind - not ok\n";
|
||||
exit -1;
|
||||
}
|
||||
print "bind - ok\n";
|
||||
|
||||
##
|
||||
## ldap_search_s - Synchronous Search
|
||||
##
|
||||
|
||||
if (ldap_search_s($ld,$BASEDN,LDAP_SCOPE_SUBTREE,$filter,$attrs,0,$result) != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"search_s");
|
||||
print "search - not ok\n";
|
||||
}
|
||||
print "search - ok\n";
|
||||
|
||||
##
|
||||
## ldap_count_entries - Count Matched Entries
|
||||
##
|
||||
|
||||
if (($count = ldap_count_entries($ld,$result)) == -1)
|
||||
{
|
||||
ldap_perror($ld,"count_entry");
|
||||
print "count - not ok\n";
|
||||
}
|
||||
print "count - ok - $count\n";
|
||||
|
||||
##
|
||||
## first_entry - Get First Matched Entry
|
||||
## next_entry - Get Next Matched Entry
|
||||
##
|
||||
|
||||
for ($ent = ldap_first_entry($ld,$result); $ent; $ent = ldap_next_entry($ld,$ent))
|
||||
{
|
||||
|
||||
##
|
||||
## ldap_get_dn - Get DN for Matched Entries
|
||||
##
|
||||
|
||||
if (($dn = ldap_get_dn($ld,$ent)) ne "")
|
||||
{
|
||||
print "getdn - ok - $dn\n";
|
||||
} else {
|
||||
ldap_perror($ld,"get_dn");
|
||||
print "getdn - not ok\n";
|
||||
}
|
||||
|
||||
for ($attr = ldap_first_attribute($ld,$ent,$ber); $attr; $attr = ldap_next_attribute($ld,$ent,$ber))
|
||||
{
|
||||
print "firstatt - ok - $attr\n";
|
||||
|
||||
##
|
||||
## ldap_get_values
|
||||
##
|
||||
|
||||
@vals = ldap_get_values($ld,$ent,$attr);
|
||||
if ($#vals >= 0)
|
||||
{
|
||||
foreach $val (@vals)
|
||||
{
|
||||
print "getvals - ok - $val\n";
|
||||
}
|
||||
} else {
|
||||
print "getvals - not ok\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
##
|
||||
## Unbind LDAP Connection
|
||||
##
|
||||
|
||||
ldap_unbind($ld);
|
||||
|
||||
14
mozilla/directory/perldap/t/ChangeLog
Normal file
14
mozilla/directory/perldap/t/ChangeLog
Normal file
@@ -0,0 +1,14 @@
|
||||
1999-08-06 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* conn.pl: Added support for browse() and compare().
|
||||
|
||||
1999-03-19 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* conn.pl: Added test for add() with a hash array.
|
||||
|
||||
1999-01-05 Leif Hedstrom <leif@netscape.com>
|
||||
|
||||
* entry.pl: New script, to test all Entry:: methods.
|
||||
|
||||
* conn.pl: Added test for modifyRDN().
|
||||
|
||||
4
mozilla/directory/perldap/t/api.t
Normal file
4
mozilla/directory/perldap/t/api.t
Normal file
@@ -0,0 +1,4 @@
|
||||
print "This is not a real test, yet...\n";
|
||||
print "1..1\n";
|
||||
|
||||
print "ok 1\n";
|
||||
BIN
mozilla/directory/perldap/t/conn.pl
Executable file
BIN
mozilla/directory/perldap/t/conn.pl
Executable file
Binary file not shown.
4
mozilla/directory/perldap/t/conn.t
Normal file
4
mozilla/directory/perldap/t/conn.t
Normal file
@@ -0,0 +1,4 @@
|
||||
print "This is not a real test, yet...\n";
|
||||
print "1..1\n";
|
||||
|
||||
print "ok 1\n";
|
||||
150
mozilla/directory/perldap/t/entry.pl
Executable file
150
mozilla/directory/perldap/t/entry.pl
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/usr/bin/perl5
|
||||
#############################################################################
|
||||
# $Id: entry.pl,v 1.2 1999-01-21 23:52:50 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Test most (all?) of the LDAP::Mozilla::Conn methods.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Getopt::Std; # To parse command line arguments.
|
||||
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
|
||||
use Mozilla::LDAP::Utils; # LULU, utilities.
|
||||
use Mozilla::LDAP::API;
|
||||
|
||||
use strict;
|
||||
no strict "vars";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Configurations, modify these as needed.
|
||||
#
|
||||
$BIND = "uid=ldapadmin";
|
||||
$BASE = "o=Netscape Communications Corp.,c=US";
|
||||
$PEOPLE = "ou=people";
|
||||
$GROUPS = "ou=groups";
|
||||
$UID = "leif-test";
|
||||
$CN = "test-group-1";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Constants, shouldn't have to edit these...
|
||||
#
|
||||
$APPNAM = "entry.pl";
|
||||
$USAGE = "$APPNAM -b base -h host -D bind -w pswd -P cert";
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Check arguments, and configure some parameters accordingly..
|
||||
#
|
||||
if (!getopts('b:h:D:p:s:w:P:'))
|
||||
{
|
||||
print "usage: $APPNAM $USAGE\n";
|
||||
exit;
|
||||
}
|
||||
%ld = Mozilla::LDAP::Utils::ldapArgs($BIND, $BASE);
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Get an LDAP connection
|
||||
#
|
||||
sub getConn
|
||||
{
|
||||
my $conn;
|
||||
|
||||
if ($main::reuseConn)
|
||||
{
|
||||
if (!defined($main::mainConn))
|
||||
{
|
||||
$main::mainConn = new Mozilla::LDAP::Conn(\%main::ld);
|
||||
die "Could't connect to LDAP server $main::ld{host}"
|
||||
unless $main::mainConn;
|
||||
}
|
||||
return $main::mainConn;
|
||||
}
|
||||
else
|
||||
{
|
||||
$conn = new Mozilla::LDAP::Conn(\%main::ld);
|
||||
die "Could't connect to LDAP server $main::ld{host}" unless $conn;
|
||||
}
|
||||
|
||||
return $conn;
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Some small help functions...
|
||||
#
|
||||
sub dotPrint
|
||||
{
|
||||
my $str = shift;
|
||||
|
||||
print $str . '.' x (20 - length($str));
|
||||
}
|
||||
|
||||
sub attributeEQ
|
||||
{
|
||||
my @a, @b;
|
||||
my $i;
|
||||
|
||||
@a = @{$_[0]};
|
||||
@b = @{$_[1]};
|
||||
return 1 if (($#a < 0) && ($#b < 0));
|
||||
return 0 unless ($#a == $#b);
|
||||
|
||||
@a = sort(@a);
|
||||
@b = sort(@b);
|
||||
for ($i = 0; $i <= $#a; $i++)
|
||||
{
|
||||
return 0 unless ($a[$i] eq $b[$i]);;
|
||||
}
|
||||
|
||||
return 1; # We passed all the tests, we're ok.
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Setup the test entries.
|
||||
#
|
||||
$filter = "(uid=$UID)";
|
||||
$conn = getConn();
|
||||
$nentry = $conn->newEntry();
|
||||
|
||||
$nentry->setDN("uid=$UID, $PEOPLE, $BASE");
|
||||
$nentry->{objectclass} = [ "top", "person", "inetOrgPerson", "mailRecipient" ];
|
||||
$nentry->addValue("uid", $UID);
|
||||
$nentry->addValue("sn", "Hedstrom");
|
||||
$nentry->addValue("givenName", "Leif");
|
||||
$nentry->addValue("cn", "Leif Hedstrom");
|
||||
$nentry->addValue("cn", "Leif P. Hedstrom");
|
||||
$nentry->addValue("cn", "The Swede");
|
||||
$nentry->addValue("description", "Test1");
|
||||
$nentry->addValue("description", "Test2");
|
||||
$nentry->addValue("description", "Test3");
|
||||
$nentry->addValue("description", "Test4");
|
||||
$nentry->addValue("description", "Test5");
|
||||
$nentry->addValue("mail", "leif\@ogre.com");
|
||||
|
||||
$ent = $conn->search($ld{root}, $ld{scope}, $filter);
|
||||
$conn->delete($ent->getDN()) if $ent;
|
||||
$conn->add($nentry);
|
||||
|
||||
$conn->close();
|
||||
4
mozilla/directory/perldap/t/entry.t
Normal file
4
mozilla/directory/perldap/t/entry.t
Normal file
@@ -0,0 +1,4 @@
|
||||
print "This is not a real test, yet...\n";
|
||||
print "1..1\n";
|
||||
|
||||
print "ok 1\n";
|
||||
4
mozilla/directory/perldap/t/ldif.t
Normal file
4
mozilla/directory/perldap/t/ldif.t
Normal file
@@ -0,0 +1,4 @@
|
||||
print "This is not a real test, yet...\n";
|
||||
print "1..1\n";
|
||||
|
||||
print "ok 1\n";
|
||||
4
mozilla/directory/perldap/t/utils.t
Normal file
4
mozilla/directory/perldap/t/utils.t
Normal file
@@ -0,0 +1,4 @@
|
||||
print "This is not a real test, yet...\n";
|
||||
print "1..1\n";
|
||||
|
||||
print "ok 1\n";
|
||||
280
mozilla/directory/perldap/test_api/api.pl
Executable file
280
mozilla/directory/perldap/test_api/api.pl
Executable file
@@ -0,0 +1,280 @@
|
||||
#!/usr/bin/perl -w
|
||||
#############################################################################
|
||||
# $Id: api.pl,v 1.7 1999-01-21 23:52:52 leif%netscape.com Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# api.pl - Test all LDAPv2 API function
|
||||
# Author: Clayton Donley <donley@wwa.com>
|
||||
#
|
||||
# Performs all API calls directly in order to test for possible issues
|
||||
# on a particular platform.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Mozilla::LDAP::API qw(:api :constant);
|
||||
use strict;
|
||||
|
||||
my $BASE = "ou=Test,o=Test,c=US";
|
||||
my $DN = "cn=Directory Manager";
|
||||
my $PASS = "abcd1234";
|
||||
my $HOST = "";
|
||||
my $PORT = 389;
|
||||
|
||||
if (!$HOST)
|
||||
{
|
||||
print "Please edit the variables at the top of this file.\n";
|
||||
exit -1;
|
||||
}
|
||||
|
||||
print "\nPerLDAP API TestSuite\n";
|
||||
print "\nNote: Failures in earlier tests will cause later tests to fail.\n";
|
||||
print "\n";
|
||||
|
||||
my $howmany = 10;
|
||||
|
||||
# Initialize the Connection
|
||||
{
|
||||
my $ld = ldap_init($HOST,$PORT);
|
||||
if ($ld <0)
|
||||
{
|
||||
print "init - Failed!\n";
|
||||
die;
|
||||
}
|
||||
print "init - OK\n";
|
||||
|
||||
# Set an LDAP Session Option
|
||||
if (ldap_set_option($ld,LDAP_OPT_PROTOCOL_VERSION,LDAP_VERSION3)
|
||||
!= LDAP_SUCCESS)
|
||||
{
|
||||
print "set_option - Failed!\n";
|
||||
} else {
|
||||
print "set_option - OK\n";
|
||||
}
|
||||
|
||||
# Get an LDAP Session Option
|
||||
my $option;
|
||||
ldap_get_option($ld,LDAP_OPT_REFERRALS,$option);
|
||||
|
||||
if ($option != 1)
|
||||
{
|
||||
print "get_option - Failed!\n";
|
||||
} else {
|
||||
print "get_option - OK\n";
|
||||
}
|
||||
|
||||
# Anonymous Bind
|
||||
if (ldap_simple_bind_s($ld,"","") != LDAP_SUCCESS)
|
||||
{
|
||||
print "anon_bind - Failed!\n";
|
||||
} else {
|
||||
print "anon_bind - OK\n";
|
||||
}
|
||||
|
||||
# Authenticated Simple Bind
|
||||
if (ldap_simple_bind_s($ld,$DN,$PASS) != LDAP_SUCCESS)
|
||||
{
|
||||
print "simple_bind - Failed!\n";
|
||||
} else {
|
||||
print "simple_bind - OK\n";
|
||||
}
|
||||
|
||||
# Set Rebind Process
|
||||
my $rebindproc = sub { return($DN,$PASS,LDAP_AUTH_SIMPLE); };
|
||||
ldap_set_rebind_proc($ld,$rebindproc);
|
||||
print "set_rebind - OK\n";
|
||||
|
||||
# Add an OrgUnit Entry
|
||||
my $entry = {
|
||||
"objectclass" => ["top","organizationalUnit"],
|
||||
"ou" => "Test",
|
||||
};
|
||||
|
||||
if (ldap_add_s($ld,$BASE,$entry) != LDAP_SUCCESS)
|
||||
{
|
||||
print "add_org - Failed!\n";
|
||||
} else {
|
||||
print "add_org - OK\n";
|
||||
}
|
||||
|
||||
|
||||
# Add People
|
||||
foreach my $number (1..$howmany)
|
||||
{
|
||||
$entry = {
|
||||
"objectclass" => ["top","person"],
|
||||
"cn" => "Mozilla $number",
|
||||
"sn" => ["$number"],
|
||||
};
|
||||
if (ldap_add_s($ld,"cn=Mozilla $number,$BASE",$entry)
|
||||
!= LDAP_SUCCESS)
|
||||
{
|
||||
print "add_user_$number - Failed!\n";
|
||||
} else {
|
||||
print "add_user_$number - OK\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Modify People
|
||||
foreach my $number (1..$howmany)
|
||||
{
|
||||
$entry = {
|
||||
"sn" => {"ab",["Test"]},
|
||||
"telephoneNumber" => {"ab",[123.456]},
|
||||
# "telephoneNumber" => "800-555-111$number",
|
||||
};
|
||||
if (ldap_modify_s($ld,"cn=Mozilla $number,$BASE",$entry)
|
||||
!= LDAP_SUCCESS)
|
||||
{
|
||||
print "mod_user_$number - Failed!\n";
|
||||
} else {
|
||||
print "mod_user_$number - OK\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Search People
|
||||
my $filter = "(sn=Test)";
|
||||
my $attrs = ["cn","sn"];
|
||||
my $res;
|
||||
if (ldap_search_s($ld,$BASE,LDAP_SCOPE_SUBTREE,$filter,$attrs,0,$res)
|
||||
!= LDAP_SUCCESS)
|
||||
{
|
||||
print "search_user - Failed!\n";
|
||||
} else {
|
||||
print "search_user - OK\n";
|
||||
}
|
||||
|
||||
# Count Results
|
||||
if (ldap_count_entries($ld,$res) != $howmany)
|
||||
{
|
||||
print "count_res - Failed!\n";
|
||||
} else {
|
||||
print "count_res - OK\n";
|
||||
}
|
||||
|
||||
# Sort Results
|
||||
if (ldap_sort_entries($ld,$res,"sn") != LDAP_SUCCESS)
|
||||
{
|
||||
print "sort_ent - Failed!\n";
|
||||
} else {
|
||||
print "sort_ent - OK\n";
|
||||
}
|
||||
|
||||
# Multisort Results
|
||||
if (ldap_multisort_entries($ld,$res,["sn","telephoneNumber"]) != LDAP_SUCCESS)
|
||||
{
|
||||
print "multisort - Failed!\n";
|
||||
} else {
|
||||
print "multisort - OK\n";
|
||||
}
|
||||
|
||||
# Get First Entry
|
||||
my $ent = ldap_first_entry($ld,$res);
|
||||
if (!$ent)
|
||||
{
|
||||
print "first_entry - Failed!\n";
|
||||
} else {
|
||||
print "first_entry - OK\n";
|
||||
}
|
||||
|
||||
# Get Next Entry
|
||||
$ent = ldap_next_entry($ld,$ent);
|
||||
if (!$ent)
|
||||
{
|
||||
print "next_entry - Failed!\n";
|
||||
} else {
|
||||
print "next_entry - OK\n";
|
||||
}
|
||||
|
||||
# Get DN
|
||||
my $dn = ldap_get_dn($ld,$ent);
|
||||
if (!$dn)
|
||||
{
|
||||
print "get_dn - Failed!\n";
|
||||
} else {
|
||||
print "get_dn - OK\n";
|
||||
}
|
||||
|
||||
# Get First Attribute
|
||||
my $ber;
|
||||
my $attr = ldap_first_attribute($ld,$ent,$ber);
|
||||
if (!$attr)
|
||||
{
|
||||
print "first_attr - Failed!\n";
|
||||
} else {
|
||||
print "first_attr - OK\n";
|
||||
}
|
||||
|
||||
# Get Next Attribute
|
||||
$attr = ldap_next_attribute($ld,$ent,$ber);
|
||||
if (!$attr)
|
||||
{
|
||||
print "next_attr - Failed!\n";
|
||||
} else {
|
||||
print "next_attr - OK\n";
|
||||
}
|
||||
|
||||
# Get Attribute Values
|
||||
my @vals = ldap_get_values($ld,$ent,$attr);
|
||||
if ($#vals < 0)
|
||||
{
|
||||
print "get_values - Failed!\n";
|
||||
} else {
|
||||
print "get_values - OK\n";
|
||||
}
|
||||
|
||||
# Free structures pointed to by $ber and $res to prevent memory leak
|
||||
ldap_ber_free($ber,1);
|
||||
ldap_msgfree($res);
|
||||
|
||||
# Compare Attribute Values
|
||||
foreach my $number (1..$howmany)
|
||||
{
|
||||
if(ldap_compare_s($ld,"cn=Mozilla $number,$BASE","sn",$number)
|
||||
!= LDAP_COMPARE_TRUE)
|
||||
{
|
||||
print "comp_user_$number - Failed!\n";
|
||||
} else {
|
||||
print "comp_user_$number - OK\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Delete Users
|
||||
foreach my $number (1..$howmany)
|
||||
{
|
||||
if (ldap_delete_s($ld,"cn=Mozilla $number,$BASE") != LDAP_SUCCESS)
|
||||
{
|
||||
print "del_user_$number - Failed!\n";
|
||||
} else {
|
||||
print "del_user_$number - OK\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (ldap_delete_s($ld,"$BASE") != LDAP_SUCCESS)
|
||||
{
|
||||
print "del_org - Failed!\n";
|
||||
} else {
|
||||
print "del_org - OK\n";
|
||||
}
|
||||
|
||||
# Unbind
|
||||
ldap_unbind($ld);
|
||||
}
|
||||
131
mozilla/directory/perldap/test_api/search.pl
Executable file
131
mozilla/directory/perldap/test_api/search.pl
Executable file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/perl
|
||||
#############################################################################
|
||||
# $Id: search.pl,v 1.4 1998-08-13 04:40:01 clayton Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerlDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Test the search capabilities of the API, similar to write.pl.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use Mozilla::LDAP::API qw(:api :constant);
|
||||
use strict;
|
||||
|
||||
|
||||
my $ldap_host = "";
|
||||
my $BASEDN = "o=Org,c=US";
|
||||
my $filter = $ARGV[0];
|
||||
|
||||
if (!$ldap_host)
|
||||
{
|
||||
print "Edit the top portion of this file before continuing.\n";
|
||||
exit -1;
|
||||
}
|
||||
|
||||
my $attrs = [];
|
||||
|
||||
my ($ld,$result,$count);
|
||||
|
||||
##
|
||||
## Initialize LDAP Connection
|
||||
##
|
||||
|
||||
if (($ld = ldap_init($ldap_host,LDAP_PORT)) == -1)
|
||||
{
|
||||
die "Can not open LDAP connection to $ldap_host";
|
||||
}
|
||||
|
||||
##
|
||||
## Bind as DN, PASSWORD (NULL,NULL) on LDAP connection $ld
|
||||
##
|
||||
|
||||
if (ldap_simple_bind_s($ld,"","") != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"bind_s");
|
||||
die;
|
||||
}
|
||||
|
||||
##
|
||||
## ldap_search_s - Synchronous Search
|
||||
##
|
||||
|
||||
if (ldap_search_s($ld,$BASEDN,LDAP_SCOPE_SUBTREE,$filter,$attrs,0,$result) != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"search_s");
|
||||
die;
|
||||
}
|
||||
|
||||
##
|
||||
## ldap_count_entries - Count Matched Entries
|
||||
##
|
||||
|
||||
if (($count = ldap_count_entries($ld,$result)) == -1)
|
||||
{
|
||||
ldap_perror($ld,"count_entry");
|
||||
die;
|
||||
}
|
||||
|
||||
##
|
||||
## first_entry - Get First Matched Entry
|
||||
## next_entry - Get Next Matched Entry
|
||||
##
|
||||
|
||||
for (my $ent = ldap_first_entry($ld,$result); $ent; $ent = ldap_next_entry($ld,$ent))
|
||||
{
|
||||
|
||||
##
|
||||
## ldap_get_dn - Get DN for Matched Entries
|
||||
##
|
||||
|
||||
my ($dn,$attr,@vals,$val,$ber);
|
||||
if (($dn = ldap_get_dn($ld,$ent)) ne "")
|
||||
{
|
||||
print "dn: $dn\n";
|
||||
} else {
|
||||
ldap_perror($ld,"get_dn");
|
||||
die;
|
||||
}
|
||||
|
||||
for ($attr = ldap_first_attribute($ld,$ent,$ber); $attr; $attr = ldap_next_attribute($ld,$ent,$ber))
|
||||
{
|
||||
|
||||
##
|
||||
## ldap_get_values
|
||||
##
|
||||
|
||||
@vals = ldap_get_values($ld,$ent,$attr);
|
||||
if ($#vals >= 0)
|
||||
{
|
||||
foreach $val (@vals)
|
||||
{
|
||||
print "$attr: $val\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
ldap_ber_free($ber,0);
|
||||
}
|
||||
ldap_msgfree($result);
|
||||
|
||||
##
|
||||
## Unbind LDAP Connection
|
||||
##
|
||||
|
||||
ldap_unbind($ld);
|
||||
|
||||
110
mozilla/directory/perldap/test_api/write.pl
Executable file
110
mozilla/directory/perldap/test_api/write.pl
Executable file
@@ -0,0 +1,110 @@
|
||||
#!/usr/bin/perl -w
|
||||
#############################################################################
|
||||
# $Id: write.pl,v 1.4 1998-08-13 04:40:02 clayton Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerlDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# write.pl - Test of LDAP Modify Operations in Perl5
|
||||
# Author: Clayton Donley <donley@wwa.com>
|
||||
#
|
||||
# This utility is mostly to demonstrate all the write operations
|
||||
# that can be done with LDAP through this PERL5 module.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use strict;
|
||||
use Mozilla::LDAP::API qw(:constant :api);
|
||||
|
||||
|
||||
# This is the entry we will be adding. Do not use a pre-existing entry.
|
||||
my $ENTRYDN = "cn=Test Guy, o=Org, c=US";
|
||||
|
||||
# This is the DN and password for an Administrator
|
||||
my $ROOTDN = "cn=DSManager,o=Org,c=US";
|
||||
my $ROOTPW = "";
|
||||
|
||||
my $ldap_server = "";
|
||||
|
||||
if (!$ldap_server)
|
||||
{
|
||||
print "Edit the top portion of this file before continuing.\n";
|
||||
exit -1;
|
||||
}
|
||||
|
||||
my $ld = ldap_init($ldap_server,LDAP_PORT);
|
||||
|
||||
if ($ld == -1)
|
||||
{
|
||||
die "Connection to LDAP Server Failed";
|
||||
}
|
||||
|
||||
if (ldap_simple_bind_s($ld,$ROOTDN,$ROOTPW) != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"bind_s");
|
||||
die;
|
||||
}
|
||||
|
||||
my %testwrite = (
|
||||
"cn" => "Test User",
|
||||
"sn" => "User",
|
||||
"givenName" => "Test",
|
||||
"telephoneNumber" => "8475551212",
|
||||
"objectClass" => ["top","person","organizationalPerson",
|
||||
"inetOrgPerson"],
|
||||
"mail" => "tuser\@my.org",
|
||||
);
|
||||
|
||||
if (ldap_add_s($ld,$ENTRYDN,\%testwrite) != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"add_s");
|
||||
die;
|
||||
}
|
||||
|
||||
print "Entry Added.\n";
|
||||
|
||||
|
||||
%testwrite = (
|
||||
"telephoneNumber" => "7085551212",
|
||||
"mail" => {"a",["Test_User\@my.org"]},
|
||||
);
|
||||
|
||||
if (ldap_modify_s($ld,$ENTRYDN,\%testwrite) != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"modify_s");
|
||||
die;
|
||||
}
|
||||
|
||||
print "Entry Modified.\n";
|
||||
|
||||
#
|
||||
# Delete the entry for $ENTRYDN
|
||||
#
|
||||
if (ldap_delete_s($ld,$ENTRYDN) != LDAP_SUCCESS)
|
||||
{
|
||||
ldap_perror($ld,"delete_s");
|
||||
die;
|
||||
}
|
||||
|
||||
print "Entry Deleted.\n";
|
||||
|
||||
# Unbind to LDAP server
|
||||
ldap_unbind($ld);
|
||||
|
||||
exit;
|
||||
70
mozilla/directory/perldap/typemap
Normal file
70
mozilla/directory/perldap/typemap
Normal file
@@ -0,0 +1,70 @@
|
||||
#############################################################################
|
||||
# $Id: typemap,v 1.4 1998-08-13 09:15:00 leif Exp $
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License
|
||||
# Version 1.0 (the "License"); you may not use this file except in
|
||||
# compliance with the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS"
|
||||
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing rights and limitations
|
||||
# under the License.
|
||||
#
|
||||
# The Original Code is PerLDAP. The Initial Developer of the Original
|
||||
# Code is Netscape Communications Corp. and Clayton Donley. Portions
|
||||
# created by Netscape are Copyright (C) Netscape Communications
|
||||
# Corp., portions created by Clayton Donley are Copyright (C) Clayton
|
||||
# Donley. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Typemap to declare XSUB data types.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
const int T_IV
|
||||
char * T_PV
|
||||
const char * T_PV
|
||||
char ** T_charptrptr
|
||||
LDAP * T_PTR
|
||||
LDAPMessage * T_PTR
|
||||
LDAPMessage ** T_PTR
|
||||
BerElement * T_PTR
|
||||
LDAPControl * T_PTR
|
||||
LDAPVersion * T_PTR
|
||||
struct berval T_berval
|
||||
struct berval ** T_bervalptrptr
|
||||
FriendlyMap * T_PTR
|
||||
LDAPsortkey ** T_PTR
|
||||
LDAPVirtualList * T_PTR
|
||||
LDAPURLDesc * T_PTR
|
||||
LDAPControl ** T_PTR
|
||||
LDAPFiltDesc * T_PTR
|
||||
LDAPFiltInfo * T_PTR
|
||||
LDAPMemCache * T_PTR
|
||||
LDAPMemCache ** T_PTR
|
||||
struct ldap_thread_fns * T_PTR
|
||||
LDAPMod ** T_PTR
|
||||
LDAP_CMP_CALLBACK * T_PTR
|
||||
LDAP_REBINDPROC_CALLBACK * T_PTR
|
||||
struct timeval T_timeval
|
||||
|
||||
#########
|
||||
INPUT
|
||||
T_timeval
|
||||
$var.tv_sec = atof((char *)SvPV($arg,na));
|
||||
$var.tv_usec = 0
|
||||
T_berval
|
||||
$var.bv_val = (char *)SvPV($arg,na);
|
||||
$var.bv_len = na
|
||||
T_charptrptr
|
||||
$var = (char **)avref2charptrptr($arg)
|
||||
T_bervalptrptr
|
||||
$var = (struct berval **)avref2berptrptr($arg)
|
||||
OUTPUT
|
||||
T_charptrptr
|
||||
$arg = charptrptr2avref($var);
|
||||
T_bervalptrptr
|
||||
$arg = berptrptr2avref((struct berval **)$var);
|
||||
@@ -1,5 +0,0 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
RewriteRule ^$ webroot/ [L]
|
||||
RewriteRule (.*) webroot/$1 [L]
|
||||
</IfModule>
|
||||
@@ -1,25 +0,0 @@
|
||||
SERVER REQUIREMENTS
|
||||
- Apache 1.3 or higher with mod_rewrite enabled
|
||||
- PHP 4.3.2 or higher
|
||||
- CakePHP 1.1.7.3363 or higher
|
||||
- MySQL (preferred) or PostgreSQL
|
||||
|
||||
INSTALLATION:
|
||||
- All files accompanying this README should be placed into the /app directory of
|
||||
your CakePHP install. Once complete, you should have a directory structure similar
|
||||
to the following where (/) is the base of your domain:
|
||||
/
|
||||
app/
|
||||
config/
|
||||
controllers/
|
||||
models/
|
||||
webroot/
|
||||
...
|
||||
cake/
|
||||
vendors/
|
||||
|
||||
- Import the database schema (/app/config/dist.sql) into your database
|
||||
- Rename database.dist.php to database.php and edit the file to reflect your
|
||||
database configuration
|
||||
- Rename bootstrap.dist.php to bootstrap.php and follow the editing instructions
|
||||
within. All fields except APP_* and MAX_YEAR are optional.
|
||||
@@ -1,4 +0,0 @@
|
||||
<?php
|
||||
class AppController extends Controller {
|
||||
}
|
||||
?>
|
||||
@@ -1,4 +0,0 @@
|
||||
<?php
|
||||
class AppModel extends Model {
|
||||
}
|
||||
?>
|
||||
@@ -1,76 +0,0 @@
|
||||
;<?php die() ?>
|
||||
; SVN FILE: $Id: acl.ini.php,v 1.3 2006-10-08 03:39:21 reed%reedloden.com Exp $
|
||||
;/**
|
||||
; * Short description for file.
|
||||
; *
|
||||
; *
|
||||
; * PHP versions 4 and 5
|
||||
; *
|
||||
; * CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
; * Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
; * 1785 E. Sahara Avenue, Suite 490-204
|
||||
; * Las Vegas, Nevada 89104
|
||||
; *
|
||||
; * Licensed under The MIT License
|
||||
; * Redistributions of files must retain the above copyright notice.
|
||||
; *
|
||||
; * @filesource
|
||||
; * @copyright Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
; * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
; * @package cake
|
||||
; * @subpackage cake.app.config
|
||||
; * @since CakePHP v 0.10.0.1076
|
||||
; * @version $Revision: 1.3 $
|
||||
; * @modifiedby $LastChangedBy: phpnut $
|
||||
; * @lastmodified $Date: 2006-10-08 03:39:21 $
|
||||
; * @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
; */
|
||||
|
||||
; acl.ini.php - Cake ACL Configuration
|
||||
; ---------------------------------------------------------------------
|
||||
; Use this file to specify user permissions.
|
||||
; aco = access control object (something in your application)
|
||||
; aro = access request object (something requesting access)
|
||||
;
|
||||
; User records are added as follows:
|
||||
;
|
||||
; [uid]
|
||||
; groups = group1, group2, group3
|
||||
; allow = aco1, aco2, aco3
|
||||
; deny = aco4, aco5, aco6
|
||||
;
|
||||
; Group records are added in a similar manner:
|
||||
;
|
||||
; [gid]
|
||||
; allow = aco1, aco2, aco3
|
||||
; deny = aco4, aco5, aco6
|
||||
;
|
||||
; The allow, deny, and groups sections are all optional.
|
||||
; NOTE: groups names *cannot* ever be the same as usernames!
|
||||
;
|
||||
; ACL permissions are checked in the following order:
|
||||
; 1. Check for user denies (and DENY if specified)
|
||||
; 2. Check for user allows (and ALLOW if specified)
|
||||
; 3. Gather user's groups
|
||||
; 4. Check group denies (and DENY if specified)
|
||||
; 5. Check group allows (and ALLOW if specified)
|
||||
; 6. If no aro, aco, or group information is found, DENY
|
||||
;
|
||||
; ---------------------------------------------------------------------
|
||||
|
||||
;-------------------------------------
|
||||
;Users
|
||||
;-------------------------------------
|
||||
|
||||
[username-goes-here]
|
||||
groups = group1, group2
|
||||
deny = aco1, aco2
|
||||
allow = aco3, aco4
|
||||
|
||||
;-------------------------------------
|
||||
;Groups
|
||||
;-------------------------------------
|
||||
|
||||
[groupname-goes-here]
|
||||
deny = aco5, aco6
|
||||
allow = aco7, aco8
|
||||
@@ -1,32 +0,0 @@
|
||||
<?php
|
||||
/* REQUIRED - APP_NAME is used on all <title>s and mail names/subjects. APP_BASE
|
||||
* should be a FQDN with protocol minus the trailing slash e.g. http://example.tld/party
|
||||
*/
|
||||
define('APP_NAME', '');
|
||||
define('APP_EMAIL', '');
|
||||
define('APP_BASE', '');
|
||||
|
||||
/* You should specify a Google Map API key here. Without it, all mapping features
|
||||
* will be disabled. To obtain a key, visit http://www.google.com/apis/maps/
|
||||
*/
|
||||
define('GMAP_API_KEY', '');
|
||||
|
||||
/* The search API key is used to generate spelling suggestions for locations not
|
||||
* not found during a Geocode operation. You may obtain a key here: http://code.google.com/apis/soapsearch/
|
||||
*/
|
||||
define('GSEARCH_API_KEY', '');
|
||||
|
||||
/* The maximum year shown for party registrations */
|
||||
define('MAX_YEAR', 2007);
|
||||
|
||||
/* The Flickr API is used to show photos of each party on the individual party
|
||||
* pages and home page. See http://flickr.com/services/api/keys/ to obtain a key
|
||||
*/
|
||||
define('FLICKR_API_KEY', '');
|
||||
|
||||
/* The tag prefix is used to limit the results returned to a specific party.
|
||||
* e.g. any photo tagged with FirefoxParty11 will be shown on party 11's page.
|
||||
* Photos tagged with only the prefix are shown on the front page (so choose wisely! ;) ).
|
||||
*/
|
||||
define('FLICKR_TAG_PREFIX', '');
|
||||
?>
|
||||
@@ -1,147 +0,0 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id: core.php,v 1.4 2006-10-08 03:39:21 reed%reedloden.com Exp $ */
|
||||
/**
|
||||
* This is core configuration file.
|
||||
*
|
||||
* Use it to configure core behaviour ofCake.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.app.config
|
||||
* @since CakePHP v 0.2.9
|
||||
* @version $Revision: 1.4 $
|
||||
* @modifiedby $LastChangedBy: phpnut $
|
||||
* @lastmodified $Date: 2006-10-08 03:39:21 $
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
/**
|
||||
* If you do not have mod rewrite on your system
|
||||
* or if you prefer to use CakePHP pretty urls.
|
||||
* uncomment the line below.
|
||||
* Note: If you do have mod rewrite but prefer the
|
||||
* CakePHP pretty urls, you also have to remove the
|
||||
* .htaccess files
|
||||
* release/.htaccess
|
||||
* release/app/.htaccess
|
||||
* release/app/webroot/.htaccess
|
||||
*/
|
||||
// define ('BASE_URL', env('SCRIPT_NAME'));
|
||||
/**
|
||||
* Set debug level here:
|
||||
* - 0: production
|
||||
* - 1: development
|
||||
* - 2: full debug with sql
|
||||
* - 3: full debug with sql and dump of the current object
|
||||
*
|
||||
* In production, the "flash messages" redirect after a time interval.
|
||||
* With the other debug levels you get to click the "flash message" to continue.
|
||||
*
|
||||
*/
|
||||
define('DEBUG', 0);
|
||||
/**
|
||||
* Turn of caching checking wide.
|
||||
* You must still use the controller var cacheAction inside you controller class.
|
||||
* You can either set it controller wide, or in each controller method.
|
||||
* use var $cacheAction = true; or in the controller method $this->cacheAction = true;
|
||||
*/
|
||||
define('CACHE_CHECK', false);
|
||||
/**
|
||||
* Error constant. Used for differentiating error logging and debugging.
|
||||
* Currently PHP supports LOG_DEBUG
|
||||
*/
|
||||
define('LOG_ERROR', 2);
|
||||
/**
|
||||
* CakePHP includes 3 types of session saves
|
||||
* database or file. Set this to your preferred method.
|
||||
* If you want to use your own save handler place it in
|
||||
* app/config/name.php DO NOT USE file or database as the name.
|
||||
* and use just the name portion below.
|
||||
*
|
||||
* Setting this to cake will save files to /cakedistro/tmp directory
|
||||
* Setting it to php will use the php default save path
|
||||
* Setting it to database will use the database
|
||||
*
|
||||
*
|
||||
*/
|
||||
define('CAKE_SESSION_SAVE', 'database');
|
||||
/**
|
||||
* If using you own table name for storing sessions
|
||||
* set the table name here.
|
||||
* DO NOT INCLUDE PREFIX IF YOU HAVE SET ONE IN database.php
|
||||
*
|
||||
*/
|
||||
define('CAKE_SESSION_TABLE', 'sessions');
|
||||
/**
|
||||
* Set a random string of used in session.
|
||||
*
|
||||
*/
|
||||
define('CAKE_SESSION_STRING', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
|
||||
/**
|
||||
* Set the name of session cookie
|
||||
*
|
||||
*/
|
||||
define('CAKE_SESSION_COOKIE', 'sess');
|
||||
/**
|
||||
* Set level of Cake security.
|
||||
*
|
||||
*/
|
||||
define('CAKE_SECURITY', 'high');
|
||||
/**
|
||||
* Set Cake Session time out.
|
||||
* If CAKE_SECURITY define is set
|
||||
* high: multiplied by 10
|
||||
* medium: is multiplied by 100
|
||||
* low is: multiplied by 300
|
||||
*
|
||||
* Number below is seconds.
|
||||
*/
|
||||
define('CAKE_SESSION_TIMEOUT', '120');
|
||||
/**
|
||||
* Uncomment the define below to use cake built in admin routes.
|
||||
* You can set this value to anything you want.
|
||||
* All methods related to the admin route should be prefixed with the
|
||||
* name you set CAKE_ADMIN to.
|
||||
* For example: admin_index, admin_edit
|
||||
*/
|
||||
// define('CAKE_ADMIN', 'admin');
|
||||
/**
|
||||
* The define below is used to turn cake built webservices
|
||||
* on or off. Default setting is off.
|
||||
*/
|
||||
define('WEBSERVICES', 'off');
|
||||
/**
|
||||
* Compress output CSS (removing comments, whitespace, repeating tags etc.)
|
||||
* This requires a/var/cache directory to be writable by the web server (caching).
|
||||
* To use, prefix the CSS link URL with '/ccss/' instead of '/css/' or use Controller::cssTag().
|
||||
*/
|
||||
define('COMPRESS_CSS', false);
|
||||
/**
|
||||
* If set to true, helpers would output data instead of returning it.
|
||||
*/
|
||||
define('AUTO_OUTPUT', false);
|
||||
/**
|
||||
* If set to false, session would not automatically be started.
|
||||
*/
|
||||
define('AUTO_SESSION', true);
|
||||
/**
|
||||
* Set the max size of file to use md5() .
|
||||
*/
|
||||
define('MAX_MD5SIZE', (5 * 1024) * 1024);
|
||||
/**
|
||||
* To use Access Control Lists with Cake...
|
||||
*/
|
||||
define('ACL_CLASSNAME', 'DB_ACL');
|
||||
define('ACL_FILENAME', 'dbacl' . DS . 'db_acl');
|
||||
?>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
class DATABASE_CONFIG {
|
||||
var $default = array('driver' => 'mysql',
|
||||
'connect' => 'mysql_connect',
|
||||
'host' => 'localhost',
|
||||
'login' => '',
|
||||
'password' => '',
|
||||
'database' => '');
|
||||
}
|
||||
?>
|
||||
@@ -1,72 +0,0 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id: inflections.php,v 1.3 2006-10-08 03:39:21 reed%reedloden.com Exp $ */
|
||||
/**
|
||||
* Custom Inflected Words.
|
||||
*
|
||||
* This file is used to hold words that are not matched in the normail Inflector::pluralize() and
|
||||
* Inflector::singularize()
|
||||
*
|
||||
* PHP versions 4 and %
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.app.config
|
||||
* @since CakePHP v 1.0.0.2312
|
||||
* @version $Revision: 1.3 $
|
||||
* @modifiedby $LastChangedBy: phpnut $
|
||||
* @lastmodified $Date: 2006-10-08 03:39:21 $
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
/**
|
||||
* This is a key => value array of regex used to match words.
|
||||
* If key matches then the value is returned.
|
||||
*
|
||||
* $pluralRules = array('/(s)tatus$/i' => '\1\2tatuses', '/^(ox)$/i' => '\1\2en', '/([m|l])ouse$/i' => '\1ice');
|
||||
*/
|
||||
$pluralRules = array();
|
||||
/**
|
||||
* This is a key only array of plural words that should not be inflected.
|
||||
* Notice the last comma
|
||||
*
|
||||
* $uninflectedPlural = array('.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox');
|
||||
*/
|
||||
$uninflectedPlural = array();
|
||||
/**
|
||||
* This is a key => value array of plural irregular words.
|
||||
* If key matches then the value is returned.
|
||||
*
|
||||
* $irregularPlural = array('atlas' => 'atlases', 'beef' => 'beefs', 'brother' => 'brothers')
|
||||
*/
|
||||
$irregularPlural = array();
|
||||
/**
|
||||
* This is a key => value array of regex used to match words.
|
||||
* If key matches then the value is returned.
|
||||
*
|
||||
* $singularRules = array('/(s)tatuses$/i' => '\1\2tatus', '/(matr)ices$/i' =>'\1ix','/(vert|ind)ices$/i')
|
||||
*/
|
||||
$singularRules = array();
|
||||
/**
|
||||
* This is a key only array of singular words that should not be inflected.
|
||||
* You should not have to change this value below if you do change it use same format
|
||||
* as the $uninflectedPlural above.
|
||||
*/
|
||||
$uninflectedSingular = $uninflectedPlural;
|
||||
/**
|
||||
* This is a key => value array of singular irregular words.
|
||||
* Most of the time this will be a reverse of the above $irregularPlural array
|
||||
* You should not have to change this value below if you do change it use same format
|
||||
*
|
||||
* $irregularSingular = array('atlases' => 'atlas', 'beefs' => 'beef', 'brothers' => 'brother')
|
||||
*/
|
||||
$irregularSingular = array_flip($irregularPlural);
|
||||
?>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id: routes.php,v 1.5 2006-10-10 20:18:59 reed%reedloden.com Exp $ */
|
||||
/**
|
||||
* Short description for file.
|
||||
*
|
||||
* In this file, you set up routes to your controllers and their actions.
|
||||
* Routes are very important mechanism that allows you to freely connect
|
||||
* different urls to chosen controllers and their actions (functions).
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.app.config
|
||||
* @since CakePHP v 0.2.9
|
||||
* @version $Revision: 1.5 $
|
||||
* @modifiedby $LastChangedBy: phpnut $
|
||||
* @lastmodified $Date: 2006-10-10 20:18:59 $
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
/**
|
||||
* Here, we are connecting '/' (base path) to controller called 'Pages',
|
||||
* its action called 'display', and we pass a param to select the view file
|
||||
* to use (in this case, /app/views/pages/home.thtml)...
|
||||
*/
|
||||
$Route->connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
/**
|
||||
* ...and connect the rest of 'Pages' controller's urls.
|
||||
*/
|
||||
$Route->connect('/pages/edit', array('controller' => 'pages', 'action' => 'edit'));
|
||||
$Route->connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
|
||||
$Route->connect('/privacy-policy', array('controller' => 'pages', 'action' => 'privacy'));
|
||||
?>
|
||||
@@ -1,80 +0,0 @@
|
||||
CREATE TABLE `comments` (
|
||||
`id` int(10) NOT NULL auto_increment,
|
||||
`assoc` int(10) NOT NULL default '0',
|
||||
`owner` int(10) NOT NULL default '0',
|
||||
`time` int(15) NOT NULL default '0',
|
||||
`text` text collate utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
CREATE TABLE `guests` (
|
||||
`id` int(10) NOT NULL auto_increment,
|
||||
`pid` int(10) NOT NULL default '0',
|
||||
`uid` int(10) NOT NULL default '0',
|
||||
`invited` tinyint(1) NOT NULL default '1',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `pid` (`pid`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
CREATE TABLE `pages` (
|
||||
`id` int(10) NOT NULL auto_increment,
|
||||
`text` text collate utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
INSERT INTO `pages` (`id`, `text`) VALUES (1, '<h2>Join the Fun!</h2>\n<p>All over the world, we're celebrating the launch of Firefox 2. Join the fun by hosting or attending a party. We're targeting the weekend of October 27th for the shared celebration, but if you're hosting, you make the call.</p>\n\n<p>To join the fun, <a href="/users/register">register</a> for a Firefox Party account, and sign up to host or attend.</p>\n\n<p style="border: 1px solid #555; background: #faffd4; padding: 5px; font-weight: bold">Be one of the first 50 party hosts registered and get three extra launch exclusive t-shirts with your purchase of the <a href="">Firefox 2 Party Pack</a>. We're selling the party packs and shirts at cost, so it's a great deal, and for parties with unusually large attendance, we'll be sending out additional swag for door prizes and other give-aways. Stay tuned for updates!</p>');
|
||||
INSERT INTO `pages` (`id`, `text`) VALUES (2, '1162007940');
|
||||
|
||||
CREATE TABLE `parties` (
|
||||
`id` int(10) NOT NULL auto_increment,
|
||||
`owner` int(10) NOT NULL default '0',
|
||||
`name` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`vname` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`address` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`tz` int(2) NOT NULL default '0',
|
||||
`website` text collate utf8_unicode_ci NOT NULL,
|
||||
`notes` text collate utf8_unicode_ci NOT NULL,
|
||||
`date` int(10) NOT NULL default '0',
|
||||
`duration` tinyint(2) NOT NULL default '2',
|
||||
`confirmed` tinyint(1) NOT NULL default '1',
|
||||
`canceled` tinyint(1) NOT NULL default '0',
|
||||
`guestcomments` tinyint(1) NOT NULL default '0',
|
||||
`inviteonly` tinyint(1) NOT NULL default '0',
|
||||
`invitecode` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`lat` float NOT NULL default '0',
|
||||
`long` float NOT NULL default '0',
|
||||
`zoom` tinyint(2) NOT NULL default '1',
|
||||
`useflickr` tinyint(1) NOT NULL default '0',
|
||||
`flickrperms` tinyint(1) NOT NULL default '0',
|
||||
`flickrid` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`flickrusr` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
CREATE TABLE `sessions` (
|
||||
`id` varchar(255) character set latin1 NOT NULL default '',
|
||||
`data` text character set latin1,
|
||||
`expires` int(11) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
CREATE TABLE `users` (
|
||||
`id` int(10) NOT NULL auto_increment,
|
||||
`role` tinyint(1) NOT NULL default '0',
|
||||
`email` varchar(255) collate utf8_unicode_ci NOT NULL,
|
||||
`active` varchar(10) collate utf8_unicode_ci NOT NULL default '0',
|
||||
`password` varchar(75) collate utf8_unicode_ci NOT NULL default '',
|
||||
`salt` varchar(9) collate utf8_unicode_ci NOT NULL default '',
|
||||
`name` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`location` tinytext collate utf8_unicode_ci NOT NULL,
|
||||
`tz` tinyint(2) NOT NULL default '0',
|
||||
`website` text collate utf8_unicode_ci NOT NULL,
|
||||
`lat` float NOT NULL default '0',
|
||||
`long` float NOT NULL default '0',
|
||||
`zoom` tinyint(2) NOT NULL default '1',
|
||||
`showemail` tinyint(1) NOT NULL default '0',
|
||||
`showloc` tinyint(1) NOT NULL default '1',
|
||||
`showmap` tinyint(1) NOT NULL default '1',
|
||||
UNIQUE KEY `email` (`email`),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
@@ -1,163 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
uses('sanitize');
|
||||
class AdminController extends AppController {
|
||||
var $name = 'Admin';
|
||||
var $uses = array('Party', 'User', 'Comment');
|
||||
var $components = array('Unicode');
|
||||
|
||||
function beforeFilter() {
|
||||
if (empty($_SESSION['User']) || $_SESSION['User']['role'] != 1) {
|
||||
$this->redirect('/');
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
function index() {
|
||||
$this->set('parties', $this->Party->findAll(null, null, "id ASC"));
|
||||
}
|
||||
|
||||
function users() {
|
||||
$this->set('users', $this->User->findAll(null, null, "id ASC"));
|
||||
}
|
||||
|
||||
function comments() {
|
||||
$this->set('comments', $this->Comment->findAll(null, null, "id ASC"));
|
||||
}
|
||||
|
||||
function edit($type, $id) {
|
||||
if (empty($this->data)) {
|
||||
switch($type) {
|
||||
case 'user':
|
||||
$this->User->id = $id;
|
||||
$user = $this->User->read();
|
||||
$this->set('user', $user);
|
||||
$this->data = $user;
|
||||
break;
|
||||
|
||||
case 'party':
|
||||
$this->Party->id = $id;
|
||||
$party = $this->Party->read();
|
||||
$this->set('party', $party);
|
||||
$this->data = $party;
|
||||
$this->data['Party']['name'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['name']));
|
||||
$this->data['Party']['vname'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['vname']));
|
||||
$this->data['Party']['website'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['website']));
|
||||
$this->data['Party']['address'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['address']));
|
||||
$this->data['Party']['notes'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['notes']));
|
||||
$this->data['Party']['flickrusr'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['flickrusr']));
|
||||
break;
|
||||
|
||||
case 'comment':
|
||||
$this->Comment->id = $id;
|
||||
$comment = $this->Comment->read();
|
||||
$this->set('comment', $comment);
|
||||
|
||||
$uid = $this->User->findById($comment['Comment']['owner']);
|
||||
$this->set('owner', $uid['User']['name']);
|
||||
|
||||
$this->data = $comment;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
switch($type) {
|
||||
case 'user':
|
||||
$this->User->id = $id;
|
||||
$this->User->save($this->data);
|
||||
break;
|
||||
|
||||
case 'party':
|
||||
$this->Party->id = $id;
|
||||
$clean = new Sanitize();
|
||||
$clean->cleanArray($this->data);
|
||||
$this->Party->save($this->data);
|
||||
break;
|
||||
|
||||
case 'comment':
|
||||
$this->Comment->id = $id;
|
||||
$this->Comment->save($this->data);
|
||||
break;
|
||||
}
|
||||
|
||||
if ($type != 'party')
|
||||
$this->redirect('/admin/'.$type.'s');
|
||||
|
||||
else
|
||||
$this->redirect('/admin/');
|
||||
}
|
||||
}
|
||||
|
||||
function delete($type, $id) {
|
||||
switch($type) {
|
||||
case 'user':
|
||||
$this->User->del($id);
|
||||
$this->User->query("DELETE FROM guests WHERE uid = $id");
|
||||
break;
|
||||
|
||||
case 'party':
|
||||
$this->Party->del($id);
|
||||
$this->Party->query("DELETE FROM guests WHERE pid = $id");
|
||||
$this->Party->query("DELETE FROM comments WHERE assoc = $id");
|
||||
break;
|
||||
|
||||
case 'comment':
|
||||
$this->Comment->del($id);
|
||||
break;
|
||||
}
|
||||
|
||||
if ($type != 'party')
|
||||
$this->redirect('/admin/'.$type.'s');
|
||||
|
||||
else
|
||||
$this->redirect('/admin/');
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,71 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
uses('sanitize');
|
||||
|
||||
class CommentsController extends AppController {
|
||||
var $name = 'Comments';
|
||||
var $components = array('Security');
|
||||
|
||||
function beforeFilter() {
|
||||
$this->Security->requirePost('add');
|
||||
}
|
||||
|
||||
function add($pid, $uid) {
|
||||
if (!$this->Session->check('User') || $uid != $_SESSION['User']['id'])
|
||||
$this->redirect('/');
|
||||
|
||||
if (!empty($this->data) && $this->Comment->canComment($pid, $uid)) {
|
||||
// Explictly destroy the last model to avoid an edit instead of an insert
|
||||
$this->Comment->create();
|
||||
|
||||
$clean = new Sanitize();
|
||||
$text = $clean->html($this->data['Comment']['text']);
|
||||
$this->data['Comment']['text'] = nl2br($text);
|
||||
$this->data['Comment']['owner'] = $uid;
|
||||
$this->data['Comment']['assoc'] = $pid;
|
||||
$this->data['Comment']['time'] = mktime();
|
||||
|
||||
if ($this->Comment->save($this->data)) {
|
||||
$this->redirect('/parties/view/'.$pid.'#c'.$this->Comment->getLastInsertID());
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
$this->redirect('/parties/view/'.$pid);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class HashComponent extends Object {
|
||||
|
||||
function password($pass, $data) {
|
||||
$string = $pass.uniqid(rand(), true).$data;
|
||||
$salt = substr(md5($string), 0, 9);
|
||||
$p = sha1($pass.$salt);
|
||||
$rv = array('pass' => $p, 'salt' => $salt);
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function keygen($chars) {
|
||||
$key = null;
|
||||
$pool = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
for ($i = 0; $i < $chars; $i++)
|
||||
$key .= $pool{rand(0,61)};
|
||||
return $key;
|
||||
}
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
<?php
|
||||
class MailComponent extends Object {
|
||||
var $from;
|
||||
var $to;
|
||||
var $reply;
|
||||
var $subject;
|
||||
var $message;
|
||||
var $envelope;
|
||||
var $head = "<strong>Firefox Party!</strong><br/>";
|
||||
var $foot;
|
||||
|
||||
|
||||
function mail($params) {
|
||||
if (array_key_exists('from', $params))
|
||||
$this->from = $params['from'];
|
||||
|
||||
if (array_key_exists('to', $params))
|
||||
$this->to = $params['to'];
|
||||
|
||||
if (array_key_exists('reply', $params))
|
||||
$this->reply = $params['reply'];
|
||||
|
||||
if (array_key_exists('subject', $params))
|
||||
$this->subject = $params['subject'];
|
||||
|
||||
if (array_key_exists('message', $params))
|
||||
$this->message = $params['message'];
|
||||
|
||||
if (array_key_exists('envelope', $params))
|
||||
$this->envelope = $params['envelope'];
|
||||
|
||||
if (array_key_exists('type', $params)) {
|
||||
switch($params['type']) {
|
||||
case 'act':
|
||||
$this->message = $this->head."<br/>\nThank you for registering! To activate your account, <a href=\"".$params['link']."\">click here</a> or paste the link below into your browser:<br/> ".$params['link'].$this->foot;
|
||||
break;
|
||||
|
||||
case 'prec':
|
||||
$this->message = $this->head."<br/>\nTo reset your password, <a href=\"".$params['link']."\">click here</a> or paste the link below into your browser:<br/> ".$params['link'].$this->foot;
|
||||
break;
|
||||
|
||||
case 'invite':
|
||||
$this->message = $this->head."<br/>\nYou've been invited by a friend to join them in celebrating the release of Firefox 2. Simply <a href=\"".$params['link']."\">click here</a> to confirm or cancel this invitation. If you don't already have an account, you'll need to create one.\n
|
||||
If you're unable to use the link above, simply paste the following URL into your browser: ".$params['link'].$this->foot;
|
||||
break;
|
||||
|
||||
case 'cancel':
|
||||
$this->message = $this->head."<br/>\nThe party you were attending has been canceled. For more information, please <a href=\"".$params['link']."\">click here</a>, or see the link below.\n ".$params['link'].$this->foot;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function make_headers($type='html') {
|
||||
$headers = '';
|
||||
|
||||
switch($type) {
|
||||
case 'html':
|
||||
$headers .= 'MIME-Version: 1.0' . "\r\n";
|
||||
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($this->from)) {
|
||||
$headers .= "From: {$this->from}\r\n";
|
||||
|
||||
if (!empty($this->reply))
|
||||
$headers .= "Reply-To: {$this->reply}\r\n";
|
||||
}
|
||||
return $headers;
|
||||
}
|
||||
|
||||
function make_additional_parameters() {
|
||||
if (!empty($this->envelope)) {
|
||||
return '-f'.$this->envelope;
|
||||
}
|
||||
}
|
||||
|
||||
function send() {
|
||||
mail($this->to, $this->subject, $this->message, $this->make_headers(), $this->make_additional_parameters());
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class UnicodeComponent extends Object {
|
||||
/**
|
||||
* Unicode utilities. Converts and encodes characters up to 0xFFFF (65535)
|
||||
*/
|
||||
function unicode2utf($char) {
|
||||
if ($char < 128) {
|
||||
$rv = chr($char);
|
||||
}
|
||||
|
||||
else if ($char < 2048) {
|
||||
$rv = chr(192 + (($char - ($char % 64)) / 64));
|
||||
$rv .= chr(128 + ($char % 64));
|
||||
}
|
||||
|
||||
else {
|
||||
$rv = chr(224 + (($char - ($char % 4096)) / 4096));
|
||||
$rv .= chr(128 + ((($char % 4096) - ($char % 64)) / 64));
|
||||
$rv .= chr(128 + ($char % 64));
|
||||
}
|
||||
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function utf2unicode($char) {
|
||||
if (ord($char{0}) < 128)
|
||||
$rv = ord($char);
|
||||
|
||||
else if (ord($char{0}) < 224)
|
||||
$rv = ((ord($char{0}) - 192) * 64) + (ord($char{1}) - 128);
|
||||
|
||||
else if (ord($char{0}) < 240)
|
||||
$rv = ((ord($char{0}) - 224) * 4096) + ((ord($char{1}) - 128) * 64 + (ord($char{2}) - 128));
|
||||
|
||||
else
|
||||
$rv = ((ord($char{0}) - 240) * 262144) + ((ord($char{1}) - 128) * 4096) + ((ord($char{2}) - 128) * 64) + (ord($char{3}) - 128);
|
||||
|
||||
return $rv;
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
vendor('webServices');
|
||||
class FeedsController extends AppController {
|
||||
var $name = 'Feeds';
|
||||
var $components = array('Unicode');
|
||||
|
||||
function index() {
|
||||
header('Content-type: application/rss+xml');
|
||||
$this->layout = 'ajax';
|
||||
$this->set('count', $this->Feed->findCount());
|
||||
}
|
||||
|
||||
function latest() {
|
||||
header('Content-type: application/rss+xml');
|
||||
$this->layout = 'ajax';
|
||||
$this->set('latest', $this->Feed->findAll('', '', 'id DESC', 10, 1));
|
||||
}
|
||||
|
||||
function users() {
|
||||
header('Content-type: application/rss+xml');
|
||||
$this->layout = 'ajax';
|
||||
$this->set('count', $this->Feed->getUserCount());
|
||||
}
|
||||
|
||||
function comments($id = null) {
|
||||
$this->layout = 'ajax';
|
||||
header('Content-type: application/rss+xml');
|
||||
if (!is_numeric($id))
|
||||
return;
|
||||
|
||||
$this->set('comments', $this->Feed->getComments($id));
|
||||
$this->set('pid', $id);
|
||||
}
|
||||
|
||||
function photos($id = null) {
|
||||
$this->layout = 'ajax';
|
||||
header('Content-type: application/atom+xml');
|
||||
if (!is_numeric($id))
|
||||
return;
|
||||
|
||||
$party = $this->Feed->findById($id);
|
||||
$this->set('party', $party);
|
||||
|
||||
if (FLICKR_API_KEY != null && !$party['Feeds']['canceled']) {
|
||||
if ($party['Feeds']['useflickr'] == 1) {
|
||||
$data = array('type' => 'flickr', 'userid' => $party['Feeds']['flickrid'], 'randomize' => false);
|
||||
$flickr = new webServices($data);
|
||||
$photoset = $flickr->fetchPhotos(FLICKR_TAG_PREFIX.$id, 30, !$party['Feeds']['flickrperms']);
|
||||
$this->set('flickr', $photoset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function upcoming($limit = null) {
|
||||
$this->layout = 'ajax';
|
||||
header('Content-type: application/rss+xml');
|
||||
|
||||
($limit == null) ? $limit = 25 : $limit = intval($limit);
|
||||
|
||||
$this->set('latest', $this->Feed->findAll('WHERE date > '. time(), '', 'date ASC', $limit, 1));
|
||||
}
|
||||
|
||||
function ical() {
|
||||
$this->layout = 'ajax';
|
||||
header('Content-type: text/calendar');
|
||||
header("Content-Disposition: inline; filename=partylist.ics");
|
||||
$back = time() - 172800;
|
||||
$events = $this->Feed->findAll('WHERE date > '. $back, '', 'date ASC', null, 1);
|
||||
|
||||
$cal = array();
|
||||
|
||||
foreach($events as $event) {
|
||||
$event['Feeds']['name'] =
|
||||
preg_replace(array("/&#(\d{2,5});/e", "/(\n|\r|\f)/", "/\,/"),
|
||||
array('$this->Unicode->unicode2utf(${1})', ' ', '\,'),
|
||||
html_entity_decode($event['Feeds']['name']));
|
||||
$event['Feeds']['address'] =
|
||||
preg_replace(array("/&#(\d{2,5});/e", "/(\n|\r|\f)/", "/\,/"),
|
||||
array('$this->Unicode->unicode2utf(${1})', ' ', '\,'),
|
||||
html_entity_decode($event['Feeds']['address']));
|
||||
$event['Feeds']['notes'] =
|
||||
preg_replace(array("/&#(\d{2,5});/e", "/(\n|\r|\f)/", "/\,/"),
|
||||
array('$this->Unicode->unicode2utf(${1})', ' ', '\,'),
|
||||
html_entity_decode($event['Feeds']['notes']));
|
||||
array_push($cal, $event);
|
||||
}
|
||||
$this->set('events', $cal);
|
||||
}
|
||||
|
||||
function topguests($limit = null) {
|
||||
$this->layout = 'ajax';
|
||||
header('Content-type: application/rss+xml');
|
||||
|
||||
($limit == null) ? $limit = 25 : $limit = intval($limit);
|
||||
|
||||
$rv = $this->Feed->query("SELECT parties.name AS name,
|
||||
guests.pid AS id,
|
||||
COUNT(guests.pid) AS count
|
||||
FROM guests
|
||||
LEFT JOIN parties
|
||||
ON guests.pid = parties.id
|
||||
GROUP BY guests.pid
|
||||
ORDER BY count DESC
|
||||
LIMIT $limit");
|
||||
$this->set('items', $rv);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,92 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
uses('sanitize');
|
||||
class PagesController extends AppController {
|
||||
var $name = 'Pages';
|
||||
var $components = array('Unicode');
|
||||
|
||||
function display() {
|
||||
$this->pageTitle = 'Home';
|
||||
$this->set('current', 'home');
|
||||
$this->set('pcount', $this->Page->findCount());
|
||||
$this->set('ucount', $this->Page->getUsers());
|
||||
$text = $this->Page->query('SELECT text FROM pages WHERE id = 1');
|
||||
$time = $this->Page->query('SELECT text FROM pages WHERE id = 2');
|
||||
$this->set('time', $time[0]['pages']['text']);
|
||||
$this->set('front_text', preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($text[0]['pages']['text'])));
|
||||
}
|
||||
|
||||
function privacy() {
|
||||
$this->pageTitle = 'Privacy Policy';
|
||||
}
|
||||
|
||||
function edit() {
|
||||
if (isset($_SESSION['User']['id']) && $_SESSION['User']['role'] == 1) {
|
||||
if (empty($this->data)) {
|
||||
$text = $this->Page->query('SELECT text FROM pages WHERE id = 1');
|
||||
$time = $this->Page->query('SELECT text FROM pages WHERE id = 2');
|
||||
$this->data['Pages']['text'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($text[0]['pages']['text']));
|
||||
$this->set('selected', date('Y-m-d H:i:s', $time[0]['pages']['text']));
|
||||
}
|
||||
|
||||
else {
|
||||
// Paranoid? Nah...
|
||||
if ($_SESSION['User']['role'] == 1) {
|
||||
$clean = new Sanitize();
|
||||
$clean->cleanArray($this->data);
|
||||
$date = mktime($this->data['Pages']['date_hour'],
|
||||
$this->data['Pages']['date_min'],
|
||||
0,
|
||||
$this->data['Pages']['date_month'],
|
||||
$this->data['Pages']['date_day'],
|
||||
$this->data['Pages']['date_year']);
|
||||
|
||||
$this->Page->execute('UPDATE pages SET text = "'.$this->data['Pages']['text'].'" WHERE pages.id = 1');
|
||||
$this->Page->execute('UPDATE pages SET text = "'.$date.'" WHERE pages.id = 2');
|
||||
$this->redirect('/');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
die();
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,472 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
uses('sanitize');
|
||||
vendor('webServices');
|
||||
class PartiesController extends AppController {
|
||||
var $name = 'Parties';
|
||||
var $uses = array('Party', 'Comment');
|
||||
var $helpers = array('Html', 'Form');
|
||||
var $components = array('Hash', 'Mail', 'Unicode');
|
||||
|
||||
function index() {
|
||||
$this->pageTitle = 'Party Map';
|
||||
$this->set('current', 'map');
|
||||
|
||||
if (!empty($this->data)) {
|
||||
$gcoder = new webServices(array('type' => 'geocode'));
|
||||
$loc = $gcoder->geocode($this->data['Party']['mloc']);
|
||||
|
||||
if ($loc)
|
||||
$this->set('map', 'initMashUp('.$loc['lat'].', '.$loc['lng'].');');
|
||||
|
||||
else
|
||||
$this->set('map', 'initMashUp();');
|
||||
}
|
||||
|
||||
else
|
||||
$this->set('map', 'initMashUp();');
|
||||
}
|
||||
|
||||
function add() {
|
||||
if (!$this->Session->check('User'))
|
||||
$this->redirect('/users/login');
|
||||
|
||||
$this->pageTitle = 'Create Party';
|
||||
$this->set('current', 'create');
|
||||
$this->set('map', 'mapInit()');
|
||||
|
||||
if(empty($this->data)) {
|
||||
$this->set('utz', $_SESSION['User']['tz']);
|
||||
$this->render();
|
||||
}
|
||||
|
||||
else {
|
||||
$temp = array('lat' => $this->data['Party']['lat'],
|
||||
'long' => $this->data['Party']['long'],
|
||||
'tz' => $this->data['Party']['tz']);
|
||||
|
||||
$clean = new Sanitize();
|
||||
$clean->cleanArray($this->data);
|
||||
|
||||
$this->data['Party']['lat'] = floatval($temp['lat']);
|
||||
$this->data['Party']['long'] = floatval($temp['long']);
|
||||
$this->data['Party']['tz'] = intval($temp['tz']);
|
||||
$this->set('utz', $this->data['Party']['tz']);
|
||||
|
||||
// Convert the selected time to GMT
|
||||
$secoffset = ($this->data['Party']['tz'] * 60 * 60);
|
||||
$offsetdate = gmmktime($this->data['Party']['hour_hour'],
|
||||
$this->data['Party']['minute_min'],
|
||||
0,
|
||||
$this->data['Party']['month_hour'],
|
||||
$this->data['Party']['day_day'],
|
||||
$this->data['Party']['year_year']);
|
||||
$this->data['Party']['date'] = ($offsetdate + $secoffset);
|
||||
$this->data['Party']['duration'] = intval($this->data['Party']['duration']);
|
||||
|
||||
$this->data['Party']['invitecode'] = $this->Hash->keygen(10);
|
||||
$this->data['Party']['owner'] = $_SESSION['User']['id'];
|
||||
|
||||
if (!preg_match("/^(http|https)\:\/\//i", $this->data['Party']['website']) &&
|
||||
!empty($this->data['Party']['website']))
|
||||
$this->Party->invalidate('website');
|
||||
|
||||
if ($this->Party->validates($this->data)) {
|
||||
if($this->Party->save($this->data)) {
|
||||
$this->Session->setFlash('Your party has been created!', 'infoFlash');
|
||||
$this->redirect('/parties/view/'.$this->Party->getLastInsertId());
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$this->Session->setFlash('Please correct the errors below.', 'errorFlash');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function edit($id) {
|
||||
$this->Party->id = $id;
|
||||
$party = $this->Party->read();
|
||||
$this->set('party', $party);
|
||||
$this->pageTitle = 'Edit Party';
|
||||
$this->set('current', 'create');
|
||||
|
||||
if (empty($_SESSION['User']['id']))
|
||||
$this->redirect('/users/login/');
|
||||
|
||||
if ($party['Party']['owner'] != $_SESSION['User']['id'])
|
||||
$this->redirect('/parties/view/'.$id);
|
||||
|
||||
else {
|
||||
if (empty($this->data)) {
|
||||
$this->data = $party;
|
||||
|
||||
$date = array('hour' => intval(date('h', $party['Party']['date'])),
|
||||
'min' => intval(date('i', $party['Party']['date'])),
|
||||
'mon' => intval(date('m', $party['Party']['date'])),
|
||||
'day' => intval(date('d', $party['Party']['date'])),
|
||||
'year' => intval(date('Y', $party['Party']['date'])),
|
||||
'tz' => $party['Party']['tz']);
|
||||
|
||||
$this->set('date', $date);
|
||||
$this->data['Party']['name'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['name']));
|
||||
$this->data['Party']['vname'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['vname']));
|
||||
$this->data['Party']['website'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['website']));
|
||||
$this->data['Party']['address'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['address']));
|
||||
$this->data['Party']['notes'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['notes']));
|
||||
$this->data['Party']['flickrusr'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['Party']['flickrusr']));
|
||||
|
||||
if (GMAP_API_KEY != null) {
|
||||
if ($this->data['Party']['lat'])
|
||||
$this->set('map', 'mapInit('.$this->data['Party']['lat'].','.$this->data['Party']['long'].','.$this->data['Party']['zoom'].')');
|
||||
else
|
||||
$this->set('map', 'mapInit()');
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$clean = new Sanitize();
|
||||
$temp = array('lat' => $clean->sql($this->data['Party']['lat']),
|
||||
'long' => $clean->sql($this->data['Party']['long']),
|
||||
'tz' => $clean->sql($this->data['Party']['tz']));
|
||||
|
||||
$clean->cleanArray($this->data);
|
||||
|
||||
$this->data['Party']['lat'] = floatval($temp['lat']);
|
||||
$this->data['Party']['long'] = floatval($temp['long']);
|
||||
$this->data['Party']['tz'] = intval($temp['tz']);
|
||||
|
||||
$secoffset = ($this->data['Party']['tz'] * 60 * 60);
|
||||
|
||||
$offsetdate = gmmktime($this->data['Party']['hour_hour'],
|
||||
$this->data['Party']['minute_min'],
|
||||
0,
|
||||
$this->data['Party']['month_hour'],
|
||||
$this->data['Party']['day_day'],
|
||||
$this->data['Party']['year_year']);
|
||||
|
||||
$this->data['Party']['date'] = ($offsetdate - $secoffset);
|
||||
$this->data['Party']['owner'] = $party['Party']['owner'];
|
||||
$this->data['Party']['duration'] = intval($this->data['Party']['duration']);
|
||||
|
||||
$date = array('hour' => intval(date('h', $party['Party']['date'])),
|
||||
'min' => intval(date('i', $party['Party']['date'])),
|
||||
'mon' => intval(date('m', $party['Party']['date'])),
|
||||
'day' => intval(date('d', $party['Party']['date'])),
|
||||
'year' => intval(date('Y', $party['Party']['date'])),
|
||||
'tz' => $party['Party']['tz']);
|
||||
$this->set('date', $date);
|
||||
|
||||
if (!preg_match("/^(http|https)\:\/\//i", $this->data['Party']['website']) &&
|
||||
!empty($this->data['Party']['website']))
|
||||
$this->Party->invalidate('website');
|
||||
|
||||
if ($this->data['Party']['flickrusr'] != $party['Party']['flickrusr']) {
|
||||
$params = array('type' => 'flickr', 'username' => $this->data['Party']['flickrusr']);
|
||||
$flick = new webServices($params);
|
||||
$this->data['Party']['flickrid'] = $flick->getFlickrId();
|
||||
}
|
||||
|
||||
if ($this->Party->validates($this->data)) {
|
||||
if ($this->Party->save($this->data)) {
|
||||
$this->Session->setFlash('Party edited successfully.', 'infoFlash');
|
||||
$this->redirect('parties/view/'.$id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function view($id = null, $page = null) {
|
||||
if ($id == 'all') {
|
||||
$this->pageTitle = 'All Parties';
|
||||
$this->set('current', 'parties');
|
||||
|
||||
//Paginate!
|
||||
$count = $this->Party->findCount();
|
||||
$pages = ceil($count/100);
|
||||
if ($page == null)
|
||||
$page = 1;
|
||||
if ($page > 1)
|
||||
$this->set('prev', $page - 1);
|
||||
if ($page < $pages)
|
||||
$this->set('next', $page + 1);
|
||||
|
||||
$deck = $this->Party->findAll(null, null, "id ASC", 100, $page);
|
||||
shuffle($deck);
|
||||
$this->set('parties', $deck);
|
||||
}
|
||||
|
||||
else if (is_numeric($id)) {
|
||||
$party = $this->Party->findById($id);
|
||||
if (empty($party['Party']['id']))
|
||||
$this->redirect('/parties/view/all');
|
||||
|
||||
$this->set('current', 'parties');
|
||||
$this->set('host', $this->Party->getHost($party['Party']['owner']));
|
||||
$this->set('party', $party);
|
||||
$this->set('isguest', $this->Party->isGuest($id, @$_SESSION['User']['id']));
|
||||
$this->pageTitle = $party['Party']['name'];
|
||||
$this->set('map', 'mapInit('.$party['Party']['lat'].','.$party['Party']['long'].
|
||||
','.$party['Party']['zoom'].',\'stationary\')');
|
||||
$this->set('guests', $this->Party->getGuests($party['Party']['id']));
|
||||
$this->set('comments', $this->Party->getComments($id));
|
||||
|
||||
if (FLICKR_API_KEY != null) {
|
||||
if ($party['Party']['useflickr'] == 1) {
|
||||
$data = array('type' => 'flickr', 'userid' => $party['Party']['flickrid'], 'randomize' => true);
|
||||
$flickr = new webServices($data);
|
||||
$photoset = $flickr->fetchPhotos(FLICKR_TAG_PREFIX.$party['Party']['id'], 15, (($party['Party']['flickrperms']) ? false : true));
|
||||
$this->set('flickr', array_slice($photoset, 0, 9));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
$this->redirect('/parties/view/all');
|
||||
}
|
||||
|
||||
function invite($id = null) {
|
||||
$this->pageTitle = "Invite a Guest";
|
||||
if (is_numeric($id)) {
|
||||
$party = $this->Party->findById($id);
|
||||
if (empty($party['Party']['id']) ||
|
||||
$party['Party']['owner'] != $_SESSION['User']['id'] ||
|
||||
$party['Party']['canceled'] == 1)
|
||||
$this->redirect('/parties/view/all');
|
||||
|
||||
else {
|
||||
$this->set('partyid', $party['Party']['id']);
|
||||
$this->set('inviteurl', APP_BASE.'/parties/invited/'.$party['Party']['invitecode']);
|
||||
|
||||
$clean = new Sanitize();
|
||||
$uid = $clean->sql($_SESSION['User']['id']);
|
||||
$email = $this->Party->query("SELECT email FROM users WHERE id = ".$uid);
|
||||
|
||||
if (!empty($this->data)) {
|
||||
if ($this->Party->validates($this->data)) {
|
||||
$message = array('from' => APP_NAME.' <'.APP_EMAIL.'>',
|
||||
'envelope' => APP_EMAIL,
|
||||
'to' => $this->data['Party']['einvite'],
|
||||
'reply' => $email[0]['users']['email'],
|
||||
'subject' => 'You\'ve been invited to '.APP_NAME.'!',
|
||||
'link' => APP_BASE.'/parties/invited/'.$party['Party']['invitecode'],
|
||||
'type' => 'invite');
|
||||
|
||||
$this->Mail->mail($message);
|
||||
$this->Mail->send();
|
||||
|
||||
$this->Session->setFlash($this->data['Party']['einvite'].' has been
|
||||
invited. You can invite another guest below or <a href="'.APP_BASE.'/parties/view/'.$id.'/">click here</a>
|
||||
to return to your party.', 'infoFlash');
|
||||
$this->data['Party']['einvite'] = null;
|
||||
}
|
||||
else {
|
||||
$this->validateErrors($this->Party);
|
||||
$this->render();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function invited($icode = null, $conf = null) {
|
||||
$this->pageTitle = "Confirm Invite";
|
||||
if ($icode == 'cancel') {
|
||||
$this->Session->delete('invite');
|
||||
$this->Session->delete('invitestep');
|
||||
$this->redirect('/');
|
||||
}
|
||||
|
||||
else {
|
||||
$clean = new Sanitize();
|
||||
$icode = $clean->sql($icode);
|
||||
$party = $this->Party->findByInvitecode($icode);
|
||||
|
||||
if (empty($party['Party']['id'])) {
|
||||
$this->Session->setFlash('Could not find a party matching that invite code, please check it and try again.', 'errorFlash');
|
||||
}
|
||||
|
||||
else {
|
||||
if (!empty($_SESSION['User']['id']) && !empty($_SESSION['invitestep']) && $conf == 'confirm') {
|
||||
$this->Party->addGuest($_SESSION['User']['id'], $_SESSION['invite']);
|
||||
$this->Session->setFlash('You have been successfully added to this party.', 'infoFlash');
|
||||
$this->redirect('/parties/view/'.$party['Party']['id']);
|
||||
}
|
||||
|
||||
else if (!empty($_SESSION['User']['id'])) {
|
||||
$this->set('confirm_only', true);
|
||||
$this->set('party', $party);
|
||||
$this->set('icode', $icode);
|
||||
$this->Session->write('invitestep', 'true');
|
||||
$this->Session->write('invite', $icode);
|
||||
}
|
||||
|
||||
else {
|
||||
$this->Session->write('invite', $icode);
|
||||
$this->set('party', $party);
|
||||
$this->set('icode', $icode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rsvp($pid) {
|
||||
if (is_numeric($pid) && isset($_SESSION['User']['id'])) {
|
||||
$party = $this->Party->findById($pid);
|
||||
if (empty($party['Party']['id'])) {
|
||||
$this->Session->setFlash('Invalid party id.', 'errorFlash');
|
||||
$this->redirect('/parties/view/all');
|
||||
}
|
||||
|
||||
else {
|
||||
if ($party['Party']['inviteonly']) {
|
||||
$this->Session->setFlash('This party invite only, you\'ll need an
|
||||
invitation from the host to join in', 'errorFlash');
|
||||
}
|
||||
|
||||
else {
|
||||
$this->Party->rsvp($pid, $_SESSION['User']['id']);
|
||||
$this->Session->setFlash('You have been successfully added to this party.', 'infoFlash');
|
||||
$this->redirect('/parties/view/'.$pid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
$this->redirect('/parties/view/all');
|
||||
}
|
||||
|
||||
function unrsvp($pid) {
|
||||
if (is_numeric($pid) && isset($_SESSION['User']['id'])) {
|
||||
$party = $this->Party->findById($pid);
|
||||
if (empty($party['Party']['id'])) {
|
||||
$this->Session->setFlash('Invalid party id.', 'errorFlash');
|
||||
$this->redirect('/parties/view/all');
|
||||
}
|
||||
|
||||
else {
|
||||
$this->Party->unrsvp($pid, $_SESSION['User']['id']);
|
||||
$this->Session->setFlash('You have been successfully removed from this party.', 'infoFlash');
|
||||
$this->redirect('/parties/view/'.$pid);
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
$this->redirect('/parties/view/all');
|
||||
}
|
||||
|
||||
function cancel($pid) {
|
||||
$this->pageTitle = "Cancel Party";
|
||||
if (!is_numeric($pid) || !isset($_SESSION['User']['id']))
|
||||
$this->redirect('/');
|
||||
|
||||
else
|
||||
$this->set('pid', $pid);
|
||||
|
||||
$party = $this->Party->findById($pid);
|
||||
if ($_SESSION['User']['id'] != $party['Party']['owner'])
|
||||
die();
|
||||
|
||||
if (!empty($this->data) && $_SESSION['User']['id'] == $party['Party']['owner']) {
|
||||
if ($this->data['Party']['confcancel'] == 1) {
|
||||
$guests = $this->Party->getGuests($pid);
|
||||
$guest_count = count($guests);
|
||||
|
||||
foreach($guests as $guest) {
|
||||
$message = array('from' => APP_NAME.' <'.APP_EMAIL.'>',
|
||||
'envelope' => APP_EMAIL,
|
||||
'to' => $guest['users']['email'],
|
||||
'reply' => $_SESSION['User']['email'],
|
||||
'subject' => 'Party Cancellation Notice',
|
||||
'link' => APP_BASE.'/parties/view/'.$pid,
|
||||
'type' => 'cancel');
|
||||
|
||||
$this->Mail->mail($message);
|
||||
$this->Mail->send();
|
||||
}
|
||||
|
||||
$this->Party->query("DELETE FROM guests WHERE pid = $pid LIMIT $guest_count");
|
||||
$this->Party->query("UPDATE parties SET canceled = '1', invitecode = '0' WHERE parties.id = $pid LIMIT 1");
|
||||
|
||||
$this->redirect('/parties/view/'.$pid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function uncancel($pid) {
|
||||
if (!is_numeric($pid) || !isset($_SESSION['User']['id']))
|
||||
$this->redirect('/');
|
||||
|
||||
$party = $this->Party->findById($pid);
|
||||
if ($_SESSION['User']['id'] != $party['Party']['owner'])
|
||||
die();
|
||||
|
||||
$key = $this->Hash->keygen(10);
|
||||
$this->Party->query("UPDATE parties SET canceled = '0', invitecode = '$key' WHERE parties.id = $pid LIMIT 1");
|
||||
$this->redirect('/parties/view/'.$pid);
|
||||
}
|
||||
|
||||
function js($type = null, $data = null) {
|
||||
$this->layout = 'ajax';
|
||||
|
||||
if ($type == 'html') {
|
||||
header('Content-type: text/plain');
|
||||
$party = $this->Party->findById($data);
|
||||
$this->set('party', $party);
|
||||
}
|
||||
|
||||
else {
|
||||
header('Content-type: text/javascript');
|
||||
$parties = $this->Party->findAll();
|
||||
$this->set('parties', $parties);
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,437 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
uses('sanitize');
|
||||
class UsersController extends AppController {
|
||||
var $name = 'Users';
|
||||
var $uses = array('User', 'Party');
|
||||
var $helpers = array('Html', 'Form');
|
||||
var $components = array('Security', 'Hash', 'Mail');
|
||||
|
||||
function index() {
|
||||
if (!isset($_SESSION['User'])) {
|
||||
$this->redirect('/users/login');
|
||||
}
|
||||
|
||||
$this->pageTitle = 'My Profile';
|
||||
|
||||
$user = $this->Session->read('User');
|
||||
$this->set('parties', $this->User->memberOf($user['id']));
|
||||
$this->set('hparties', $this->User->hostOf($user['id']));
|
||||
$this->set('iparties', $this->User->invitedTo($user['id']));
|
||||
}
|
||||
|
||||
function register() {
|
||||
$this->pageTitle = 'Register';
|
||||
$this->set('map', 'mapInit()');
|
||||
|
||||
if(empty($this->data)) {
|
||||
$this->set('utz', '0');
|
||||
$this->render();
|
||||
}
|
||||
|
||||
else {
|
||||
if ($this->User->findByEmail($this->data['User']['email']))
|
||||
$this->User->invalidate('email');
|
||||
|
||||
if ($this->data['User']['email'] !== $this->data['User']['confemail'])
|
||||
$this->User->invalidate('confemail');
|
||||
|
||||
if (!preg_match("/^(http|https)\:\/\//i", $this->data['User']['website']) &&
|
||||
!empty($this->data['User']['website']))
|
||||
$this->User->invalidate('website');
|
||||
|
||||
if ($this->data['User']['password'] !== $this->data['User']['confpass'])
|
||||
$this->User->invalidate('confpass');
|
||||
|
||||
if (empty($this->data['User']['password']) || empty($this->data['User']['confpass']))
|
||||
$this->User->invalidate('password');
|
||||
|
||||
// Repopulate the timezone with right value in case there's a validation error
|
||||
$this->set('utz', $this->data['User']['tz']);
|
||||
|
||||
if ($this->User->validates($this->data)) {
|
||||
$clean = new Sanitize();
|
||||
// Generate and set the password, salt and activation key
|
||||
$pass = $this->Hash->password($this->data['User']['password'],
|
||||
$this->data['User']['email']);
|
||||
$this->data['User']['active'] = $this->Hash->keygen(10);
|
||||
$this->data['User']['password'] = $pass['pass'];
|
||||
$this->data['User']['salt'] = $pass['salt'];
|
||||
|
||||
// Save a few fields from the wrath of cleanArray()
|
||||
$temp = array('lat' => $this->data['User']['lat'],
|
||||
'long' => $this->data['User']['long'],
|
||||
'tz' => $this->data['User']['tz'],
|
||||
'email' => $this->data['User']['email']);
|
||||
// Scrub 'a dub
|
||||
$clean->cleanArray($this->data);
|
||||
$this->data['User']['email'] = $temp['email'];
|
||||
$this->data['User']['long'] = floatval($temp['long']);
|
||||
$this->data['User']['lat'] = floatval($temp['lat']);
|
||||
$this->data['User']['tz'] = intval($temp['tz']);
|
||||
$this->data['User']['role'] = 0;
|
||||
|
||||
if($this->User->save($this->data)) {
|
||||
$message = array('from' => APP_NAME.' <'.APP_EMAIL.'>',
|
||||
'envelope' => APP_EMAIL,
|
||||
'to' => $this->data['User']['email'],
|
||||
'subject' => 'Your '.APP_NAME.' Registration',
|
||||
'link' => APP_BASE.'/users/activate/'.$this->data['User']['active'],
|
||||
'type' => 'act');
|
||||
$this->Mail->mail($message);
|
||||
$this->Mail->send();
|
||||
|
||||
if (isset($_SESSION['invite']))
|
||||
$this->Party->addGuest($this->User->getLastInsertId(), $_SESSION['invite']);
|
||||
|
||||
$this->Session->setFlash('Thank you for registering! To login, you\'ll
|
||||
need to activate your account. Please check
|
||||
your email for your activation link.', 'infoFlash');
|
||||
$this->redirect('/users/login');
|
||||
}
|
||||
|
||||
else {
|
||||
$this->data['User']['password'] = null;
|
||||
$this->data['User']['confpass'] = null;
|
||||
$this->render();
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$this->data['User']['password'] = null;
|
||||
$this->data['User']['confpass'] = null;
|
||||
$this->Session->setFlash('There was an error in your submission. Please
|
||||
correct the errors shown below and try again.',
|
||||
'errorFlash');
|
||||
$this->render();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function edit() {
|
||||
if (!isset($_SESSION['User'])) {
|
||||
$this->redirect('/users/login');
|
||||
}
|
||||
$this->set('error', false);
|
||||
$this->pageTitle = 'Edit My Account';
|
||||
if (empty($this->data)) {
|
||||
$this->User->id = $_SESSION['User']['id'];
|
||||
$this->data = $this->User->read();
|
||||
$this->data['User']['password'] = "";
|
||||
$this->set('utz', $this->data['User']['tz']);
|
||||
|
||||
$this->data['User']['name'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['User']['name']));
|
||||
$this->data['User']['website'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['User']['website']));
|
||||
$this->data['User']['location'] = preg_replace("/&#(\d{2,5});/e",
|
||||
'$this->Unicode->unicode2utf(${1})',
|
||||
html_entity_decode($this->data['User']['location']));
|
||||
|
||||
if (GMAP_API_KEY != null) {
|
||||
if ($this->data['User']['lat'])
|
||||
$this->set('map', 'mapInit('.$this->data['User']['lat'].','.$this->data['User']['long'].','.$this->data['User']['zoom'].')');
|
||||
else
|
||||
$this->set('map', 'mapInit()');
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$user = $this->User->findById($_SESSION['User']['id']);
|
||||
$this->User->id = $user['User']['id'];
|
||||
$this->set('utz', $user['User']['tz']);
|
||||
|
||||
$clean = new Sanitize();
|
||||
$temp = array('password' => $this->data['User']['password'],
|
||||
'confpassword' => $this->data['User']['confpassword'],
|
||||
'lat' => $clean->sql($this->data['User']['lat']),
|
||||
'long' => $clean->sql($this->data['User']['long']),
|
||||
'tz' => $clean->sql($this->data['User']['tz']));
|
||||
//Nuke everything else
|
||||
$clean->cleanArray($this->data);
|
||||
|
||||
$this->data['User']['email'] = $user['User']['email'];
|
||||
$this->data['User']['password'] = $temp['password'];
|
||||
$this->data['User']['confpassword'] = $temp['confpassword'];
|
||||
$this->data['User']['lat'] = floatval($temp['lat']);
|
||||
$this->data['User']['long'] = floatval($temp['long']);
|
||||
$this->data['User']['tz'] = intval($temp['tz']);
|
||||
$this->data['User']['role'] = $user['User']['role'];
|
||||
|
||||
if (!preg_match("/^(http|https)\:\/\//i", $this->data['User']['website']) &&
|
||||
!empty($this->data['User']['website']))
|
||||
$this->User->invalidate('website');
|
||||
|
||||
if ($this->data['User']['password'] === $this->data['User']['confpassword'] &&
|
||||
!empty($this->data['User']['password'])) {
|
||||
$pass = $this->Hash->password($this->data['User']['password'], $user['User']['email']);
|
||||
$this->data['User']['password'] = $pass['pass'];
|
||||
$this->data['User']['salt'] = $pass['salt'];
|
||||
}
|
||||
|
||||
else if (empty($this->data['User']['password']) && empty($this->data['User']['confpassword'])) {
|
||||
$this->data['User']['password'] = $user['User']['password'];
|
||||
$this->data['User']['salt'] = $user['User']['salt'];
|
||||
}
|
||||
|
||||
else {
|
||||
$this->set('error', true);
|
||||
$this->User->invalidate('password');
|
||||
$this->User->invalidate('confpassword');
|
||||
}
|
||||
|
||||
if ($this->User->validates($this->data)) {
|
||||
if ($this->User->save($this->data)) {
|
||||
$sess = $this->User->findById($user['User']['id']);
|
||||
$this->redirect('/users/');
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$this->validateErrors($this->User);
|
||||
$this->data['User']['password'] = null;
|
||||
$this->data['User']['confpassword'] = null;
|
||||
$this->render();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function login() {
|
||||
if ($this->Session->Check('User'))
|
||||
$this->redirect('/users');
|
||||
|
||||
$this->pageTitle = 'Login';
|
||||
if (!empty($this->data)) {
|
||||
if (empty($this->data['User']['email']) || empty($this->data['User']['password']))
|
||||
$this->render();
|
||||
|
||||
$user = $this->User->findByEmail($this->data['User']['email']);
|
||||
$pass = sha1($this->data['User']['password'].$user['User']['salt']);
|
||||
|
||||
if ($user['User']['password'] == $pass) {
|
||||
if ($user['User']['active'] != 1) {
|
||||
$this->Session->setFlash('Your account hasn\'t been activated yet. Please
|
||||
check your email (including junk/spam folders)
|
||||
for your activation link, or click <a href="'
|
||||
.APP_BASE.'/users/recover/activate">here</a> to
|
||||
resend your activation details.', 'infoFlash');
|
||||
$this->render();
|
||||
}
|
||||
|
||||
else {
|
||||
if (isset($_SESSION['invite']))
|
||||
$this->Party->addGuest($user['User']['id'], $_SESSION['invite']);
|
||||
|
||||
$this->Session->write('User', $user['User']);
|
||||
$this->redirect('/users/');
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$this->Session->setFlash('The email address and password you supplied do
|
||||
not match. Please try again.', 'errorFlash');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function view($id = null) {
|
||||
if (!is_numeric($id))
|
||||
$this->redirect('/');
|
||||
|
||||
else {
|
||||
$user = $this->User->findById($id);
|
||||
$this->pageTitle = $user['User']['name'];
|
||||
$this->set('user', $user);
|
||||
if (GMAP_API_KEY != null && !empty($user['User']['lat']))
|
||||
$this->set('map', 'mapInit('.$user['User']['lat'].','.$user['User']['long'].','.$user['User']['zoom'].',\'stationary\');');
|
||||
|
||||
$this->Party->unbindModel(array('hasMany' => array('Comment')));
|
||||
$this->set('hparties', $this->User->hostOf($id));
|
||||
$att = $this->User->query('SELECT parties.id, parties.name
|
||||
FROM parties
|
||||
LEFT JOIN guests
|
||||
ON parties.id = guests.pid
|
||||
WHERE guests.uid = '.$id);
|
||||
$this->set('parties', $att);
|
||||
}
|
||||
}
|
||||
|
||||
function logout() {
|
||||
$this->Session->destroy();
|
||||
$this->Session->delete('User');
|
||||
$this->redirect('/');
|
||||
}
|
||||
|
||||
function recover($aType = null, $aCode = null, $aId = null) {
|
||||
switch ($aType) {
|
||||
case "password":
|
||||
$this->pageTitle = "Password Recovery";
|
||||
$this->set('atitle', 'Password Recovery');
|
||||
$this->set('hideInput', false);
|
||||
$this->set('url', 'password');
|
||||
|
||||
if (!empty($this->data)) {
|
||||
$user = $this->User->findByEmail($this->data['User']['email']);
|
||||
|
||||
if (!isset($user['User']['email'])) {
|
||||
$this->Session->setFlash('Could not find a user with that email address. Please check it and try again.', 'errorFlash');
|
||||
$this->render();
|
||||
}
|
||||
else {
|
||||
$code = md5($user['User']['salt'].$user['User']['email'].$user['User']['password']);
|
||||
$message = array('from' => APP_NAME.' <'.APP_EMAIL.'>',
|
||||
'envelope' => APP_EMAIL,
|
||||
'to' => $user['User']['email'],
|
||||
'subject' => APP_NAME.' Password Request',
|
||||
'link' => APP_BASE.'/users/recover/password/'.$code.'/'.$user['User']['id'],
|
||||
'type' => 'prec');
|
||||
|
||||
$this->Mail->mail($message);
|
||||
$this->Mail->send();
|
||||
$this->Session->setFlash('An email has been sent to '.$user['User']['email'].' with reset instructions.', 'errorFlash');
|
||||
$this->redirect('users/login');
|
||||
}
|
||||
}
|
||||
|
||||
if ($aCode !== null && $aId !== null) {
|
||||
$this->set('hideInput', true);
|
||||
$this->set('reset', false);
|
||||
$user = $this->User->findById($aId);
|
||||
|
||||
if (!$user) {
|
||||
$this->Session->setFlash('Invalid request. Please check the URL and try again.', 'errorFlash');
|
||||
$this->render();
|
||||
}
|
||||
|
||||
if ($aCode == md5($user['User']['salt'].$user['User']['email'].$user['User']['password'])) {
|
||||
$this->set('reset', true);
|
||||
$this->set('code', $aCode."/".$aId);
|
||||
$this->render();
|
||||
}
|
||||
|
||||
else {
|
||||
$this->Session->setFlash('Invalid request. Please check the URL and try again.', 'errorFlash');
|
||||
$this->render();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "activate":
|
||||
$this->pageTitle = 'Resend Activation Code';
|
||||
$this->set('atitle', 'Resend Activation Code');
|
||||
$this->set('hideInput', false);
|
||||
$this->set('url', 'activate');
|
||||
|
||||
if (!empty($this->data)) {
|
||||
$user = $this->User->findByEmail($this->data['User']['email']);
|
||||
|
||||
if (!$user) {
|
||||
$this->Session->setFlash('Could not find a user with that email address. Please check it and try again.', 'errorFlash');
|
||||
$this->render();
|
||||
}
|
||||
|
||||
if ($user['User']['active'] == 1)
|
||||
$this->redirect('/users/login');
|
||||
|
||||
else {
|
||||
$message = array('from' => APP_NAME.' <'.APP_EMAIL.'>',
|
||||
'envelope' => APP_EMAIL,
|
||||
'to' => $this->data['User']['email'],
|
||||
'subject' => 'Your '.APP_NAME.' Registration',
|
||||
'link' => APP_BASE.'/users/activate/'.$user['User']['active'],
|
||||
'type' => 'act');
|
||||
$this->Mail->mail($message);
|
||||
$this->Mail->send();
|
||||
$this->Session->setFlash('Your activation code has been resent.', 'infoFlash');
|
||||
$this->redirect('users/login');
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "reset":
|
||||
if ($aCode !== null && $aId !== null) {
|
||||
if (!empty($this->data)) {
|
||||
$user = $this->User->findById($aId);
|
||||
if (!$user) {
|
||||
$this->Session->setFlash('Invalid request. Please check the URL and try again.', 'errorFlash');
|
||||
$this->render();
|
||||
}
|
||||
|
||||
if ($aCode == md5($user['User']['salt'].$user['User']['email'].$user['User']['password'])) {
|
||||
$string = $user['User']['email'] . uniqid(rand(), true) . $this->data['User']['password'];
|
||||
$this->data['User']['salt'] = substr(md5($string), 0, 9);
|
||||
$this->data['User']['password'] = sha1($this->data['User']['password'] . $this->data['User']['salt']);
|
||||
$this->data['User']['id'] = $aId;
|
||||
if ($this->User->save($this->data)) {
|
||||
$this->Session->setFlash('Your password has been reset.', 'infoFlash');
|
||||
$this->redirect('/users/login');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->redirect('/');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function activate($aKey = null) {
|
||||
if ($aKey == null)
|
||||
$this->redirect('/');
|
||||
|
||||
else {
|
||||
$user = $this->User->findByActive($aKey);
|
||||
if (empty($user['User']['id'])) {
|
||||
$this->Session->setFlash('Your account could not be activated. Please make
|
||||
sure the URL entered is correct and try again.', 'errorFlash');
|
||||
$this->redirect('/users/login');
|
||||
}
|
||||
|
||||
else {
|
||||
$this->data = $user;
|
||||
$this->data['User']['active'] = 1;
|
||||
|
||||
if ($this->User->save($this->data)) {
|
||||
$this->Session->setFlash('Your account was successfully activated.', 'infoFlash');
|
||||
$this->redirect('/users/login');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id: index.php,v 1.3 2006-10-08 03:39:21 reed%reedloden.com Exp $ */
|
||||
/**
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright (c) 2006, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.app
|
||||
* @since CakePHP v 0.10.0.1076
|
||||
* @version $Revision: 1.3 $
|
||||
* @modifiedby $LastChangedBy: phpnut $
|
||||
* @lastmodified $Date: 2006-10-08 03:39:21 $
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
require 'webroot' . DIRECTORY_SEPARATOR . 'index.php';
|
||||
?>
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class Admin extends AppModel {
|
||||
var $name = 'Admin';
|
||||
var $useTable = "parties";
|
||||
}
|
||||
?>
|
||||
@@ -1,61 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class Comment extends AppModel {
|
||||
var $name = 'Comment';
|
||||
|
||||
var $validate = array(
|
||||
'text' => "/^\S/"
|
||||
);
|
||||
|
||||
function canComment($pid, $uid) {
|
||||
$status = $this->query('SELECT owner, guestcomments FROM parties WHERE id = '.$pid);
|
||||
$guest = null;
|
||||
if ($status[0]['parties']['owner'] != $uid)
|
||||
$guest = $this->query('SELECT uid FROM guests WHERE pid = '.$pid.' AND uid = '.$uid);
|
||||
|
||||
if ($status[0]['parties']['guestcomments'] == 1) {
|
||||
if (!empty($guest[0]['guests']['uid']) || $uid == $status[0]['parties']['owner'])
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class Feed extends AppModel {
|
||||
var $name = 'Feeds';
|
||||
var $useTable = "parties";
|
||||
|
||||
function getComments($aParty) {
|
||||
$rv = $this->query("SELECT * FROM comments WHERE assoc = ".$aParty." LIMIT 10");
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function getUserCount() {
|
||||
$rv = $this->query("SELECT COUNT(*) FROM users");
|
||||
return $rv[0][0]['COUNT(*)'];
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class Guest extends AppModel {
|
||||
var $name = 'Guest';
|
||||
}
|
||||
?>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class Page extends AppModel {
|
||||
var $name = 'Page';
|
||||
var $useTable = 'parties';
|
||||
|
||||
function getUsers() {
|
||||
$rv = $this->query("SELECT COUNT(*) FROM users");
|
||||
return $rv[0][0]["COUNT(*)"];
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,110 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class Party extends AppModel {
|
||||
var $name = 'Party';
|
||||
var $validate = array(
|
||||
'name' => "/^\S/",
|
||||
'einvite' => VALID_EMAIL,
|
||||
'duration' => VALID_NUMBER
|
||||
);
|
||||
|
||||
function getComments($pid) {
|
||||
$rv = $this->query("SELECT users.id AS uid, users.name,
|
||||
comments.id AS cid, comments.time, comments.text
|
||||
FROM users, parties, comments
|
||||
WHERE comments.assoc = ".$pid."
|
||||
AND users.id = comments.owner
|
||||
AND parties.id = ".$pid."
|
||||
ORDER BY cid ASC");
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function getHost($uid) {
|
||||
$rv = $this->query("SELECT name FROM users WHERE id = ".$uid);
|
||||
return @$rv[0]['users']['name'];
|
||||
}
|
||||
|
||||
function isGuest($pid, $uid) {
|
||||
$rv = $this->query('SELECT id FROM guests WHERE uid = '.$uid.' AND pid = '.$pid);
|
||||
if (!empty($rv[0]['guests']['id']))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function getGuests($pid) {
|
||||
$rv = $this->query("SELECT users.id, users.name, users.email, guests.invited
|
||||
FROM users
|
||||
LEFT JOIN guests
|
||||
ON users.id = guests.uid
|
||||
WHERE guests.pid = ".$pid);
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function rsvp($pid, $uid) {
|
||||
$party = $this->findById($pid);
|
||||
if (!empty($party['Party']['id']) && !$this->isGuest($pid, $uid)) {
|
||||
$this->query("INSERT INTO guests (id, pid, uid, invited)
|
||||
VALUES (NULL, ".$party['Party']['id'].", ".$uid.", 0)");
|
||||
}
|
||||
}
|
||||
|
||||
function unrsvp($pid, $uid) {
|
||||
$party = $this->findById($pid);
|
||||
if (!empty($party['Party']['id']) && $this->isGuest($pid, $uid)) {
|
||||
$this->query('DELETE FROM guests WHERE uid = '.$uid.' AND pid = '.$pid);
|
||||
}
|
||||
}
|
||||
|
||||
function addGuest($uid, $icode) {
|
||||
$party = $this->findByInvitecode($icode);
|
||||
if (!empty($party['Party']['id'])) {
|
||||
$check = $this->query('SELECT uid FROM guests WHERE uid = '.$uid.'
|
||||
AND pid = '.$party['Party']['id']);
|
||||
if (empty($check[0]['guests']['uid']) && $uid != $party['Party']['owner']) {
|
||||
$this->query("INSERT INTO guests (id, pid, uid, invited)
|
||||
VALUES (NULL, ".$party['Party']['id'].", ".$uid.", 1)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function findByInvitecode($icode) {
|
||||
$rv = $this->query('SELECT * FROM parties AS Party WHERE invitecode = "'.$icode.'" LIMIT 1');
|
||||
return @$rv[0];
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class User extends AppModel {
|
||||
var $name = 'User';
|
||||
var $validate = array(
|
||||
'email' => VALID_EMAIL,
|
||||
'name' => "/^\S/"
|
||||
);
|
||||
|
||||
function memberOf($uid) {
|
||||
$rv = $this->query('SELECT parties.id, parties.name FROM guests, parties WHERE guests.uid = '.$uid.' AND parties.id = guests.pid');
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function hostOf($uid) {
|
||||
$rv = $this->query('SELECT id, name FROM parties WHERE owner = '.$uid);
|
||||
return $rv;
|
||||
}
|
||||
|
||||
function invitedTo($uid) {
|
||||
$rv = $this->query('SELECT parties.id, parties.name FROM guests, parties WHERE guests.uid = '.$uid.' AND parties.id = guests.pid AND guests.invited = 1');
|
||||
return $rv;
|
||||
}
|
||||
}
|
||||
?>
|
||||
199
mozilla/webtools/partytool/vendors/webServices.php
vendored
199
mozilla/webtools/partytool/vendors/webServices.php
vendored
@@ -1,199 +0,0 @@
|
||||
<?php
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Party Tool
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Ryan Flint <rflint@dslr.net>
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
class webServices {
|
||||
|
||||
var $userid;
|
||||
var $host;
|
||||
var $randomize;
|
||||
|
||||
function webServices($data) {
|
||||
switch ($data['type']) {
|
||||
case "flickr":
|
||||
$this->host = "api.flickr.com";
|
||||
|
||||
if (array_key_exists('userid', $data))
|
||||
$this->userid = $data['userid'];
|
||||
|
||||
if (array_key_exists('randomize', $data))
|
||||
$this->randomize = $data['randomize'];
|
||||
|
||||
if (array_key_exists('username', $data)) {
|
||||
$head = "GET /services/rest/?method=flickr.people.findByUsername&api_key=".FLICKR_API_KEY."&username=".$data['username']." HTTP/1.1\r\n";
|
||||
$head .= "Host: ".$this->host."\r\n";
|
||||
$head .= "Connection: Close\r\n\r\n";
|
||||
|
||||
if ($results = $this->fetchResults($head)) {
|
||||
preg_match('/nsid=\"(.*)\"/', $results, $matches);
|
||||
if ($matches[1]) {
|
||||
$this->userid = $matches[1];
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "gsuggest":
|
||||
$this->host = "api.google.com";
|
||||
break;
|
||||
|
||||
case "geocode":
|
||||
$this->host = "maps.google.com";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function getFlickrId() {
|
||||
return $this->userid;
|
||||
}
|
||||
|
||||
function fetchPhotos($tags, $num_results, $single_user) {
|
||||
$params = array('api_key' => FLICKR_API_KEY,
|
||||
'method' => 'flickr.photos.search',
|
||||
'format' => 'php_serial',
|
||||
'tags' => $tags,
|
||||
'per_page' => $num_results);
|
||||
|
||||
if ($single_user)
|
||||
$params['user_id'] = $this->userid;
|
||||
|
||||
$encoded_params = array();
|
||||
foreach ($params as $k => $v)
|
||||
$encoded_params[] = urlencode($k).'='.urlencode($v);
|
||||
|
||||
$head = 'GET /services/rest/?'.implode('&', $encoded_params)." HTTP/1.1 \r\n";
|
||||
$head .= 'Host: '.$this->host."\r\n";
|
||||
$head .= "Connection: Close\r\n\r\n";
|
||||
|
||||
if ($results = $this->fetchResults($head)) {
|
||||
$resp = split("\r\n\r\n", $results);
|
||||
$data = unserialize($resp[1]);
|
||||
|
||||
if ($data['stat'] == 'ok') {
|
||||
$arr = array();
|
||||
for ($i = 0; $i < count($data['photos']['photo']); $i++) {
|
||||
$p = $data['photos']['photo'][$i];
|
||||
$arr[$i] = array('id' => $p['id'],
|
||||
'owner' => $p['owner'],
|
||||
'secret' => $p['secret'],
|
||||
'server' => $p['server'],
|
||||
'farm' => $p['farm'],
|
||||
'title' => $p['title']);
|
||||
}
|
||||
|
||||
if ($this->randomize) {
|
||||
// Randomize the results
|
||||
shuffle($arr);
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
function GSuggest($phrase) {
|
||||
$soapy = '<?xml version=\'1.0\' encoding=\'UTF-8\'?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
|
||||
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
|
||||
<SOAP-ENV:Body>
|
||||
<doSpellingSuggestion xmlns="urn:GoogleSearch">
|
||||
<key xsi:type="xsd:string">'.GSEARCH_API_KEY.'</key>
|
||||
<phrase xsi:type="xsd:string">'.$phrase.'</phrase>
|
||||
</doSpellingSuggestion>
|
||||
</SOAP-ENV:Body>
|
||||
</SOAP-ENV:Envelope>';
|
||||
|
||||
$head = "POST /search/beta2 HTTP/1.1\r\n";
|
||||
$head .= "Host: api.google.com\r\n";
|
||||
$head .= "MessageType: CALL\r\n";
|
||||
$head .= "Content-type: text/xml\r\n";
|
||||
$head .= "Content-length: ".strlen($soapy)."\r\n";
|
||||
$head .= "Connection: Close\r\n\r\n";
|
||||
$head .= $soapy;
|
||||
|
||||
if ($results = $this->fetchResults($head)) {
|
||||
if (preg_match('/return xsi:type="xsd:string">(.*)</', $results, $matches))
|
||||
return $matches[1];
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function geocode($query) {
|
||||
$head = "GET /maps/geo?q=".urlencode($query)."&output=xml&key=".GMAP_API_KEY." HTTP/1.1\r\n";
|
||||
$head .= "Host: maps.google.com\r\n";
|
||||
$head .= "Connection: Close\r\n\r\n";
|
||||
|
||||
if ($results = $this->fetchResults($head)) {
|
||||
if (stristr($results, '<code>200</code>')) {
|
||||
preg_match('/coordinates>(.*)</', $results, $matches);
|
||||
$ll = explode(',', $matches[1]);
|
||||
$rv = array('lat' => $ll[1], 'lng' => $ll[0]);
|
||||
return $rv;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function fetchResults($headers) {
|
||||
$fs = fsockopen($this->host, 80, $errno, $errstr, 30);
|
||||
if (!$fs)
|
||||
return 0;
|
||||
|
||||
else {
|
||||
fwrite($fs, $headers);
|
||||
stream_set_timeout($fs, 2);
|
||||
|
||||
$buffer = null;
|
||||
while (!feof($fs))
|
||||
$buffer .= fgets($fs, 128);
|
||||
|
||||
fclose($fs);
|
||||
|
||||
return $buffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,18 +0,0 @@
|
||||
<h1>Comments</h1>
|
||||
<p>Switch view to: <a href="<?php echo $html->url('/admin/'); ?>">Parties»</a> <a href="<?php echo $html->url('/admin/users'); ?>">Users»</a></p>
|
||||
<table>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>Text</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php foreach($comments as $comment): ?>
|
||||
<tr>
|
||||
<td><a href="<?php echo $html->url('/parties/view/'.$comment['Comment']['assoc'].'#c'.$comment['Comment']['id']); ?>"><?php echo $comment['Comment']['id']; ?></a></td>
|
||||
<td><?php echo $comment['Comment']['text']; ?></td>
|
||||
<td><a href="<?php echo $html->url('/admin/edit/comment/'.$comment['Comment']['id']); ?>">Edit</a></td>
|
||||
<td><a href="<?php echo $html->url('/admin/delete/comment/'.$comment['Comment']['id']); ?>" onclick="return confirm('Delete comment <?php echo $comment['Comment']['id']; ?>?')">Delete</a></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
@@ -1,128 +0,0 @@
|
||||
<?php if (isset($user)): ?>
|
||||
<h1><?php echo $user['User']['name'].' (<a href="'.$html->url('/users/view/'.$user['User']['id']).'">'.$user['User']['id']; ?></a>)</h1>
|
||||
<form class="fxform" action="<?php echo $html->url('/admin/edit/user/'.$user['User']['id']); ?>" method="post">
|
||||
<div>
|
||||
<label for="UserName" class="label-large">Name:</label>
|
||||
<?php echo $html->input('User/name', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserRole" class="label-large">Admin privileges:</label>
|
||||
<?php echo $html->checkbox('User/role'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserEmail" class="label-large">Email address:</label>
|
||||
<?php echo $html->input('User/email', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserWebsite" class="label-large">Website:</label>
|
||||
<?php echo $html->input('User/website', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserActive" class="label-large">Activation code:</label>
|
||||
<?php echo $html->input('User/active', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="location" class="label-large">Location:</label>
|
||||
<?php echo $html->input('User/location', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserShowemail" class="label-large">Show email:</label>
|
||||
<?php echo $html->checkbox('User/showemail'); ?><br/>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserShowloc" class="label-large">Show location:</label>
|
||||
<?php echo $html->checkbox('User/showloc'); ?><br/>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserShowmap" class="label-large">Show map:</label>
|
||||
<?php echo $html->checkbox('User/showmap'); ?><br/>
|
||||
</div>
|
||||
<?php echo $html->hidden('User/id', array('value' => $user['User']['id'])).$html->submit('Submit'); ?>
|
||||
</form>
|
||||
|
||||
<?php endif; if (isset($party)): ?>
|
||||
<h1><?php echo $party['Party']['name'].' (<a href="'.$html->url('/parties/view/'.$party['Party']['id']).'">'.$party['Party']['id']; ?></a>)</h1>
|
||||
<form class="fxform" action="<?php echo $html->url('/admin/edit/party/'.$party['Party']['id']); ?>" method="post">
|
||||
<div>
|
||||
<label for="PartyOwner" class="label-large">Party Owner:</label>
|
||||
<?php echo $html->input('Party/owner', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyName" class="label-large">Party Name:</label>
|
||||
<?php echo $html->input('Party/name', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyVname" class="label-large">Venue Name:</label>
|
||||
<?php echo $html->input('Party/vname', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyWebsite" class="label-large">Web site:</label>
|
||||
<?php echo $html->input('Party/website', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyAddress" class="label-large">Address:</label>
|
||||
<?php echo $html->input('Party/address', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyDate" class="label-large">Date:</label>
|
||||
<?php echo $html->input('Party/date', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyNotes" class="label-large">Additional Notes:</label>
|
||||
<?php echo $html->textarea('Party/notes', array('rows' => 10, 'cols' => 50)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyConfirmed" class="label-large">Time:</label>
|
||||
<?php echo $html->radio('Party/confirmed', array(0 => 'Tentative', 1 => 'Confirmed')); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyDuration" class="label-large">Duration (in hours):</label>
|
||||
<?php echo $html->input('Party/duration', array('size' => 5)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyCanceled" class="label-large">Canceled:</label>
|
||||
<?php echo $html->checkbox('Party/canceled'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyUseflickr" class="label-large">Use Flickr:</label>
|
||||
<?php echo $html->checkbox('Party/useflickr'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyFlickrperms" class="label-large">Show:</label>
|
||||
<?php echo $html->radio('Party/flickrperms', array(0 => 'Only my photos', 1 => 'Anyone\'s photos')); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyFlickrusr" class="label-large">Flickr username:</label>
|
||||
<?php echo $html->input('Party/flickrusr', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyFlickrusr" class="label-large">Flickr id:</label>
|
||||
<?php echo $html->input('Party/flickrid', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyInviteonly" class="label-large">Invite only:</label>
|
||||
<?php echo $html->checkbox('Party/inviteonly'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyGuestcomments" class="label-large">Limit comments to party guests only:</label>
|
||||
<?php echo $html->checkbox('Party/guestcomments'); ?>
|
||||
</div>
|
||||
<br/>
|
||||
<?php echo $html->hidden('Party/id', array('value' => $party['Party']['id'])).$html->submit('Submit'); ?>
|
||||
</form>
|
||||
|
||||
<?php endif; if(isset($comment)): ?>
|
||||
<h1>Comment <?php echo '<a href="'.$html->url('/parties/view/'.$comment['Comment']['assoc'].'#c'.$comment['Comment']['id']).'">#'.$comment['Comment']['id']; ?></a> by <?php echo '<a href="'.$html->url('/users/view/'.$comment['Comment']['owner']).'">'.$owner; ?></a></h1>
|
||||
<form class="fxform" action="<?php echo $html->url('/admin/edit/comment/'.$comment['Comment']['id']); ?>" method="post">
|
||||
<div>
|
||||
<label for="CommentAssoc" class="label-large">Party:</label>
|
||||
<?php echo $html->input('Comment/assoc', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="CommentText" class="label-large">Text:</label>
|
||||
<?php echo $html->textarea('Comment/text', array('rows' => 10, 'cols' => 50)); ?>
|
||||
</div>
|
||||
<?php echo $html->hidden('Comment/id', array('value' => $comment['Comment']['id'])).$html->submit('Submit'); ?>
|
||||
</form>
|
||||
|
||||
<?php endif; ?>
|
||||
@@ -1,18 +0,0 @@
|
||||
<h1>Parties</h1>
|
||||
<p>Switch view to: <a href="<?php echo $html->url('/admin/users'); ?>">Users»</a> <a href="<?php echo $html->url('/admin/comments'); ?>">Comments»</a></p>
|
||||
<table>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>Name</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php foreach($parties as $party): ?>
|
||||
<tr>
|
||||
<td><a href="<?php echo $html->url('/parties/view/'.$party['Party']['id']); ?>"><?php echo $party['Party']['id']; ?></a></td>
|
||||
<td><?php echo $party['Party']['name']; ?></td>
|
||||
<td><a href="<?php echo $html->url('/admin/edit/party/'.$party['Party']['id']); ?>">Edit</a></td>
|
||||
<td><a href="<?php echo $html->url('/admin/delete/party/'.$party['Party']['id']); ?>" onclick="return confirm('Delete party <?php echo $party['Party']['id']; ?>?')">Delete</a></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
@@ -1,18 +0,0 @@
|
||||
<h1>Users</h1>
|
||||
<p>Switch view to: <a href="<?php echo $html->url('/admin/'); ?>">Parties»</a> <a href="<?php echo $html->url('/admin/comments'); ?>">Comments»</a></p>
|
||||
<table>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>Name</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php foreach($users as $user): ?>
|
||||
<tr>
|
||||
<td><a href="<?php echo $html->url('/users/view/'.$user['User']['id']); ?>"><?php echo $user['User']['id']; ?></a></td>
|
||||
<td><?php echo $user['User']['name']; ?></td>
|
||||
<td><a href="<?php echo $html->url('/admin/edit/user/'.$user['User']['id']); ?>">Edit</a></td>
|
||||
<td><a href="<?php echo $html->url('/admin/delete/user/'.$user['User']['id']); ?>" onclick="return confirm('Delete user <?php echo $user['User']['id']; ?>?')">Delete</a></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php if(!isset($_SESSION['User'])): ?>
|
||||
<strong>Welcome, Guest!</strong>
|
||||
<a href="<?php echo $html->url('/users/login'); ?>">Login</a> | <a href="<?php echo $html->url('/users/register'); ?>">Register</a>
|
||||
<?php else: ?>
|
||||
<strong>Welcome, <?php echo $_SESSION['User']['name']; ?>!</strong>
|
||||
<a href="<?php echo $html->url('/users'); ?>">My Account</a> | <a href="<?php echo $html->url('/users/logout'); ?>">Logout</a>
|
||||
<?php endif; ?>
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<pubDate><?php echo date('r'); ?></pubDate>
|
||||
<description><?php echo APP_NAME." - Latest Comments"; ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/'.$pid); ?></link>
|
||||
<title><?php echo APP_NAME." - Latest Comments"; ?></title>
|
||||
<?php foreach($comments as $comment): ?>
|
||||
<item>
|
||||
<title><![CDATA[<?php echo substr($comment['comments']['text'], 0, 25).'...'; ?>]]></title>
|
||||
<description><?php echo $comment['comments']['text'] ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/'.$comment['comments']['assoc'].'#c'.$comment['comments']['id']); ?></link>
|
||||
</item>
|
||||
<?php endforeach; ?>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,22 +0,0 @@
|
||||
BEGIN:VCALENDAR
|
||||
X-WR-CALNAME:<?php echo APP_NAME."\n"; ?>
|
||||
X-WR-CALDESC:Upcoming Parties
|
||||
PRODID:-//MozillaPartyTool//calendar//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
<?php foreach($events as $event):
|
||||
if ($event['Feeds']['canceled']) continue; ?>
|
||||
BEGIN:VEVENT
|
||||
UID:<?php echo APP_BASE.$html->url('/parties/view/'.$event['Feeds']['id'])."\n"; ?>
|
||||
DTSTAMP:<?php echo gmdate('Ymd\This\Z', $event['Feeds']['date'])."\n"; ?>
|
||||
LOCATION:<?php echo $event['Feeds']['lat'].'\, '.$event['Feeds']['long'].'('.$event['Feeds']['address'].")\n"; ?>
|
||||
SUMMARY:<?php echo $event['Feeds']['name']."\n"; ?>
|
||||
DTSTART:<?php echo gmdate('Ymd\This', $event['Feeds']['date'])."\n"; ?>
|
||||
DURATION:PT<?php echo $event['Feeds']['duration']; ?>H
|
||||
URL:<?php echo APP_BASE.$html->url('/parties/view/'.$event['Feeds']['id'])."\n"; ?>
|
||||
STATUS:<?php echo (($event['Feeds']['confirmed'] == 1) ? "CONFIRMED" : "TENTATIVE")."\n"; ?>
|
||||
DESCRIPTION: <?php echo $event['Feeds']['name'].'\n '.$event['Feeds']['address'].'\n '.date('h:ia', $event['Feeds']['date']).'\n '.$event['Feeds']['notes'].'\n'."\n"; ?>
|
||||
END:VEVENT
|
||||
<?php endforeach; ?>
|
||||
END:VCALENDAR
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<pubDate><?php echo date('r'); ?></pubDate>
|
||||
<description><?php echo APP_NAME." - Party Count"; ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/'); ?></link>
|
||||
<title><?php echo APP_NAME." - Party Count"; ?></title>
|
||||
<item>
|
||||
<title><?php echo $count; ?></title>
|
||||
<description>Total Parties</description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/all/'); ?></link>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<pubDate><?php echo date('r'); ?></pubDate>
|
||||
<description><?php echo APP_NAME." - Latest Parties"; ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/'); ?></link>
|
||||
<title><?php echo APP_NAME." - Latest Parties"; ?></title>
|
||||
<?php foreach($latest as $party):
|
||||
if ($party['Feeds']['canceled']) continue; ?>
|
||||
<item>
|
||||
<title><?php echo $party['Feeds']['name'] ?></title>
|
||||
<description><?php echo $party['Feeds']['vname'] ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/'.$party['Feeds']['id']); ?></link>
|
||||
</item>
|
||||
<?php endforeach; ?>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php echo '<?xml version="1.0" encoding="utf-8"?>'."\n"; ?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title><?php echo $party['Feeds']['name']; ?></title>
|
||||
<id>tag:<?php echo APP_BASE; ?>,2006:/parties/view/<?php echo $party['Feeds']['id']; ?></id>
|
||||
<subtitle><?php echo APP_NAME; ?> Photostream</subtitle>
|
||||
<updated><?php echo date('Y-m-d\TH:i:s\Z'); ?></updated>
|
||||
<generator uri="http://www.screwedbydesign.com/software/partytool">Mozilla Party Tool</generator>
|
||||
|
||||
<?php foreach ($flickr as $pic): ?>
|
||||
<entry>
|
||||
<title><?php echo $pic['title']; ?></title>
|
||||
<link rel="alternate" type="text/html" href="http://www.flickr.com/photos/<?php echo $pic['owner']."/".$pic['id']."/"; ?>"/>
|
||||
<id>tag:flickr.com,2005:/photo/<?php echo $pic['id']; ?></id>
|
||||
<published><?php echo date('Y-m-d\TH:i:s\Z'); ?></published>
|
||||
<updated><?php echo date('Y-m-d\TH:i:s\Z'); ?></updated>
|
||||
<content type="html"><a href="http://www.flickr.com/photos/<?php echo $pic['owner']."/".$pic['id']."/" ?>"> <img src="http://static.flickr.com/<?php echo $pic['server']."/".$pic['id']."_".$pic['secret']."_m.jpg" ?>" title="<?php echo $pic['title']; ?>"/></a></content>
|
||||
<author>
|
||||
<name><?php echo $pic['owner']; ?></name>
|
||||
<uri>http://www.flickr.com/people/<?php echo $pic['owner']; ?>/</uri>
|
||||
</author>
|
||||
</entry>
|
||||
<?php endforeach; ?>
|
||||
</feed>
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<pubDate><?php echo date('r'); ?></pubDate>
|
||||
<description><?php echo APP_NAME." - Top Guests"; ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/all'); ?></link>
|
||||
<title><?php echo APP_NAME." - Top Guests"; ?></title>
|
||||
<?php foreach($items as $item):?>
|
||||
<item>
|
||||
<title><?php echo $item['parties']['name'].' ('.$item[0]['count'].')'; ?></title>
|
||||
<description><?php echo $item['parties']['name'].' - '.$item[0]['count'].' guest'.(($item[0]['count'] != 1) ? 's' : ''); ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/'.$item['guests']['id']); ?></link>
|
||||
</item>
|
||||
<?php endforeach; ?>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<pubDate><?php echo date('r'); ?></pubDate>
|
||||
<description><?php echo APP_NAME." - Upcoming Parties"; ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/'); ?></link>
|
||||
<title><?php echo APP_NAME." - Upcoming Parties"; ?></title>
|
||||
<?php foreach($latest as $party):
|
||||
if ($party['Feeds']['canceled']) continue; ?>
|
||||
<item>
|
||||
<title><![CDATA[<?php echo $party['Feeds']['name'] ?>]]></title>
|
||||
<description><?php echo date('Y-m-d H:i', $party['Feeds']['date']); ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/parties/view/'.$party['Feeds']['id']); ?></link>
|
||||
</item>
|
||||
<?php endforeach; ?>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<pubDate><?php echo date('r'); ?></pubDate>
|
||||
<description><?php echo APP_NAME." - Total Users"; ?></description>
|
||||
<link><?php echo APP_BASE.$html->url('/'); ?></link>
|
||||
<title><?php echo APP_NAME." - Total Users"; ?></title>
|
||||
<item>
|
||||
<title><?php echo $count; ?></title>
|
||||
<description>Total Users</description>
|
||||
<link><?php echo APP_BASE.$html->url('/'); ?></link>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><?php echo APP_NAME." - ".$title_for_layout?></title>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="<?php echo $html->url('/favicon.ico'); ?>"/>
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $html->url('/css/main.css'); ?>"/>
|
||||
<link rel="alternate" type="application/rss+xml" href="<?php echo $html->url('/feeds/latest'); ?>"/>
|
||||
</head>
|
||||
<body<?php echo (isset($map)) ? ' onload="'.$map.'" onunload="GUnload()"' : '';?>>
|
||||
<div id="container">
|
||||
<p class="skipLink"><a href="#content" accesskey="2">Skip to main content</a></p>
|
||||
<div id="mozilla-com"><a href="http://www.mozilla.com/">Visit Mozilla.com</a></div>
|
||||
<div id="header">
|
||||
<div id="key-title">
|
||||
<h1><a href="<?php echo $html->url('/'); ?>" title="Return to home page" accesskey="1"><img src="<?php echo $html->url('/img/firefox-title.png'); ?>" width="276" height="54" alt="Firefox Party"/></a></h1>
|
||||
<div id="user"><?php echo $this->renderElement('user_options'); ?></div>
|
||||
</div>
|
||||
<div id="key-menu">
|
||||
<ul id="menu-firefox">
|
||||
<li<?php echo (@$current == 'home') ? ' class="current"' : ''?>><a href="<?php echo $html->url('/'); ?>">Home</a></li>
|
||||
<li<?php echo (@$current == 'map') ? ' class="current"' : ''?>><a href="<?php echo $html->url('/parties/'); ?>">View Map</a></li>
|
||||
<li<?php echo (@$current == 'parties') ? ' class="current"' : ''?>><a href="<?php echo $html->url('/parties/view/all/'); ?>">View Parties</a></li>
|
||||
<li<?php echo (@$current == 'create') ? ' class="current"' : ''?>><a href="<?php echo $html->url('/parties/add/'); ?>">Create Party</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<?php $this->controller->Session->flash(); ?>
|
||||
|
||||
<?php echo $content_for_layout; ?>
|
||||
</div>
|
||||
<div id="footer">
|
||||
Copyright © <?php echo date('Y'); ?> Mozilla<br/>
|
||||
<a href="<?php echo $html->url('/privacy-policy'); ?>">Privacy Policy</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +0,0 @@
|
||||
<div id='flash' class='error'><?php echo $content_for_layout ?></div>
|
||||
@@ -1 +0,0 @@
|
||||
<div id='flash' class='info'><?php echo $content_for_layout ?></div>
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
$difference = $time - time();
|
||||
$days_left = floor($difference/60/60/24);
|
||||
?>
|
||||
<div id="f-left">
|
||||
<?php echo $front_text;
|
||||
if (@$_SESSION['User']['role'] == 1): ?>
|
||||
<a href="<?php echo $html->url('/pages/edit'); ?>">Edit</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div id="f-right">
|
||||
<div class="cbox">
|
||||
<span class="ctxt"><?php echo $pcount."</span><br/>".(($pcount == 1) ? ' Party' : ' Parties'); ?>
|
||||
<div class="ifeed">
|
||||
<a style="padding-right: 2px;" title="Party Calendar" href="<?php echo $html->url('/feeds/ical'); ?>"><img src="<?php echo $html->url('/img/ical.png'); ?>" alt="iCAL"/></a><a title="Party Count Feed" href="<?php echo $html->url('/feeds/'); ?>"><img src="<?php echo $html->url('/img/feed16.png'); ?>" alt="RSS"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cbox">
|
||||
<span class="ctxt"><?php echo $ucount."</span><br/>".(($ucount == 1) ? ' Partygoer' : ' Partygoers'); ?>
|
||||
<div class="cfeed">
|
||||
<a title="User Count Feed" href="<?php echo $html->url('/feeds/users/'); ?>"><img src="<?php echo $html->url('/img/feed16.png'); ?>" alt="RSS"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($days_left > 0): ?>
|
||||
<div class="cbox">
|
||||
<span class="ctxt"><?php echo $days_left."</span><br/>".(($days_left == 1) ? ' Day' : ' Days'); ?> until we party!
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div style="clear: both"></div>
|
||||
@@ -1,6 +0,0 @@
|
||||
<form action="<?php echo $html->url('/pages/edit'); ?>" method="post">
|
||||
<h1>Front Page Text</h1>
|
||||
<?php echo $html->textarea('Pages/text', array('rows' => 35, 'cols' => 80)); ?>
|
||||
<h1>Countdown Timer</h1>
|
||||
<?php echo $html->dateTimeOptionTag('Pages/date', 'YMD', 24, $selected).'<br/><br/>'.$html->submit('Submit'); ?>
|
||||
</form>
|
||||
@@ -1,42 +0,0 @@
|
||||
<h2>Mozilla Privacy Policy</h2>
|
||||
|
||||
<h3>Website Visitors</h3>
|
||||
|
||||
<p>Except as described below, the Mozilla Foundation and the Mozilla Corporation (collectively "Mozilla") do not collect or require visitors to its Web sites to furnish personally-identifying information such as names, email addresses and phone numbers. Like most Web site operators, Mozilla does collect non-personally-identifying information of the sort that web browsers and servers typically make available, such as the browser type, language preference, referring site, and date and time of each visitor request. Mozilla also collects potentially personally-identifying information like Internet Protocol (IP) addresses, which are non-personally-identifying in and of themselves but could be used in conjunction with other information to personally identify users.</p>
|
||||
|
||||
<p>Mozilla's purpose in collecting this information is to better understand how Mozilla's visitors use its Web sites. To that end, Mozilla may share potentially personally-identifying information with its employees, contractors and affiliated organizations. Mozilla may also release non-personally-identifying information about visitors, e.g. by publishing a report on Web site usage trends. Otherwise, Mozilla will not publicly release potentially personally-identifying information except under the same circumstances as Mozilla releases personally-identifying information. Those circumstances are explained in detail below.</p>
|
||||
|
||||
<h3>Community Members</h3>
|
||||
|
||||
<p>Certain members of the Mozilla community (contributors, customers, etc.) choose to interact with Mozilla in ways that require Mozilla and others to know more about them. The amount and type of information that Mozilla gathers from those members depends on the nature of the interaction. For example, members who wish to post content to certain portions of Mozilla's Web sites are asked to provide usernames that identify that content as having been posted by a particular member. Developers, by comparison, are asked to provide contact information, up to and sometimes including telephone or fax numbers, so that they can be contacted as necessary. Customers of the Mozilla store are asked to provide even more information, including billing and shipping addresses and credit card or similar information. In each case, Mozilla collects personally-identifying information only insofar as is necessary to fulfill the purpose of the community member's interaction with Mozilla.</p>
|
||||
|
||||
<p>Mozilla is an open organization that believes in sharing as much information as possible about its products, its operations and its associations. Accordingly, community members should assume - as should most folks who interact with Mozilla - that any personally-identifying information provided to Mozilla will be made available to the public. There are three broad exceptions to that rule:</p>
|
||||
|
||||
<ol>
|
||||
|
||||
<li>Mozilla does not publicly release information gathered in connection with commercial transactions (i.e., transactions involving money), including transactions conducted through the Mozilla Store.</li>
|
||||
<li>Mozilla does not make publicly available information that is used to authenticate users the publication of which would compromise the security of Mozilla's Web sites (e.g., passwords).</li>
|
||||
<li>Mozilla does not make publicly available information that it specifically promises at the time of collection to maintain in confidence.</li>
|
||||
</ol>
|
||||
|
||||
<p>Outside those three contexts, users should assume that personally-identifying information provided through Mozilla's Web sites will be made available to the public.</p>
|
||||
|
||||
<h3>Interactive Product Features</h3>
|
||||
|
||||
<p>Certain Mozilla products contain features that report, or that permit users to report, the user's usage patterns and problems - whether caused by Mozilla's software, third party software, or third-party Web sites - to Mozilla. The reports generated by these features typically include non-personally-identifying information such as the configuration of the user's computer and the code running at the time the problem occurred. Some of these features give users the option of providing personally-identifying information, though none of these features require it. Some Mozilla software features that do permit users to provide personally-identifying information advise in advance that such information will not be made publicly available. Mozilla analyzes the information provided by these interactive product features to develop a better understanding of how its products are performing and being used. It does not use the information to track the usage of its products by identifiable individuals.</p>
|
||||
|
||||
<h3>Cookies</h3>
|
||||
|
||||
<p>A cookie is a string of information that a Web site stores on a visitor's computer, and that the visitor's browser provides to the Web site each time the visitor returns. Mozilla's Web sites use cookies to help Mozilla identify and track visitors, their usage of Mozilla Web sites, and their Web site access preferences across multiple requests and visits to Mozilla's Web sites. It is possible to link cookies to personally-identifying information, thereby permitting Web site operators to track the online movements of particular individuals. Mozilla, however, does not do so. Instead, it uses the information provided by cookies to develop a better understanding of how Mozilla's visitors use, and to facilitate those visitors' interactions with, Mozilla's Web sites. Mozilla visitors who do not wish to have cookies placed on their computers by Mozilla or its contractors should set their browsers to refuse cookies before linking to Mozilla's Web sites. Certain features of Mozilla's Web sites may not function properly without the aid of cookies.</p>
|
||||
|
||||
<h3>Protection of Certain Personally-Identifying Information</h3>
|
||||
|
||||
<p>Where Mozilla has collected personally-identifying information subject to one of the three exceptions described in the Contributors and Customers section, above, it discloses that information only to those of its employees, contractors and affiliated organizations that need to know that information in order to process it on Mozilla's behalf and that have agreed not to disclose it to others. Some of those employees, contractors and affiliated organizations may be located outside of your home country; by using Mozilla's Web sites, you consent to the transfer of your information to them. Mozilla does not rent or sell such information to anyone. Other than to its employees, contractors and affiliated organizations, as described above, Mozilla discloses such information only when required to do so by law, or when Mozilla believes in good faith that disclosure is reasonably necessary to protect the property or rights of Mozilla, members of the Mozilla community, or the public at large. Mozilla takes all measures reasonably necessary to protect against the unauthorized access, use, alteration or destruction of such information</p>
|
||||
|
||||
<h3>Updating of Personally-Identifying Information</h3>
|
||||
|
||||
<p>Mozilla permits users to freely update and correct their personally-identifying information as maintained by Mozilla. To do so, users need only look for the links and other tools available on Mozilla's Web sites or contact Mozilla by email.</p>
|
||||
|
||||
<h3>Privacy Policy Changes</h3>
|
||||
|
||||
<p>Although changes are likely to be minor, Mozilla may change its Privacy Policy from time to time. Any and all changes will be reflected on this page. Substantive changes will also be announced through the standard mechanisms through which Mozilla communicates with the Mozilla community, including Mozilla's "mozilla-announce" mailing lists.</p>
|
||||
@@ -1,109 +0,0 @@
|
||||
<h1>Create a Party</h1>
|
||||
<form class="fxform" action="<?php echo $html->url('/parties/add'); ?>" method="post">
|
||||
<div>
|
||||
<label for="PartyName" class="label-large">Party Name<span class="required">*</span>:</label>
|
||||
<?php echo $html->input('Party/name', array('size' => 40)); ?>
|
||||
<?php echo $html->tagErrorMsg('Party/name', 'Please enter a party name.')?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyVname" class="label-large">Venue Name:</label>
|
||||
<?php echo $html->input('Party/vname', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyAddress" class="label-large">Address:</label>
|
||||
<?php echo $html->input('Party/address', array('size' => 40, 'id' => 'location', 'onkeypress' => 'capture(event)', 'onblur' => 'update()')); ?>
|
||||
<div id="locerr" class="info" style="display: none">Did you mean: <a id="locerrlink" onclick="geocode_suggest()" href="#"></a>? <a href="#" onclick="shide()"><span style="font-size: x-small">(close)</span></a></div>
|
||||
</div>
|
||||
<p>Enter your party's time and date (in your local time) here. If you're not ready to commit to a specific time or date, select the 'Tentative'
|
||||
radio button. Otherwise select 'Confirmed'.</p>
|
||||
<div>
|
||||
<label for="PartyYear" class="label-large">Date:</label>
|
||||
<?php echo $html->yearOptionTag('Party/year', null, date('Y'), MAX_YEAR, date('Y'), null, null, false); ?>-<?php echo $html->hourOptionTag('Party/month', null, false, date('m')); ?>-<?php echo $html->dayOptionTag('Party/day', null, date('d'), null, false); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyHour" class="label-large">Time:</label>
|
||||
<?php echo $html->hourOptionTag('Party/hour', null, true);?>:<?php echo $html->minuteOptionTag('Party/minute');?>
|
||||
<?php echo $html->radio('Party/confirmed', array(0 => 'Tentative', 1 => 'Confirmed')); ?><br/>
|
||||
</div>
|
||||
<p>The timezone is used to calculate the appropriate GMT time from the local time specified above. This is done to show
|
||||
the party in the local time of the person viewing it.</p>
|
||||
<div>
|
||||
<label for="PartyTz" class="label-large">Timezone<span class="required">*</span>:</label>
|
||||
<?php
|
||||
$tzs = array('-12' => 'GMT-12',
|
||||
'-11' => 'GMT-11',
|
||||
'-10' => 'GMT-10',
|
||||
'-9' => 'GMT-9',
|
||||
'-8' => 'GMT-8',
|
||||
'-7' => 'GMT-7',
|
||||
'-6' => 'GMT-6',
|
||||
'-5' => 'GMT-5',
|
||||
'-4' => 'GMT-4',
|
||||
'-3' => 'GMT-3',
|
||||
'-2' => 'GMT-2',
|
||||
'-1' => 'GMT-1',
|
||||
'0' => 'GMT+0',
|
||||
'1' => 'GMT+1',
|
||||
'2' => 'GMT+2',
|
||||
'3' => 'GMT+3',
|
||||
'4' => 'GMT+4',
|
||||
'5' => 'GMT+5',
|
||||
'6' => 'GMT+6',
|
||||
'7' => 'GMT+7',
|
||||
'8' => 'GMT+8',
|
||||
'9' => 'GMT+9',
|
||||
'10' => 'GMT+10',
|
||||
'11' => 'GMT+11',
|
||||
'12' => 'GMT+12',
|
||||
'13' => 'GMT+13');
|
||||
echo $html->selectTag('Party/tz', $tzs, $utz, null, null, false);
|
||||
?>
|
||||
(this page was loaded at <?php echo gmdate("Y-m-d H:i:s"); ?> GMT)
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyDuration" class="label-large">Duration (in hours):</label>
|
||||
<?php echo $html->input('Party/duration', array('size' => 5)); ?>
|
||||
</div>
|
||||
<p>Enter a website (complete with http://) that guests can visit to learn more about your party. If you don't have one, simply leave it blank.</p>
|
||||
<div>
|
||||
<label for="PartyWebsite" class="label-large">Web site:</label>
|
||||
<?php echo $html->input('Party/website', array('size' => 40)); ?>
|
||||
<?php echo $html->tagErrorMsg('Party/website', 'Invalid URL.')?>
|
||||
</div>
|
||||
<p>If you choose to make your party invite only, you will have to send guests an invite containing a random invite code to allow them to join your party.</p>
|
||||
<div>
|
||||
<label for="PartyInviteonly" class="label-large">Invite only</label>
|
||||
<?php echo $html->checkbox('Party/inviteonly'); ?>
|
||||
</div>
|
||||
<?php if(GMAP_API_KEY != null): ?>
|
||||
<script src="http://maps.google.com/maps?file=api&v=2&key=<?php echo GMAP_API_KEY; ?>"
|
||||
type="text/javascript"></script>
|
||||
<script src="<?php echo $html->url('/js/maps.js'); ?>" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function update() {
|
||||
var loc = document.getElementById("location").value;
|
||||
geocode(loc);
|
||||
}
|
||||
|
||||
function capture(event) {
|
||||
if (event.keyCode == 13) {
|
||||
event.preventDefault();
|
||||
update();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<p>Drag the map or the marker to specify a location. Set the zoom by using the '+' or '-' buttons on the left.</p>
|
||||
<p id="map" class="med-map-r"></p>
|
||||
<?php echo $html->hidden('Party/lat', array('id' => 'lat'));
|
||||
echo $html->hidden('Party/long', array('id' => 'long'));
|
||||
echo $html->hidden('Party/zoom', array('id' => 'zoom'));
|
||||
echo $html->hidden('Party/geocoded', array('id' => 'geocoded', 'value' => 0)); ?>
|
||||
<?php endif; ?>
|
||||
<div>
|
||||
<label for="PartyNotes" class="label-large">Additional Notes</label>
|
||||
<?php echo $html->textarea('Party/notes', array('rows' => 10, 'cols' => 50)); ?>
|
||||
</div>
|
||||
<?php echo $html->submit('Create Party'); ?>
|
||||
</form>
|
||||
@@ -1,7 +0,0 @@
|
||||
<h1>Cancel Party</h1>
|
||||
<div class="error">Warning! Canceling your party will remove all guests and send them a cancellation notice.</div>
|
||||
<p>If you're sure you want to cancel your party simply hit the button below. Otherwise,
|
||||
<a href="<?php echo $html->url('/parties/view/'.$pid); ?>">click here</a> to return to your party.</p>
|
||||
<form action="<?php echo $html->url('/parties/cancel/'.$pid); ?>" method="post">
|
||||
<?php echo $html->hidden('Party/confcancel', array('value' => 1)).$html->submit('Cancel Party'); ?>
|
||||
</form>
|
||||
@@ -1,131 +0,0 @@
|
||||
<form class="fxform" action="<?php echo $html->url('/parties/edit/'.$party['Party']['id']); ?>" method="post">
|
||||
<?php echo $html->hidden('Party/id'); ?>
|
||||
<h1>Details</h1>
|
||||
<div>
|
||||
<label for="PartyName" class="label-large">Party Name:</label>
|
||||
<?php echo $html->input('Party/name', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyVname" class="label-large">Venue Name:</label>
|
||||
<?php echo $html->input('Party/vname', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyWebsite" class="label-large">Web site:</label>
|
||||
<?php echo $html->input('Party/website', array('size' => 40)); ?>
|
||||
<?php echo $html->tagErrorMsg('Party/website', 'Invalid URL.')?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyAddress" class="label-large">Address:</label>
|
||||
<?php echo $html->input('Party/address', array('size' => 40, 'id' => 'location', 'onkeypress' => 'capture(event)', 'onblur' => 'update()')); ?>
|
||||
<div id="suggest" style="display: none">Did you mean <span style="font-style: italic"><a id="suggest2" href="#" onclick=""></a></span>?</div>
|
||||
</div>
|
||||
<?php if(GMAP_API_KEY != null): ?>
|
||||
<script src="http://maps.google.com/maps?file=api&v=2&key=<?php echo GMAP_API_KEY; ?>"
|
||||
type="text/javascript"></script>
|
||||
<script src="<?php echo $html->url('/js/maps.js'); ?>" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
//<![CDATA[
|
||||
function update(aSuggest) {
|
||||
var loc;
|
||||
if (!aSuggest)
|
||||
loc = document.getElementById("location").value;
|
||||
else
|
||||
loc = aSuggest;
|
||||
|
||||
if (loc != "")
|
||||
geocode(loc);
|
||||
}
|
||||
|
||||
function capture(event) {
|
||||
if (event.keyCode == 13) {
|
||||
event.preventDefault();
|
||||
update();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<p id="map" class="med-map-r"></p>
|
||||
<div>
|
||||
<label for="PartyNotes" class="label-large">Additional Notes:</label>
|
||||
<?php echo $html->textarea('Party/notes', array('rows' => 10, 'cols' => 50)); ?>
|
||||
</div>
|
||||
<h1>Date</h1>
|
||||
<div>
|
||||
<label for="PartyYear" class="label-large">Date:</label>
|
||||
<?php echo $html->yearOptionTag('Party/year', null, date('Y'), MAX_YEAR, $date['year'], null, null, false); ?>-<?php echo $html->hourOptionTag('Party/month', null, false, $date['mon']); ?>-<?php echo $html->dayOptionTag('Party/day', null, $date['day'], null, false); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyHour" class="label-large">Time:</label>
|
||||
<?php echo $html->hourOptionTag('Party/hour', null, true, $date['hour']);?>:<?php echo $html->minuteOptionTag('Party/minute', null, $date['min']);?>
|
||||
<?php echo $html->radio('Party/confirmed', array(0 => 'Tentative', 1 => 'Confirmed')); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyTz" class="label-large">Timezone:</label>
|
||||
<?php
|
||||
$tzs = array('-12' => 'GMT-12',
|
||||
'-11' => 'GMT-11',
|
||||
'-10' => 'GMT-10',
|
||||
'-9' => 'GMT-9',
|
||||
'-8' => 'GMT-8',
|
||||
'-7' => 'GMT-7',
|
||||
'-6' => 'GMT-6',
|
||||
'-5' => 'GMT-5',
|
||||
'-4' => 'GMT-4',
|
||||
'-3' => 'GMT-3',
|
||||
'-2' => 'GMT-2',
|
||||
'-1' => 'GMT-1',
|
||||
'0' => 'GMT+0',
|
||||
'1' => 'GMT+1',
|
||||
'2' => 'GMT+2',
|
||||
'3' => 'GMT+3',
|
||||
'4' => 'GMT+4',
|
||||
'5' => 'GMT+5',
|
||||
'6' => 'GMT+6',
|
||||
'7' => 'GMT+7',
|
||||
'8' => 'GMT+8',
|
||||
'9' => 'GMT+9',
|
||||
'10' => 'GMT+10',
|
||||
'11' => 'GMT+11',
|
||||
'12' => 'GMT+12',
|
||||
'13' => 'GMT+13');
|
||||
|
||||
echo $html->selectTag('Party/tz', $tzs, $date['tz'], null, null, false);?>
|
||||
(current time is <?php echo gmdate("Y-m-d H:i:s"); ?>GMT)
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyDuration" class="label-large">Duration (in hours):</label>
|
||||
<?php echo $html->input('Party/duration', array('size' => 5)); ?>
|
||||
</div>
|
||||
<h1><span style="color: #0063dc">flick</span><span style="color: #ff0084">r<sup style="font-size: 8px">TM</sup></span> Options</h1>
|
||||
<p>To show photos of your party, simply tag them with <strong><?php echo FLICKR_TAG_PREFIX.$party['Party']['id'] ?></strong> and fill out the information below.</p>
|
||||
<div>
|
||||
<label for="PartyUseflickr" class="label-large">Show photostream:</label>
|
||||
<?php echo $html->checkbox('Party/useflickr'); ?>
|
||||
</div>
|
||||
<p>If you choose to show photos from anyone using your party's tag please note that no photos will show until two or more people are using the tag.</p>
|
||||
<div>
|
||||
<label for="PartyFlickrperms" class="label-large">Show:</label>
|
||||
<?php echo $html->radio('Party/flickrperms', array(0 => 'Only my photos', 1 => 'Anyone\'s photos')); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyFlickrusr" class="label-large">Flickr username:</label>
|
||||
<?php echo $html->input('Party/flickrusr', array('size' => 40)); ?>
|
||||
</div>
|
||||
<h1>Privacy</h1>
|
||||
<div>
|
||||
<label for="PartyInviteonly" class="label-large">Invite only:</label>
|
||||
<?php echo $html->checkbox('Party/inviteonly'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="PartyGuestcomments" class="label-large">Limit comments to party guests only:</label>
|
||||
<?php echo $html->checkbox('Party/guestcomments'); ?>
|
||||
</div>
|
||||
<br/>
|
||||
<?php echo $html->hidden('Party/lat', array('id' => 'lat'));
|
||||
echo $html->hidden('Party/long', array('id' => 'long'));
|
||||
echo $html->hidden('Party/zoom', array('id' => 'zoom'));
|
||||
echo $html->hidden('Party/geocoded', array('id' => 'geocoded', 'value' => 0)); ?>
|
||||
<?php endif; ?>
|
||||
<?php echo $html->submit('Update'); ?>
|
||||
</form>
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php if(GMAP_API_KEY != null): ?>
|
||||
<div style="text-align: center">
|
||||
<form action="<?php echo $html->url('/parties/'); ?>" class="fxform" onsubmit="search(event)" method="post">
|
||||
<label for="PartyMloc"><strong>Find a party:</strong></label>
|
||||
<?php echo $html->input('Party/mloc', array('size' => 60, 'id' => 'location')).' '.$html->submit('Search'); ?>
|
||||
<div id="locerr" class="info" style="display: none">Did you mean: <a id="locerrlink" onclick="geocode_suggest()" href="#"></a>? <a href="#" onclick="shide()"><span style="font-size: x-small">(close)</span></a></div>
|
||||
</form>
|
||||
</div>
|
||||
<br/>
|
||||
<script src="http://maps.google.com/maps?file=api&v=2.67&key=<?php echo GMAP_API_KEY; ?>"
|
||||
type="text/javascript"></script>
|
||||
<script src="<?php echo $html->url('/js/maps.js'); ?>" type="text/javascript"></script>
|
||||
<script src="<?php echo $html->url('/parties/js'); ?>" type="text/javascript"></script>
|
||||
<div id="map" class="large-map"></div>
|
||||
<div id="map-load" style="visibility: hidden" class="load">
|
||||
<img src="<?php echo $html->url('/img/throbber.gif'); ?>"/>
|
||||
Loading...
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
@@ -1,9 +0,0 @@
|
||||
<h1>Invite a guest</h1>
|
||||
<p>To invite a guest, simply enter their email address into the field below,
|
||||
or hand them a link to
|
||||
<strong><?php echo $inviteurl; ?></strong></p>
|
||||
<form action="<?php echo $html->url('/parties/invite/'.$partyid) ?>" method="post">
|
||||
<label for="PartyEinvite">Guest's email address:</label>
|
||||
<?php echo $html->input('Party/einvite')."\n".$html->submit('Submit')."\n"; ?>
|
||||
<?php echo $html->tagErrorMsg('Party/einvite', 'Invalid email address')?>
|
||||
</form>
|
||||
@@ -1,36 +0,0 @@
|
||||
<h1>Confirm Invite</h1>
|
||||
<?php if (isset($party) && !isset($confirm_only)): ?>
|
||||
<p>You've been invited to attend <a href="<?php echo $html->url('/parties/view/'.$party['Party']['id']); ?>"><?php echo $party['Party']['name']; ?></a>.
|
||||
To join this party please select one of the options below, or <a href="<?php echo $html->url('/parties/invited/cancel/');?>">click here</a> to cancel this invitation.</p>
|
||||
<div style="text-align: center">
|
||||
<div style="width: 50%; float: left;">
|
||||
<h2>New User</h2>
|
||||
<p>Simply register for an account, and you'll be added as a guest as soon as you finish.
|
||||
<a href="<?php echo $html->url('/users/register'); ?>">Create account »</a></p>
|
||||
</div>
|
||||
<div style="width: 50%; float: right">
|
||||
<h2>Existing User</h2>
|
||||
<p>Login to add yourself to the guest list.</p>
|
||||
<form class="fxform" action="<?php echo $html->url('/users/login'); ?>" method="post">
|
||||
<div>
|
||||
<label class="label-large" for="UserEmail">Email Address:</label>
|
||||
<?php echo $html->input('User/email', array('size' => 20)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label class="label-large" for="UserPassword">Password:</label>
|
||||
<?php echo $html->password('User/password', array('size' => 20)).
|
||||
$html->hidden('User/icode', array('value' => $icode));?>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<?php echo $html->submit('Login'); ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
<?php endif;
|
||||
if (isset($party) && isset($confirm_only)): ?>
|
||||
<p>You've been invited to attend <a href="<?php echo $html->url('/parties/view/'.$party['Party']['id']); ?>"><?php echo $party['Party']['name']; ?></a>.
|
||||
To join this party, <a href="<?php echo $html->url('/parties/invited/'.$icode.'/confirm');?>">click here</a>, or cancel this invitation by <a href="<?php echo $html->url('/parties/invited/cancel/');?>">clicking here</a>.</p>
|
||||
<?php endif; ?>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php if (isset($party)): ?>
|
||||
<strong><?php echo $party['Party']['name']?></strong><br/><?php echo $party['Party']['vname']; ?><br/><a href="<?php echo $html->url('/parties/view/'.$party['Party']['id'])?>">View Party</a>
|
||||
<?php else: ?>
|
||||
function addParties() {
|
||||
<?php foreach ($parties as $party):
|
||||
if (!empty($party['Party']['lat']) && !empty($party['Party']['long']) && !$party['Party']['canceled']): ?>
|
||||
addParty(<?php echo $party['Party']['lat'];?>, <?php echo $party['Party']['long']?>, <?php echo $party['Party']['id']; ?>);
|
||||
<?php endif; endforeach;?>
|
||||
}
|
||||
//
|
||||
<?php endif; ?>
|
||||
@@ -1,140 +0,0 @@
|
||||
<?php
|
||||
if (isset($party)): ?>
|
||||
<h1><?php echo $party['Party']['name']; ?></h1>
|
||||
<br/>
|
||||
<?php if ($party['Party']['canceled']): ?>
|
||||
<div class="error">This party has been canceled</div>
|
||||
<?php endif; ?>
|
||||
Host: <a href="<?php echo $html->url('/users/view/'.$party['Party']['owner']).'">'.$host; ?></a><br/>
|
||||
<?php
|
||||
if (!empty($party['Party']['address']))
|
||||
echo 'Location: '.$party['Party']['address']."<br/>\n";
|
||||
|
||||
if (!empty($party['Party']['vname']))
|
||||
echo 'Venue: '.$party['Party']['vname']."<br/>\n";
|
||||
|
||||
echo 'Date: '.(($party['Party']['confirmed'] == 1) ? gmdate('Y-m-d h:ia', $party['Party']['date'] + (@$_SESSION['User']['tz'] * 60 * 60))." GMT".@$_SESSION['User']['tz'] : "TBA")."<br/>\n";
|
||||
echo 'Duration: '.$party['Party']['duration'].' hour'.(($party['Party']['duration'] == 1) ? '' : 's')."\n<br/>";
|
||||
|
||||
if (!empty($party['Party']['website']) && preg_match("/^(http|https)\:\/\//i", $party['Party']['website']))
|
||||
echo 'Website: <a href="'.$party['Party']['website'].'" rel="nofollow">'.$party['Party']['website']."</a><br/>\n";
|
||||
|
||||
if (!empty($party['Party']['notes']))
|
||||
echo 'Notes: '.$party['Party']['notes']."<br/>\n";
|
||||
?>
|
||||
<br/>
|
||||
<script src="http://maps.google.com/maps?file=api&v=2&key=<?php echo GMAP_API_KEY; ?>"
|
||||
type="text/javascript"></script>
|
||||
<script src="<?php echo $html->url('/js/maps.js'); ?>" type="text/javascript"></script>
|
||||
<div id="map" class="small-map"></div>
|
||||
<h1>Who's coming</h1>
|
||||
<div>
|
||||
<?php if (!empty($guests)):
|
||||
$i = 0;
|
||||
$c = count($guests) - 1;
|
||||
foreach ($guests as $guest): ?>
|
||||
<a href="<?php echo $html->url('/users/view/'.$guest['users']['id']); ?>"><?php echo $guest['users']['name']; ?></a><?php echo ($i < $c) ? ", " : ""; ?>
|
||||
<?php $i++;
|
||||
endforeach;
|
||||
else:
|
||||
echo "No guests yet, be the first!";
|
||||
endif;
|
||||
|
||||
if (isset($_SESSION['User']['id']) && @$_SESSION['User']['id'] != $party['Party']['owner'] && ($party['Party']['inviteonly'] != 1 || $isguest && !$party['Party']['canceled'])):?>
|
||||
<br/><br/>
|
||||
<form action="<?php
|
||||
echo $html->url('/parties/'.((!$isguest) ? 'rsvp/' : 'unrsvp/').$party['Party']['id']); ?>" method="post">
|
||||
<?php if(!$isguest): ?>
|
||||
<button>Count me in!</button>
|
||||
<?php else: ?>
|
||||
<button>Remove me</button>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
<? if ($party['Party']['inviteonly'] == 1 && (!$isguest && @$_SESSION['User']['id'] != $party['Party']['owner'] && !$party['Party']['canceled'])):?>
|
||||
<p>This party is invite only. You'll need an invite code from the host to join in.</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php if (@$_SESSION['User']['id'] == $party['Party']['owner']):?>
|
||||
<h1>Party options</h1>
|
||||
<a href="<?php echo $html->url('/parties/edit/'.$party['Party']['id']);?>">Edit party</a>
|
||||
<?php if (!$party['Party']['canceled']): ?>| <a href="<?php echo $html->url('/parties/invite/'.$party['Party']['id']);?>">Invite a guest</a>
|
||||
<?php endif; echo (($party['Party']['canceled'] == 1) ? ' | <a href="'.$html->url('/parties/uncancel/'.$party['Party']['id']).'">
|
||||
Reactivate this party</a>' : '| <a href="'.$html->url('/parties/cancel/'.$party['Party']['id']).'" onclick="return confirm(\'Are you sure you want to cancel your party?\')"><span style="color: #bc1313">Cancel this party</span></a>'); ?>
|
||||
<?php endif; ?>
|
||||
<?php if (isset($flickr)): ?>
|
||||
<h1 id="photos">Photos <a title="Photo Feed" href="<?php echo $html->url('/feeds/photos/'.$party['Party']['id']); ?>"><img src="<?php echo $html->url('/img/feed16.png'); ?>" alt="Atom"/></a></h1>
|
||||
<div style="text-align: center">
|
||||
<?php if (empty($flickr)): ?>
|
||||
<p>No photos yet. Tag your flickr pictures with <?php echo FLICKR_TAG_PREFIX.$party['Party']['id']; ?> to display them here.</p>
|
||||
<?php else:
|
||||
foreach ($flickr as $pic): ?>
|
||||
<a href="http://www.flickr.com/photos/<?php echo $pic['owner']."/".$pic['id']."/" ?>"><img src="http://static.flickr.com/<?php echo $pic['server']."/".$pic['id']."_".$pic['secret']."_s.jpg" ?>" title="<?php echo $pic['title']; ?>"/></a>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
<br/>
|
||||
</div>
|
||||
<?php endif;
|
||||
if (!empty($comments)): ?>
|
||||
<h1 id="comments">Comments <a title="Comment Feed" href="<?php echo $html->url('/feeds/comments/'.$party['Party']['id']); ?>"><img src="<?php echo $html->url('/img/feed16.png'); ?>" alt="RSS"/></a></h1>
|
||||
<?php $i = 0;
|
||||
foreach ($comments as $comment):
|
||||
if ($i % 2 == 0)
|
||||
$class = "";
|
||||
else
|
||||
$class = "comment-mod";
|
||||
$i++;?>
|
||||
<div id="c<?php echo $comment['comments']['cid'];?>" class="comment <?php echo $class;?>">
|
||||
<span class="comment-content"><?php echo $comment['comments']['text']; ?></span>
|
||||
<span class="comment-tag"><br/><br/>Posted by <a href="<?php echo $html->url('/users/view/'.$comment['users']['uid']); ?>">
|
||||
<?php echo $comment['users']['name']; ?></a> on <?php echo gmdate('Y-m-d h:ia', $comment['comments']['time'] + (@$_SESSION['User']['tz'] * 60 * 60)); ?></span>
|
||||
</span>
|
||||
</div>
|
||||
<?php endforeach;
|
||||
endif;
|
||||
if (isset($_SESSION['User'])):
|
||||
if (($party['Party']['guestcomments'] && $isguest) || !$party['Party']['guestcomments'] || @$_SESSION['User']['id'] == $party['Party']['owner']): ?>
|
||||
<h1>Add a comment</h1>
|
||||
<form action="<?php echo $html->url('/comments/add/'.$party['Party']['id'].'/'.$_SESSION['User']['id']); ?>" method="post">
|
||||
<div>
|
||||
<?php echo $html->textarea('Comment/text', array('rows' => 10, 'cols' => 50))."<br/>".$html->submit('Submit'); ?>
|
||||
</div>
|
||||
</form>
|
||||
<?php endif;
|
||||
endif;
|
||||
endif; ?>
|
||||
|
||||
<?php if (isset($parties)):
|
||||
if (isset($prev))
|
||||
echo '<a href="'.$html->url('/parties/view/all/'.$prev).'">« Previous Page</a> ';
|
||||
if (isset($prev) && isset($next))
|
||||
echo ' | ';
|
||||
if (isset($next))
|
||||
echo '<a href="'.$html->url('/parties/view/all/'.$next).'">Next Page »</a>';
|
||||
$i = 0;
|
||||
foreach ($parties as $party):
|
||||
if ($party['Party']['canceled'] != 1): ?>
|
||||
<div>
|
||||
<h1><?php echo $party['Party']['name']; ?></h1>
|
||||
<p>
|
||||
<?php
|
||||
if (!empty($party['Party']['address']))
|
||||
echo 'Location: '.$party['Party']['address']."<br/>\n";
|
||||
|
||||
if (!empty($party['Party']['vname']))
|
||||
echo 'Venue: '.$party['Party']['vname']."<br/>\n";
|
||||
|
||||
echo 'Date: '.(($party['Party']['confirmed'] == 1) ? gmdate('Y-m-d h:ia', $party['Party']['date'] + (@$_SESSION['User']['tz'] * 60 * 60))." GMT".@$_SESSION['User']['tz'] : "TBA")."<br/>\n";
|
||||
|
||||
echo '<a href="'.$html->url('/parties/view/'.$party['Party']['id']).'">View Party</a>';
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif; endforeach;
|
||||
if (isset($prev))
|
||||
echo '<a href="'.$html->url('/parties/view/all/'.$prev).'">« Previous Page</a> ';
|
||||
if (isset($prev) && isset($next))
|
||||
echo ' | ';
|
||||
if (isset($next))
|
||||
echo '<a href="'.$html->url('/parties/view/all/'.$next).'">Next Page »</a>';
|
||||
endif;?>
|
||||
@@ -1,105 +0,0 @@
|
||||
<?php if ($error): ?>
|
||||
<div class="error">
|
||||
There was an error in your submission, please try again.
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<form class="fxform" action="<?php echo $html->url('/users/edit'); ?>" method="post">
|
||||
<?php echo $html->hidden('User/id'); ?>
|
||||
<h1>Profile</h1>
|
||||
<div>
|
||||
<label for="UserName" class="label-large">Name:</label>
|
||||
<?php echo $html->input('User/name', array('size' => 40)); ?>
|
||||
<?php echo $html->tagErrorMsg('User/name', 'You must enter a name.')?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserWebsite" class="label-large">Website:</label>
|
||||
<?php echo $html->input('User/website', array('size' => 40)); ?>
|
||||
<?php echo $html->tagErrorMsg('User/website', 'Invalid URL.')?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="location" class="label-large">Location:</label>
|
||||
<?php echo $html->input('User/location', array('id' => 'location', 'size' => 40, 'onkeypress' => 'capture(event)')); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserTz" class="label-large">Timezone:</label>
|
||||
<?php
|
||||
$tzs = array('-12' => 'GMT-12',
|
||||
'-11' => 'GMT-11',
|
||||
'-10' => 'GMT-10',
|
||||
'-9' => 'GMT-9',
|
||||
'-8' => 'GMT-8',
|
||||
'-7' => 'GMT-7',
|
||||
'-6' => 'GMT-6',
|
||||
'-5' => 'GMT-5',
|
||||
'-4' => 'GMT-4',
|
||||
'-3' => 'GMT-3',
|
||||
'-2' => 'GMT-2',
|
||||
'-1' => 'GMT-1',
|
||||
'0' => 'GMT+0',
|
||||
'1' => 'GMT+1',
|
||||
'2' => 'GMT+2',
|
||||
'3' => 'GMT+3',
|
||||
'4' => 'GMT+4',
|
||||
'5' => 'GMT+5',
|
||||
'6' => 'GMT+6',
|
||||
'7' => 'GMT+7',
|
||||
'8' => 'GMT+8',
|
||||
'9' => 'GMT+9',
|
||||
'10' => 'GMT+10',
|
||||
'11' => 'GMT+11',
|
||||
'12' => 'GMT+12',
|
||||
'13' => 'GMT+13');
|
||||
echo $html->selectTag('User/tz', $tzs, $utz, null, null, false);
|
||||
?>
|
||||
(current time is <?php echo gmdate("Y-m-d H:i:s"); ?> GMT)
|
||||
</div>
|
||||
<?php if(GMAP_API_KEY != null): ?>
|
||||
<script src="http://maps.google.com/maps?file=api&v=2&key=<?php echo GMAP_API_KEY; ?>"
|
||||
type="text/javascript"></script>
|
||||
<script src="<?php echo $html->url('/js/maps.js'); ?>" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
//<![CDATA[
|
||||
function update() {
|
||||
var loc = document.getElementById("location").value;
|
||||
geocode(loc);
|
||||
}
|
||||
|
||||
function capture(event) {
|
||||
if (event.keyCode == 13) {
|
||||
event.preventDefault();
|
||||
update();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<p id="map" class="small-map"></p>
|
||||
<?php echo $html->hidden('User/lat', array('id' => 'lat'));
|
||||
echo $html->hidden('User/long', array('id' => 'long'));
|
||||
echo $html->hidden('User/zoom', array('id' => 'zoom')); ?>
|
||||
<?php endif; ?>
|
||||
<h1>Privacy</h1>
|
||||
<div>
|
||||
<label for="UserShowemail" class="label-large">Show email:</label>
|
||||
<?php echo $html->checkbox('User/showemail'); ?><br/>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserShowloc" class="label-large">Show location:</label>
|
||||
<?php echo $html->checkbox('User/showloc'); ?><br/>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserShowmap" class="label-large">Show map:</label>
|
||||
<?php echo $html->checkbox('User/showmap'); ?><br/>
|
||||
</div>
|
||||
<h1>Password</h1>
|
||||
<div>
|
||||
<label for="UserPassword" class="label-large">New password:</label>
|
||||
<?php echo $html->password('User/password', array('size' => 20, 'autocomplete' => 'off')); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="UserConfpassword" class="label-large">Confirm new password:</label>
|
||||
<?php echo $html->password('User/confpassword', array('size' => 20, 'autocomplete' => 'off')); ?>
|
||||
<?php echo $html->tagErrorMsg('User/confpassword', 'The supplied passwords do not match!')?>
|
||||
</div>
|
||||
<?php echo $html->submit('Update'); ?>
|
||||
</form>
|
||||
@@ -1,61 +0,0 @@
|
||||
<h1>My Profile</h1>
|
||||
<br/>
|
||||
<h2>Parties I'm attending</h2>
|
||||
<p>
|
||||
<?php
|
||||
$num_parties = count($parties);
|
||||
if ($num_parties == 0)
|
||||
echo 'None yet. <a href="'.$html->url('/parties/view/all').'">Find one!</a>';
|
||||
|
||||
else {
|
||||
$c = $num_parties - 1;
|
||||
$i = 0;
|
||||
foreach ($parties as $party) {
|
||||
echo '<a href="'.$html->url('/parties/view/'.$party['parties']['id']).'">'.$party['parties']['name'].'</a>';
|
||||
echo ($i < $c) ? ', ' : '';
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<h2>Parties I'm hosting</h2>
|
||||
<p>
|
||||
<?php
|
||||
$num_parties = count($hparties);
|
||||
if (empty($hparties))
|
||||
echo 'None yet. <a href="'.$html->url('/parties/add').'">Create one!</a>';
|
||||
|
||||
else {
|
||||
$c = $num_parties - 1;
|
||||
$i = 0;
|
||||
foreach ($hparties as $party) {
|
||||
echo '<a href="'.$html->url('/parties/view/'.$party['parties']['id']).'">'.$party['parties']['name'].'</a>';
|
||||
echo ($i < $c) ? ', ' : '';
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
<h2>Parties I've been invited to</h2>
|
||||
<p>
|
||||
<?php
|
||||
$num_parties = count($iparties);
|
||||
if (empty($iparties))
|
||||
echo 'None yet.';
|
||||
|
||||
else {
|
||||
$c = $num_parties - 1;
|
||||
$i = 0;
|
||||
foreach ($iparties as $party) {
|
||||
echo '<a href="'.$html->url('/parties/view/'.$party['parties']['id']).'">'.$party['parties']['name'].'</a>';
|
||||
echo ($i < $c) ? ', ' : '';
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<h2>Account Options</h2>
|
||||
<p>
|
||||
<a href="<?php echo $html->url('/users/edit'); ?>">Edit my account</a>
|
||||
<br/>
|
||||
<a href="<?php echo $html->url('/users/logout'); ?>">Logout</a>
|
||||
</p>
|
||||
@@ -1,17 +0,0 @@
|
||||
<h1>Login</h1>
|
||||
<form class="fxform" action="<?php echo $html->url('/users/login'); ?>" method="post">
|
||||
<div>
|
||||
<label class="label-large" for="UserEmail">Email Address:</label>
|
||||
<?php echo $html->input('User/email', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label class="label-large" for="UserPassword">Password:</label>
|
||||
<?php echo $html->password('User/password', array('size' => 40)); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php echo $html->submit('Login'); ?>
|
||||
</div>
|
||||
<p>
|
||||
<a href="<?php echo $html->url('/users/register'); ?>">Create an account</a> | <a href="<?php echo $html->url('/users/recover/password'); ?>">Forgot your password?</a>
|
||||
</p>
|
||||
</form>
|
||||
@@ -1,26 +0,0 @@
|
||||
<h1><?php echo $atitle; ?></h1>
|
||||
<form class="fxform" action="<?php
|
||||
if (isset($reset))
|
||||
echo $html->url('/users/recover/reset/'.$code);
|
||||
else
|
||||
echo $html->url('/users/recover/'.$url); ?>" method="post">
|
||||
<?php if (isset($error)): ?>
|
||||
<div class="error">
|
||||
<?php echo $error; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div>
|
||||
<?php if (!$hideInput): ?>
|
||||
<label class="label-large" for="UserEmail">Email address:</label>
|
||||
<?php echo $html->input('User/email'); ?>
|
||||
<?php endif;
|
||||
if (isset($reset)): ?>
|
||||
<label class="label-large" for="UserPassword">New password:</label>
|
||||
<?php echo $html->password('User/password'); ?>
|
||||
<br/>
|
||||
<label class="label-large" for="UserConfirm">Confirm password:</label>
|
||||
<?php echo $html->password('User/confirm'); ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php echo $html->submit('Submit'); ?>
|
||||
</form>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user