/** * Return an Kolab_Driver instance. * * @return Kolab_Driver */ public function create(Horde_Injector $injector) { $driver = Horde_String::ucfirst($GLOBALS['conf']['storage']['driver']); $signature = serialize(array($driver, $GLOBALS['conf']['storage']['params']['driverconfig'])); if (empty($this->_instances[$signature])) { switch ($driver) { case 'Sql': try { if ($GLOBALS['conf']['storage']['params']['driverconfig'] == 'horde') { $db = $injector->getInstance('Horde_Db_Adapter'); } else { $db = $injector->getInstance('Horde_Core_Factory_Db')->create('kolab', 'storage'); } } catch (Horde_Exception $e) { throw new Kolab_Exception($e); } $params = array('db' => $db); break; case 'Ldap': try { $params = array('ldap' => $injector->getIntance('Horde_Core_Factory_Ldap')->create('kolab', 'storage')); } catch (Horde_Exception $e) { throw new Kolab_Exception($e); } break; } $class = 'Kolab_Driver_' . $driver; $this->_instances[$signature] = new $class($params); } return $this->_instances[$signature]; }