The "Horde_Kolab_Server" package allows you to access the Kolab Server user database. Installation of the package =========================== The package is being distributed as a standard PEAR package by the Horde project. As long as you have PEAR installed, installation should be straight forward. pear channel-discover pear.horde.org pear install --force channel://pear.horde.org/Horde_Kolab_Server "pear" will probably complain about the library (and its dependencies) not being marked stable yet but the "--force" option allows to ignore these warnings. Using the package =========================== This section will present some examples on how to fetch information from the Kolab Server database. Currently the package only provides a LDAP and a test driver as possible backends. The test driver is for internal testing purposes only and emulates a LDAP system without requiring access to a real LDAP database. So most developers will use the LDAP back end. In order to enable the driver some basic configuration is required. Configurations for Horde are always set in the global "$conf" variable. A possible configuration for "Horde_Kolab_Server" could look like this: global $conf; $conf['kolab']['server']['driver'] = 'ldap'; $conf['kolab']['server']['params']['server'] = 'example.com'; $conf['kolab']['server']['params']['base_dn'] = 'dc=example,dc=com'; $conf['kolab']['server']['params']['bind_dn'] = 'cn=nobody,cn=internal,dc=example,dc=com'; $conf['kolab']['server']['params']['bind_pw'] = 'MY_VERY_SECRET_PASSWORD'; With this base configuration the developer can load the code and initialize the server object: require_once 'Horde/Kolab/Server.php'; $server = Horde_Kolab_Server::singleton(); This server handler serves two primary purposes: * Identifying the ID of an object on basis of a given attribute * Fetching an object from the database based on the ID A common request to the Kolab LDAP database is to return the ID of a user given a mail address. The "$server" object will return the "DN" ("distinguished name") of the object in the LDAP database: $dn = $server->dnForMailAddress('wrobel@example.com'); The returned "DN" could look like this: var_dump($dn); string(32) "cn=Gunnar Wrobel,dc=example,dc=com" For alternative methods of retrieving a particular "DN" you should consult the detailed package documentation (see below). This "DN" can now be used to fetch the object from the database: $object = $server->fetch($dn); The "$server" object will always return an object of class "Horde_Kolab_Server_Object". But you will receive a sub class of this parent class that matches the type of the object. For the example given above the server handler returns an object of type "Horde_Kolab_Server_Object_user": var_dump(get_class($object)); string(30) "Horde_Kolab_Server_Object_user" Depending on the sub class such an object presents different features. One primary method is common to all the objects though: Fetching attribute values with "get()". $attr = $object->get(Horde_Kolab_Server_Object::ATTRIBUTE_CN); "Horde_Kolab_Server_Object::ATTRIBUTE_CN" is being used to retrieve the "common name" of the object: var_dump($attr); string(13) "Gunnar Wrobel" For additional details about the different objects and attribute types you should consult the detailed package documentation (see below). Detailed package documentation ============================== A detailed documentation based on the code comments and extracted via phpDocumentor can be found at http://dev.horde.org/api/framework/. Simply select the package "Kolab_Server" in the package selection box in the upper right corner. ToDo ==== Currently the package only implements read access. At some point it should allow write access, too. This is required to convert the Kolab webadmin to use this package.