From: Gunnar Wrobel Date: Thu, 11 Mar 2010 20:03:37 +0000 (+0100) Subject: Add the draft of a namespace handler. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=0e1581c1dbe143d5e48cd968ed5431ee20b9feda;p=horde.git Add the draft of a namespace handler. --- 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 + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ +class Horde_Kolab_Storage_Namespace +{ +} \ No newline at end of file diff --git a/framework/Kolab_Storage/package.xml b/framework/Kolab_Storage/package.xml index 31e10f22e..cfd8824d2 100644 --- a/framework/Kolab_Storage/package.xml +++ b/framework/Kolab_Storage/package.xml @@ -1,16 +1,12 @@ - + Kolab_Storage pear.horde.org A package for handling Kolab data stored on an IMAP server. Storing user data in an IMAP account belonging to the user is one of the Kolab server core concepts. This package provides all the necessary means to deal with this type of data storage - effectively. - + effectively. Gunnar Wrobel wrobel @@ -35,7 +31,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> jan@horde.org yes - 2009-02-24 + 2010-03-11 + 0.4.0 0.1.0 @@ -46,12 +43,12 @@ http://pear.php.net/dtd/package-2.0.xsd"> LGPL - * Fixed list driver to prevent overwriting folder data when - authenticating twice (relevant for testing). - * Allow to supress triggering (relevant for testing). +* Fixed list driver to prevent overwriting folder data when + authenticating twice (relevant for testing). +* Allow to supress triggering (relevant for testing). - + @@ -73,18 +70,20 @@ http://pear.php.net/dtd/package-2.0.xsd"> - + + + - - - + + + @@ -93,13 +92,15 @@ http://pear.php.net/dtd/package-2.0.xsd"> - + + - + + + - @@ -181,45 +182,43 @@ http://pear.php.net/dtd/package-2.0.xsd"> - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - 2008-12-05 - 0.3.0 + 0.1.0 0.1.0 alpha alpha + 2008-09-11 LGPL - * Added attachment support. - * Fixed triggering folders. - * Fixed renaming default folders. - * Implemented extended free/busy access concept. - * kolab/issue3292 (Sharing default groupware resources does not work - in the web client) +* Initial release. @@ -233,7 +232,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> alpha LGPL - * Fixed the Kolab_Storage::getFolder() function. + +* Fixed the Kolab_Storage::getFolder() function. * Added Kolab_List::getForeignDefault() to retrieve the default folders of other users. Also fixes issues with overlapping default folders. * Fixed retrieval of general Kolab annotations. @@ -245,18 +245,40 @@ http://pear.php.net/dtd/package-2.0.xsd"> + 2008-12-05 - 0.1.0 + 0.3.0 0.1.0 alpha alpha - 2008-09-11 LGPL - * Initial release. +* Added attachment support. +* Fixed triggering folders. +* Fixed renaming default folders. +* Implemented extended free/busy access concept. +* kolab/issue3292 (Sharing default groupware resources does not work + in the web client) + + + + + 0.4.0 + 0.1.0 + + + alpha + alpha + + 2010-03-11 + LGPL + +* Fixed list driver to prevent overwriting folder data when + authenticating twice (relevant for testing). +* Allow to supress triggering (relevant for testing). diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/FolderTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/FolderTest.php index 107b97207..cef00f430 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/FolderTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/FolderTest.php @@ -63,7 +63,10 @@ class Horde_Kolab_Storage_FolderTest extends Horde_Kolab_Storage_Scenario */ public function testConstruct() { - $folder = new Horde_Kolab_Storage_Folder('INBOX/Contacts'); + $folder = new Horde_Kolab_Storage_Folder( + 'INBOX/Contacts', + new Horde_Kolab_Storage_Namespace() + ); $this->assertEquals('INBOX/Contacts', $folder->name); $this->assertTrue(is_array($folder->_data)); $this->assertTrue(empty($folder->_data)); @@ -76,7 +79,10 @@ class Horde_Kolab_Storage_FolderTest extends Horde_Kolab_Storage_Scenario public function testSetName() { $GLOBALS['language'] = 'de_DE'; - $folder = new Horde_Kolab_Storage_Folder('INBOX/Contacts'); + $folder = new Horde_Kolab_Storage_Folder( + 'INBOX/Contacts', + new Horde_Kolab_Storage_Namespace() + ); $folder->setName('TestAÖÜ'); $this->assertEquals(Horde_String::convertCharset('INBOX/TestAÖÜ', Horde_Nls::getCharset(), 'UTF7-IMAP'), $folder->new_name); }