From 5af7b0a394a289ecd266cbdb937beba49be52e4e Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Tue, 2 Jun 2009 16:02:50 +0200 Subject: [PATCH] Fix the handling of the connection parameters. --- framework/Kolab_Server/lib/Horde/Kolab/Server.php | 54 +++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Server.php index a64b381c4..269c81afb 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server.php @@ -143,60 +143,60 @@ abstract class Horde_Kolab_Server * missing or the given user could not * be identified. */ - static public function &singleton($params = null) + static public function &singleton($params = array()) { global $conf; static $instances = array(); - $server_params = array(); - if (!empty($params['driver'])) { $driver = $params['driver']; unset($params['driver']); } else if (isset($conf['kolab']['server']['driver'])) { $driver = $conf['kolab']['server']['driver']; if (isset($conf['kolab']['server']['params'])) { - $server_params = $conf['kolab']['server']['params']; + if (!is_array($params)) { + $params = $conf['kolab']['server']['params']; + } else { + $params = array_merge($conf['kolab']['server']['params'], + $params); + } } } else { throw new Horde_Kolab_Server_Exception( 'The configuration for the Kolab server driver is missing!'); } - if (!empty($params)) { - if (isset($params['user'])) { - $tmp_server = &Horde_Kolab_Server::factory($driver, $server_params); - - try { - $uid = $tmp_server->uidForIdOrMail($params['user']); - } catch (Horde_Kolab_Server_Exception $e) { - throw new Horde_Kolab_Server_Exception( - sprintf(_("Failed identifying the UID of the Kolab user %s. Error was: %s"), - $params['user'], - $e->getMessage())); - } - if ($uid === false) { - throw new Horde_Kolab_Server_MissingObjectException( - sprintf(_("Failed identifying the UID of the Kolab user %s."), - $params['user'])); - } - $params['uid'] = $uid; + if (isset($params['user']) && !isset($params['uid'])) { + $tmp_server = &Horde_Kolab_Server::factory($driver, $params); + + try { + $uid = $tmp_server->uidForIdOrMail($params['user']); + } catch (Horde_Kolab_Server_Exception $e) { + throw new Horde_Kolab_Server_Exception( + sprintf(_("Failed identifying the UID of the Kolab user %s. Error was: %s"), + $params['user'], + $e->getMessage())); + } + if ($uid === false) { + throw new Horde_Kolab_Server_MissingObjectException( + sprintf(_("Failed identifying the UID of the Kolab user %s. No such user."), + $params['user'])); } - $server_params = array_merge($server_params, $params); + $params['uid'] = $uid; } - if (!empty($params['write']) && isset($server_params['host_master'])) { - $server_params['host'] = $server_params['host_master']; + if (!empty($params['write']) && isset($params['host_master'])) { + $params['host'] = $params['host_master']; } - $sparam = $server_params; + $sparam = $params; $sparam['pass'] = isset($sparam['pass']) ? md5($sparam['pass']) : ''; ksort($sparam); $signature = serialize(array($driver, $sparam)); if (empty($instances[$signature])) { $instances[$signature] = &Horde_Kolab_Server::factory($driver, - $server_params); + $params); } return $instances[$signature]; -- 2.11.0