public function getServer(array $configuration, $logger)
{
$connection = $this->getConnection($configuration);
if (!isset($configuration['filter'])) {
$server = new Horde_Kolab_Server_Ldap_Standard($connection, $configuration['basedn']);
} else {
$server = new Horde_Kolab_Server_Ldap_Filtered($connection, $configuration['basedn'], $configuration['filter']);
}
if (isset($configuration['map'])) {
$server = new Horde_Kolab_Server_Decorator_Map($server, $configuration['map']);
}
if (isset($configuration['debug']) || isset($configuration['log'])) {
$server = new Horde_Kolab_Server_Decorator_Log($server, $logger);
}
if (isset($configuration['debug']) || isset($configuration['count'])) {
$server = new Horde_Kolab_Server_Decorator_Count($server, $logger);
}
if (!empty($configuration['cleanup'])) {
$server = new Horde_Kolab_Server_Decorator_Clean($server);
}
return $server;
}