From 0e1581c1dbe143d5e48cd968ed5431ee20b9feda Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Thu, 11 Mar 2010 21:03:37 +0100
Subject: [PATCH] Add the draft of a namespace handler.
---
.../Kolab_Storage/lib/Horde/Kolab/Storage.php | 5 +-
.../lib/Horde/Kolab/Storage/Driver/Imap.php | 10 ++
.../lib/Horde/Kolab/Storage/Folder.php | 22 +++-
.../lib/Horde/Kolab/Storage/Namespace.php | 32 ++++++
framework/Kolab_Storage/package.xml | 118 ++++++++++++---------
.../test/Horde/Kolab/Storage/FolderTest.php | 10 +-
6 files changed, 141 insertions(+), 56 deletions(-)
create mode 100644 framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php
index 7fe5bc4b9..c682f646d 100644
--- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage.php
@@ -336,7 +336,10 @@ class Horde_Kolab_Storage
if (!isset($this->_folders[$folder])) {
$result = $this->getConnection($folder);
- $kf = new Horde_Kolab_Storage_Folder($result->name);
+ $kf = new Horde_Kolab_Storage_Folder(
+ $result->name,
+ $result->connection->getNamespace()
+ );
$kf->restore($this, $result->connection);
$this->_folders[$folder] = &$kf;
}
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 8c1a50589..5df5796ff 100644
--- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php
@@ -52,6 +52,16 @@ class Horde_Kolab_Storage_Driver_Imap extends Horde_Kolab_Storage_Driver
}
/**
+ * Retrieve the namespace information for this connection.
+ *
+ * @return Horde_Kolab_Storage_Namespace The initialized namespace handler.
+ */
+ public function getNamespace()
+ {
+ return new Horde_Kolab_Storage_Namespace();
+ }
+
+ /**
* Retrieves a list of mailboxes on the server.
*
* @return array The list of mailboxes.
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php
index a5689ec6e..2ee2a3d1b 100644
--- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php
@@ -61,7 +61,14 @@ class Horde_Kolab_Storage_Folder
*
* @var string
*/
- var $name;
+ public $name;
+
+ /**
+ * The namespace handler for this folder
+ *
+ * @var Horde_Kolab_Storage_Namespace
+ */
+ private $_namespace;
/**
* A new folder name if the folder should be renamed on the next
@@ -166,11 +173,16 @@ class Horde_Kolab_Storage_Folder
/**
* Creates a Kolab Folder representation.
*
- * @param string $name Name of the folder
+ * @param string $name Name of the folder
+ * @param Horde_Kolab_Storage_Namespace $namespace The namespace handler for
+ * this folder.
*/
- function __construct($name = null)
- {
- $this->name = $name;
+ function __construct(
+ $name = null,
+ Horde_Kolab_Storage_Namespace $namespace
+ ) {
+ $this->name = $name;
+ $this->_namespace = $namespace;
$this->__wakeup();
}
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php
new file mode 100644
index 000000000..6411fc697
--- /dev/null
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php
@@ -0,0 +1,32 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+
+/**
+ * The Horde_Kolab_Storage_Namespace:: class handles IMAP namespaces and allows
+ * to derive folder information from folder names.
+ *
+ * Copyright 2004-2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category Kolab
+ * @package Kolab_Storage
+ * @author Gunnar Wrobel