From: Gunnar Wrobel
Date: Mon, 6 Apr 2009 09:43:29 +0000 (+0200) Subject: Fix identification of object types. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=704df62cc8b83bb43c14a9641f797372de34f580;p=horde.git Fix identification of object types. --- diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Kolab.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Kolab.php index 3e0787eee..3d03a4d04 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Kolab.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Kolab.php @@ -105,31 +105,28 @@ class Horde_Kolab_Server_Kolab extends Horde_Kolab_Server_Ldap { switch ($type) { case 'Horde_Kolab_Server_Object_Kolab_User': - if (!isset($info['user_type']) || $info['user_type'] == 0) { - return sprintf('cn=%s,%s', $id, $this->getBaseUid()); - } else if ($info['user_type'] == Horde_Kolab_Server_Object_Kolab_User::USERTYPE_INTERNAL) { - return sprintf('cn=%s,cn=internal,%s', $id, $this->getBaseUid()); + if ($info['user_type'] == Horde_Kolab_Server_Object_Kolab_User::USERTYPE_INTERNAL) { + return sprintf('%s,cn=internal,%s', $id, $this->getBaseUid()); } else if ($info['user_type'] == Horde_Kolab_Server_Object_Kolab_User::USERTYPE_GROUP) { - return sprintf('cn=%s,cn=groups,%s', $id, $this->getBaseUid()); + return sprintf('%s,cn=groups,%s', $id, $this->getBaseUid()); } else if ($info['user_type'] == Horde_Kolab_Server_Object_Kolab_User::USERTYPE_RESOURCE) { - return sprintf('cn=%s,cn=resources,%s', $id, $this->getBaseUid()); + return sprintf('%s,cn=resources,%s', $id, $this->getBaseUid()); } else { - return sprintf('cn=%s,%s', $id, $this->getBaseUid()); + return parent::getServerUid($type, $id, $info); } case 'Horde_Kolab_Server_Object_Kolab_Address': - return sprintf('cn=%s,cn=external,%s', $id, $this->getBaseUid()); - case 'Horde_Kolab_Server_Object_Kolabsharedfolder': - case 'Horde_Kolab_Server_Object_Kolab_Administrator': - case 'Horde_Kolab_Server_Object_Kolab_Maintainer': - case 'Horde_Kolab_Server_Object_Kolab_Domainmaintainer': - return sprintf('cn=%s,%s', $id, $this->getBaseUid()); + return sprintf('%s,cn=external,%s', $id, $this->getBaseUid()); case 'Horde_Kolab_Server_Object_Kolabgroupofnames': case 'Horde_Kolab_Server_Object_Kolab_Distlist': if (!isset($info['visible']) || !empty($info['visible'])) { - return sprintf('cn=%s,%s', $id, $this->getBaseUid()); + return parent::generateServerUid($type, $id, $info); } else { - return sprintf('cn=%s,cn=internal,%s', $id, $this->getBaseUid()); + return sprintf('%s,cn=internal,%s', $id, $this->getBaseUid()); } + case 'Horde_Kolab_Server_Object_Kolabsharedfolder': + case 'Horde_Kolab_Server_Object_Kolab_Administrator': + case 'Horde_Kolab_Server_Object_Kolab_Maintainer': + case 'Horde_Kolab_Server_Object_Kolab_Domainmaintainer': default: return parent::generateServerUid($type, $id, $info); } diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php index 04b7b42cd..e8332c9fa 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php @@ -167,16 +167,16 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server /** * Save an object. * - * @param string $dn The DN of the object to be added. + * @param string $uid The UID of the object to be added. * @param array $data The attributes of the object to be added. * @param boolean $exists Does the object already exist on the server? * * @return boolean True if saving succeeded. */ - public function save($dn, $data, $exists = false) + public function save($uid, $data, $exists = false) { if ($exists === false) { - $entry = Net_LDAP2_Entry::createFresh($dn, $data); + $entry = Net_LDAP2_Entry::createFresh($uid, $data); $result = $this->_ldap->add($entry); if ($result instanceOf PEAR_Error) { throw new Horde_Kolab_Server_Exception($result->getMessage()); @@ -196,7 +196,7 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server unset($data[$key]); } } - $result = $this->_ldap->modify($dn, array('delete' => $deletes, + $result = $this->_ldap->modify($uid, array('delete' => $deletes, 'replace' => $data)); if ($result instanceOf PEAR_Error) { throw new Horde_Kolab_Server_Exception($result->getMessage()); @@ -500,13 +500,14 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server array_reverse($ocs); foreach ($ocs as $oc) { try { - Horde_Kolab_Server_Object::loadClass($oc); - return $oc; + $class_name = 'Horde_Kolab_Server_Object_' . ucfirst($oc); + Horde_Kolab_Server_Object::loadClass($class_name); + return $class_name; } catch (Horde_Kolab_Server_Exception $e) { } - if ($oc == 'top') { - return 'Horde_Kolab_Server_Object'; - } + } + if ($oc == 'top') { + return 'Horde_Kolab_Server_Object'; } throw new Horde_Kolab_Server_Exception(sprintf(_("Unkown object type for UID %s."), $uid));