From e91271cff4fad7126441303cb962824046d2a439 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Mon, 15 Mar 2010 06:15:19 +0100 Subject: [PATCH] Move getSubpath() into the Namespace handler. Move setting the namespace handler into the restore() function. --- .../Kolab_Storage/lib/Horde/Kolab/Storage.php | 11 ++--- .../lib/Horde/Kolab/Storage/Folder.php | 48 ++++++++++------------ .../lib/Horde/Kolab/Storage/Namespace.php | 24 +++++++++-- 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php index c682f646d..d73f5d594 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php @@ -234,7 +234,7 @@ class Horde_Kolab_Storage foreach ($this->_folders as $key => $folder) { $result = $this->getConnection($key); - $folder->restore($this, $result->connection); + $folder->restore($this, $result->connection, $result->connection->getNamespace()); } $this->connect(); } @@ -336,11 +336,8 @@ class Horde_Kolab_Storage if (!isset($this->_folders[$folder])) { $result = $this->getConnection($folder); - $kf = new Horde_Kolab_Storage_Folder( - $result->name, - $result->connection->getNamespace() - ); - $kf->restore($this, $result->connection); + $kf = new Horde_Kolab_Storage_Folder($result->name); + $kf->restore($this, $result->connection, $result->connection->getNamespace()); $this->_folders[$folder] = &$kf; } return $this->_folders[$folder]; @@ -361,7 +358,7 @@ class Horde_Kolab_Storage $connection = &$this->connections[$connection]; } $folder = new Horde_Kolab_Storage_Folder(null); - $folder->restore($this, $connection); + $folder->restore($this, $connection, $connection->getNamespace()); return $folder; } diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php index e7e7a70a1..a99bef1a4 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php @@ -57,6 +57,14 @@ class Horde_Kolab_Storage_Folder public $name; /** + * A new folder name if the folder should be renamed on the next + * save. + * + * @var string + */ + var $new_name; + + /** * The connection specific for this folder. * * @var Horde_Kolab_Storage_Driver @@ -71,14 +79,6 @@ class Horde_Kolab_Storage_Folder private $_namespace; /** - * A new folder name if the folder should be renamed on the next - * save. - * - * @var string - */ - var $new_name; - - /** * The handler for the list of Kolab folders. * * @var Kolab_storage @@ -177,12 +177,9 @@ class Horde_Kolab_Storage_Folder * @param Horde_Kolab_Storage_Namespace $namespace The namespace handler for * this folder. */ - function __construct( - $name = null, - Horde_Kolab_Storage_Namespace $namespace - ) { + function __construct($name = null) + { $this->name = $name; - $this->_namespace = $namespace; $this->__wakeup(); } @@ -226,11 +223,14 @@ class Horde_Kolab_Storage_Folder * folders. * @param Horde_Kolab_Storage_Driver $connection The storage connection. */ - function restore(Horde_Kolab_Storage &$storage, - Horde_Kolab_Storage_Driver &$connection) - { + function restore( + Horde_Kolab_Storage &$storage, + Horde_Kolab_Storage_Driver &$connection, + Horde_Kolab_Storage_Namespace $namespace + ) { $this->_storage = $storage; $this->_connection = $connection; + $this->_namespace = $namespace; } /** @@ -498,17 +498,11 @@ class Horde_Kolab_Storage_Folder */ function getSubpath($name = null) { - if (!isset($this->_subpath) || isset($name)) { - if (!isset($name)) { - $name = $this->getName(); - } - - if (!preg_match(";(shared\.|INBOX[/]?|user/([^/]+)[/]?)([^@]*)(@.*)?;", $name, $matches)) { - return PEAR::raiseError(sprintf(_("Subpath of folder %s cannot be determined."), $name)); - } - - $this->_subpath = $matches[3]; - + if (!empty($name)) { + return $this->_namespace->getSubpath($name); + } + if (!isset($this->_subpath)) { + $this->_subpath = $this->_namespace->getSubpath($this->getName()); } return $this->_subpath; } diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php index 603d658d1..d1005ee96 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php @@ -73,9 +73,28 @@ class Horde_Kolab_Storage_Namespace } /** - * Generate a new name for a folder. + * Get the sub path for the given folder name. * - * @param string $name The new folder name. + * @param string $name The folder name. + * + * @return string The sub path. + */ + function getSubpath($name) + { + if (!preg_match(";(shared\.|INBOX[/]?|user/([^/]+)[/]?)([^@]*)(@.*)?;", $name, $matches)) { + throw new Horde_Kolab_Storage_Exception( + 'Subpath of folder %s cannot be determined.', $name + ); + } + return $matches[3]; + } + + /** + * Generate an IMAP folder name. + * + * @param string $name The new folder name. + * + * @return string The IMAP folder name. */ function setName($name) { @@ -85,5 +104,4 @@ class Horde_Kolab_Storage_Namespace } return Horde_String::convertCharset($name, Horde_Nls::getCharset(), 'UTF7-IMAP'); } - } \ No newline at end of file -- 2.11.0