From phpLDAPadmin

Jump to: navigation, search

Work has currently started on the next release of phpLDAPadmin. This release will be 1.2.x when it is finally available.

Help Out?: If you would like to help out in any way - testing, writing patches to address all the features on [sourceforge] or writing patches to help with the goals below - the just submit your patches to the [sourceforge patch tracker].

Be sure to use the SANDPIT branch of the CVS for your patch submissions. If you use any of the other branches, then your patch may not be accepted - especially if it is too difficult to integrate with the already written code.


Goals for the next release

  • Fully AJAX the interface, making PLA quicker to move around, and hopefully a little nicer to use as well.
  • Smarter page content - try and reduce the amount of "behind the scenes content" in a page (namely JavaScript) and only include the content required for the rendered page.
  • Better memory utilisation - currently PLA uses a lot of variables and some duplication of variables
  • A small face lift
  • Themable - so you can drop in your own icons, if you dont like the ones that come with PLA by default
  • Enable some bulk update operations.

Curious to see the next version progress?

You will be able to see the work in action on the demo site. Be warned, sometimes it may not be working, but come back, it shouldnt be offline or inoperable for long!

As time permits, a (should be working) CVS build will be posted on sourceforge here. While we'll post a build as we complete a major rework, it should be a working version of PLA. Feel free to post a note in the mailing list if you find something that doesnt work (and quote the build number). Naturally, we dont expect a CVS build to do any damage to your LDAP server's data, however, the "use at your own risk" needs to be mentioned :)

If you do use and test the CVS build, you will find that the translation wont be up to date. Once we got to a beta stage, the translation template will be posted on launchpad, so that you can make your language updates and we'll grab those when it is released.

Progress Log

Known current issues

  • WIP releases up to 20090620 probably wont work with PHP 5.2.10
  • PHP 5.2.10 is exhibiting some strange behavour:
    • obtaining the schema attributetypes fails, yet it works with prior PHP releases (seems to only affect OpenDS?)
  • RDN attributes with multiple values are being treated as multivalue RDNs.
    • EG: ie: cn=Bart Simpson,ou=person, may have multivalue "cn" values (cn=Bart, cn=Bartholomew), but PLA will treat it as cn=Bart Simpson+cn=Bart+cn=Bartholomew...
  • The isCommandAdvailable() needs improvement for consistency.
  • Javascript may not be available to "add new attributes", eg: add a date attribute entry to an existing without any date attributes wont show the JS calendar.
  • Attributes with aliases cannot use the alias name when creating a default entry, eg: objectClass=domain and creating a "dc=" value, instead of a "domainComponent="
  • There is a problem adding items where the multi RDN attribute values contain a plus: eg: cn=Santas Little Helper+cn=slh+test+uid=slh,
  • AJAX/HTML tree, purge cache requires subsequent navigation to index.php to populate the tree cache (affects expand).
  • When creating a new entry with a template, PLA returns to edit the entry with the same template, and some templates have not been tested in edit mode (specially when they call the =php.x() functions)
  • If anyone knows why this occurs PLA render corruption. It seems to occur randomly and I cannot consistently reproduce it.


  • PLA is now themable (using custom icons and a style.css sheet)
  • GetNextNumber now includes a 5th argument, so that a minimum number can be presented per template
  • Created a mass edit facilty
  • Enabled mass delete
  • Modification templates will now add/remove objectclasses/attributes when they not in the entry


  • Added XML validation
  • Enabled template dynamic functions =php.x()
  • GetNextNumber() now is attribute agnostic - as such:
    • the configuration setting auto_number,min now needs to be an array. eg:
      and the correct attribute name needs to be used. IE: uid|gid will no longer work, you need to use uidNumber|gidNumber|"a valid schema attribute"
    • uidpool mechanism is now pool
    • pool no longer uses a predefined DN in config.php, instead the filter used should return the DN.
  • AJAXified add_attr_values
  • PHP 5.3 deprecated function fixes
  • Some template validation
  • Added cn=monitor information
  • XML templates with userPassword attributes will automatically call a default helper (to encrypt the password) if one isnt defined.
  • Enabled Read Only, Hidden and Unique attribute processing
  • Re-enabled all configuration options

Changes in config.php

  • $friendly_attrs is now configured in $config->custom->appearance['friendly_attrs']
  • $hidden_attrs is now configured in $config->custom->appearance['hide_attrs']
  • $read_only_attrs is now configured in $config->custom->appearance['readonly_attrs']
  • $unique_attrs is now configured in $servers->setValue('unique','attrs',array())

Changes to XML files

There are some major changes to the XML files in this drop. PLA will hopefully now generated some message when invalid syntax is found. The changes are summarised below:

  • The delimiter used for arguments in the =php.x() functions has been changed from a ',' (comma) to a ';' (semicolon). The main reason for this was to enable DNs to be used as arguments to functions. Where an argument needs to be further broken down into sub arguements, its delimiter has been changed from a ';' (semicolon) to a , (comma). EG: Change
  • autoFill: is now changed to =autoFill() to be consistent with the =php.x() functions syntax.
  • option is deprecated, and should be changed to value.
  • added a function =php.PasswordEncryptionTypes() for password encryption types, instead of listing them in the templates
  • while multiple value statements are allowed in the XML files, you now need to include the id="x" arguement to ensure that the LDAP gets the right value. EG:
    <value id="test">Test Description<value>
  • when multiple value statements are used, you need to add a
    if you want it to be a select list. (It will default to a multivalue input).
  • hint text "Automatically Generated" is automatically added to attributes when they use a function =php.x() (and dont have a hint definition)
  • =php.Password() is now =php.PasswordEncrypt()
  • =php.SambaPassword() is deprecated, use =php.PasswordEncrypt([lm|nt],%var%)


  • Reworked add_attr_form, it will now display all remaining "addable" attributes if there are less than max_add_attrs
  • Add attribute will no longer be displayed if there are no attributes that can be added
  • Reworked password checker
  • Optimised JS rendering
  • PLA now correctly determines all structural objectclasses that can be added/removed from entries
  • Templates are now dynamic added,deleted and updated. See query_time template_time
  • Optimised some LDAP calls
  • Fixed query sorting and attribute display
  • Work on hooks - an example is now provided
  • Syslogging is now mostly not used (there is a call in debug_log) - if you really think it is required submit an enhancement request.

Change to call for add_hook

If you use your own custom hooks, then add_hook() arguments have been changed to:

function add_hook($hook_name,$hook_function,$priority=0,$rollback_function=null)


  • Major backend rework, optimising and cleanup of template rendering functions
  • Enhanced move to really move instead of copy/delete
  • Reworked Import
  • Reworked download binary attributes
  • Reworked modify member form
  • Reworked rename
  • More work on jpegPhoto - we now handle multiple values
  • Removed ereg() functions - for PHP 5.3 support.


  • More AJAXafying...
  • Some work on the HTML tree (non AJAX mode)
  • Reworked Compare (Compare no longer enables updates to entries).
  • Reworked Copy/Move
  • Reworked Export
  • Localised some require calls to reduce unnecessary file parsing during php initialisation
  • Fixed detection of RDN attributes
  • PHPDOC updates
  • Improvements to XML parsing
  • Enabled language localisation of XML attributes "title", "description" & "display"

New Configuration of config.php

This drop of PLA has a new way of configuring LDAP servers. You will need to modify your existing config.php if you wish to use it. Mainly the changes in the config file are:

  • $ldapservers is now $servers


  • Retired EntryFactory
  • Complete rework of searching. Searching now uses templates (like editing/creation) and queries are no longer defined in config.php
  • Enabled Add Attribute
  • Enabled Add Objectclass
  • Enabled Add Value
  • Reworked create entry
  • Enabled delete entry
  • Enabled delete attribute
  • Enabled recursive delete
  • Enabled compare - and changed so that it is no longer an editable item
  • Further rework of template engine and page rendering
  • Enabled update
  • Added create_confirm and made update_confirm/create_confirm configerable via config.php
  • Enable showing jpegPhoto in create/add attribute confirmation dialogue


  • Complete rework of server object controlling connection to LDAP server
  • Complete rework of template objects
  • Complete rework of page rending
  • More AJAXafying...
  • jpegPhoto is now rendered direct to the browser (not from a file)
  • Many redundant functions and files removed

New Configuration of config.php

This drop of PLA has a new way of configuring LDAP servers. You will need to modify your existing config.php if you wish to use it. Mainly the changes in the config file are:

  • $ldapserver = new Datastore() (it was previously $ldapserver = new LDAPServers)
  • Setting config values is now in the format $ldapservers->setValue('...','...','...'); (note the drop of $i)
  • $ldapservers->SetValue($i,'server','auth_type','...'); is now $ldapservers->setValue('login','auth_type','...');
  • $ldapservers->SetValue($i,'login','dn',); is now $ldapservers->setValue('login','bind_id',);
  • $ldapservers->SetValue($i,'login','pass',); is now $ldapservers->setValue('login','bind_pass',);


  • Standardise the call of error() and system_message(), superceeding pla_error()
  • More AJAX enablement
  • AJAXafied the schema viewer
  • Removed redundant js_calendar files.
  • Modified page layout
  • Reduced/standardised variable usage.
  • Reworked schema object/class
Personal tools