From 5661f958d4461ad4771915e16b355b15bc3ee7cc Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Fri, 10 Apr 2009 13:00:38 +0200 Subject: [PATCH] Fix the generation of IDs if on of the ID attributes has more than one value. --- .../Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php | 6 +++++- .../Kolab_Server/lib/Horde/Kolab/Server/Object/Inetorgperson.php | 6 +++++- .../Kolab_Server/lib/Horde/Kolab/Server/Object/Kolab/User.php | 6 +++++- framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php | 9 +++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php index f8d07518d..abd7dce36 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php @@ -81,7 +81,11 @@ class Horde_Kolab_Server_Object_Groupofnames extends Horde_Kolab_Server_Object */ public function generateId($info) { - return trim(self::ATTRIBUTE_CN . '=' . $info[self::ATTRIBUTE_CN], " \t\n\r\0\x0B,"); + $id = $info[self::ATTRIBUTE_CN]; + if (is_array($id)) { + $id = $id[0]; + } + return trim(self::ATTRIBUTE_CN . '=' . $id, " \t\n\r\0\x0B,"); } /** diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Inetorgperson.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Inetorgperson.php index 384a87081..ef2e6eb28 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Inetorgperson.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Inetorgperson.php @@ -159,7 +159,11 @@ class Horde_Kolab_Server_Object_Inetorgperson extends Horde_Kolab_Server_Object_ $fieldarray = array(); foreach ($id_mapfields as $mapfield) { if (isset($info[$mapfield])) { - $fieldarray[] = $this->server->structure->quoteForUid($info[$mapfield]); + $id = $info[$mapfield]; + if (is_array($id)) { + $id = $id[0]; + } + $fieldarray[] = $this->server->structure->quoteForUid($id); } else { $fieldarray[] = ''; } diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolab/User.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolab/User.php index 710c3e6f9..ae816d6ed 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolab/User.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolab/User.php @@ -251,7 +251,11 @@ class Horde_Kolab_Server_Object_Kolab_User extends Horde_Kolab_Server_Object_Kol $fieldarray = array(); foreach ($id_mapfields as $mapfield) { if (isset($info[$mapfield])) { - $fieldarray[] = $this->server->structure->quoteForUid($info[$mapfield]); + $id = $info[$mapfield]; + if (is_array($id)) { + $id = $id[0]; + } + $fieldarray[] = $this->server->structure->quoteForUid($id); } else { $fieldarray[] = ''; } diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php index e36c571cf..a029ab889 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php @@ -193,9 +193,14 @@ class Horde_Kolab_Server_Object_Person extends Horde_Kolab_Server_Object public function generateId($info) { if (!empty($info[self::ATTRIBUTE_CN])) { - return self::ATTRIBUTE_CN . '=' . $this->server->structure->quoteForUid($info[self::ATTRIBUTE_CN]); + $id = $info[self::ATTRIBUTE_CN]; + } else { + $id = $info[self::ATTRIBUTE_SN]; } - return self::ATTRIBUTE_CN . '=' . $this->server->structure->quoteForUid($info[self::ATTRIBUTE_SN]); + if (is_array($id)) { + $id = $id[0]; + } + return self::ATTRIBUTE_CN . '=' . $this->server->structure->quoteForUid($id); } /** -- 2.11.0