From: Gunnar Wrobel Date: Fri, 17 Dec 2010 22:04:40 +0000 (+0100) Subject: Cache the namespace handler. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=ade7c8c68b2d802a77cb6c5e4204f32582e6c192;p=horde.git Cache the namespace handler. --- diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Base.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Base.php index 1d5a2ba8b..a5557813f 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Base.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Base.php @@ -43,6 +43,13 @@ implements Horde_Kolab_Storage_Driver private $_params; /** + * Memory cache for the namespace of this driver. + * + * @var Horde_Kolab_Storage_Folder_Namespace + */ + protected $_namespace; + + /** * Constructor. * * @param Horde_Kolab_Storage_Factory $factory A factory for helper objects. @@ -86,11 +93,15 @@ implements Horde_Kolab_Storage_Driver */ public function getNamespace() { - if (isset($this->_params['namespaces'])) { - return $factory->createNamespace( - 'config', $this->_params['namespaces'] - ); + if ($this->_namespace === null) { + if (isset($this->_params['namespaces'])) { + $this->_namespace = $this->_factory->createNamespace( + 'config', $this->_params['namespaces'] + ); + } else { + $this->_namespace = $this->_factory->createNamespace('fixed'); + } } - return $this->_factory->createNamespace('fixed'); + return $this->_namespace; } } \ No newline at end of file diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php index d070c5918..f8f3bbda3 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php @@ -285,15 +285,15 @@ extends Horde_Kolab_Storage_Driver_Base if ($this->_imap->queryCapability('ACL') === true) { if ($folder->getOwner() == $this->getAuth()) { try { - return $this->_getAcl($folder->getName()); + return $this->_getAcl($folder->getPath()); } catch (Exception $e) { - return array($this->getAuth() => $this->_getMyAcl($folder->getName())); + return array($this->getAuth() => $this->_getMyAcl($folder->getPath())); } } else { - $acl = $this->_getMyAcl($folder->getName()); + $acl = $this->_getMyAcl($folder->getPath()); if (strpos($acl, 'a')) { try { - return $this->_getAcl($folder->getName()); + return $this->_getAcl($folder->getPath()); } catch (Exception $e) { } } @@ -407,7 +407,8 @@ extends Horde_Kolab_Storage_Driver_Base */ public function getNamespace() { - if ($this->_imap->queryCapability('NAMESPACE') === true) { + if ($this->_namespace === null + && $this->_imap->queryCapability('NAMESPACE') === true) { $c = array(); $configuration = $this->getParam('namespaces', array()); foreach ($this->_imap->getNamespaces() as $namespace) { @@ -416,7 +417,7 @@ extends Horde_Kolab_Storage_Driver_Base } $c[] = $namespace; } - return $this->getFactory()->createNamespace('imap', $c); + $this->_namespace = $this->getFactory()->createNamespace('imap', $c); } return parent::getNamespace(); }