Add the draft of a namespace handler.
authorGunnar Wrobel <p@rdus.de>
Thu, 11 Mar 2010 20:03:37 +0000 (21:03 +0100)
committerGunnar Wrobel <wrobel@temple.(none)>
Thu, 11 Mar 2010 21:35:04 +0000 (22:35 +0100)
framework/Kolab_Storage/lib/Horde/Kolab/Storage.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php [new file with mode: 0644]
framework/Kolab_Storage/package.xml
framework/Kolab_Storage/test/Horde/Kolab/Storage/FolderTest.php

index 7fe5bc4..c682f64 100644 (file)
@@ -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;
         }
index 8c1a505..5df5796 100644 (file)
@@ -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.
index a5689ec..2ee2a3d 100644 (file)
@@ -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 (file)
index 0000000..6411fc6
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+/**
+ * The Horde_Kolab_Storage_Namespace:: class handles IMAP namespaces and allows
+ * to derive folder information from folder names.
+ *
+ * PHP version 5
+ *
+ * @category Kolab
+ * @package  Kolab_Storage
+ * @author   Gunnar Wrobel <wrobel@pardus.de>
+ * @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 <wrobel@pardus.de>
+ * @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
index 31e10f2..cfd8824 100644 (file)
@@ -1,16 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Kolab_Storage</name>
  <channel>pear.horde.org</channel>
  <summary>A package for handling Kolab data stored on an IMAP server.</summary>
  <description>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.
- </description>
+ effectively.</description>
  <lead>
   <name>Gunnar Wrobel</name>
   <user>wrobel</user>
@@ -35,7 +31,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-02-24</date>
+ <date>2010-03-11</date>
+ <time>20:56:19</time>
  <version>
   <release>0.4.0</release>
   <api>0.1.0</api>
@@ -46,12 +43,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
  <notes>
-  * 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).
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="doc">
     <dir name="Horde">
      <dir name="Kolab">
@@ -73,18 +70,20 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Kolab">
-      <file name="Storage.php" role="php" />
       <dir name="Storage">
+       <dir name="Driver">
+        <file name="Imap.php" role="php" />
+       </dir> <!-- /lib/Horde/Kolab/Storage/Driver -->
        <file name="Cache.php" role="php" />
        <file name="Data.php" role="php" />
        <file name="Driver.php" role="php" />
-       <dir name="Driver">
-        <file name="Imap.php" role="php" />
-       </dir> <!-- /lib/Horde/Kolab/Storage/Driver -->
        <file name="Exception.php" role="php" />
        <file name="Folder.php" role="php" />
+       <file name="Namespace.php" role="php" />
        <file name="Permission.php" role="php" />
+       <file name="Perms.php" role="php" />
       </dir> <!-- /lib/Horde/Kolab/Storage -->
+      <file name="Storage.php" role="php" />
      </dir> <!-- /lib/Horde/Kolab -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
@@ -93,13 +92,15 @@ http://pear.php.net/dtd/package-2.0.xsd">
      <dir name="Kolab">
       <dir name="Storage">
        <file name="AllTests.php" role="test" />
-       <file name="Autoload.php" role="php" />
+       <file name="AttachmentTest.php" role="test" />
+       <file name="Autoload.php" role="test" />
        <file name="CacheTest.php" role="test" />
        <file name="DataTest.php" role="test" />
        <file name="FolderTest.php" role="test" />
-       <file name="Scenario.php" role="php" />
+       <file name="PermsTest.php" role="test" />
+       <file name="phpunit.xml" role="test" />
+       <file name="Scenario.php" role="test" />
        <file name="StorageTest.php" role="test" />
-       <file name="PermissionTest.php" role="test" />
       </dir> <!-- /test/Horde/Kolab/Storage -->
      </dir> <!-- /test/Horde/Kolab -->
     </dir> <!-- /test/Horde -->
@@ -181,45 +182,43 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="doc/Horde/Kolab/Storage/usage.txt" as="Horde/Kolab/Storage/usage.txt" />
-   <install name="examples/Horde/Kolab/Storage/list.php" as="Horde/Kolab/Storage/list.php" />
-   <install name="lib/Horde/Kolab/Storage.php" as="Horde/Kolab/Storage.php" />
-   <install name="lib/Horde/Kolab/Storage/Cache.php" as="Horde/Kolab/Storage/Cache.php" />
-   <install name="lib/Horde/Kolab/Storage/Data.php" as="Horde/Kolab/Storage/Data.php" />
-   <install name="lib/Horde/Kolab/Storage/Driver.php" as="Horde/Kolab/Storage/Driver.php" />
-   <install name="lib/Horde/Kolab/Storage/Driver/Imap.php" as="Horde/Kolab/Storage/Driver/Imap.php" />
-   <install name="lib/Horde/Kolab/Storage/Exception.php" as="Horde/Kolab/Storage/Exception.php" />
-   <install name="lib/Horde/Kolab/Storage/Folder.php" as="Horde/Kolab/Storage/Folder.php" />
-   <install name="lib/Horde/Kolab/Storage/Permission.php" as="Horde/Kolab/Storage/Permission.php" />
-   <install name="test/Horde/Kolab/Storage/AllTests.php" as="Horde/Kolab/Storage/AllTests.php" />
-   <install name="test/Horde/Kolab/Storage/Autoload.php" as="Horde/Kolab/Storage/Autoload.php" />
-   <install name="test/Horde/Kolab/Storage/CacheTest.php" as="Horde/Kolab/Storage/CacheTest.php" />
-   <install name="test/Horde/Kolab/Storage/DataTest.php" as="Horde/Kolab/Storage/DataTest.php" />
-   <install name="test/Horde/Kolab/Storage/FolderTest.php" as="Horde/Kolab/Storage/FolderTest.php" />
-   <install name="test/Horde/Kolab/Storage/Scenario.php" as="Horde/Kolab/Storage/Scenario.php" />
-   <install name="test/Horde/Kolab/Storage/StorageTest.php" as="Horde/Kolab/Storage/StorageTest.php" />
-   <install name="test/Horde/Kolab/Storage/PermissionTest.php" as="Horde/Kolab/Storage/PermissionTest.php" />
+   <install as="Horde/Kolab/Storage/usage.txt" name="doc/Horde/Kolab/Storage/usage.txt" />
+   <install as="Horde/Kolab/Storage.php" name="lib/Horde/Kolab/Storage.php" />
+   <install as="Horde/Kolab/Storage/Cache.php" name="lib/Horde/Kolab/Storage/Cache.php" />
+   <install as="Horde/Kolab/Storage/Data.php" name="lib/Horde/Kolab/Storage/Data.php" />
+   <install as="Horde/Kolab/Storage/Driver.php" name="lib/Horde/Kolab/Storage/Driver.php" />
+   <install as="Horde/Kolab/Storage/Exception.php" name="lib/Horde/Kolab/Storage/Exception.php" />
+   <install as="Horde/Kolab/Storage/Folder.php" name="lib/Horde/Kolab/Storage/Folder.php" />
+   <install as="Horde/Kolab/Storage/Namespace.php" name="lib/Horde/Kolab/Storage/Namespace.php" />
+   <install as="Horde/Kolab/Storage/Permission.php" name="lib/Horde/Kolab/Storage/Permission.php" />
+   <install as="Horde/Kolab/Storage/Perms.php" name="lib/Horde/Kolab/Storage/Perms.php" />
+   <install as="Horde/Kolab/Storage/Driver/Imap.php" name="lib/Horde/Kolab/Storage/Driver/Imap.php" />
+   <install as="Horde/Kolab/Storage/AllTests.php" name="test/Horde/Kolab/Storage/AllTests.php" />
+   <install as="Horde/Kolab/Storage/AttachmentTest.php" name="test/Horde/Kolab/Storage/AttachmentTest.php" />
+   <install as="Horde/Kolab/Storage/Autoload.php" name="test/Horde/Kolab/Storage/Autoload.php" />
+   <install as="Horde/Kolab/Storage/CacheTest.php" name="test/Horde/Kolab/Storage/CacheTest.php" />
+   <install as="Horde/Kolab/Storage/DataTest.php" name="test/Horde/Kolab/Storage/DataTest.php" />
+   <install as="Horde/Kolab/Storage/FolderTest.php" name="test/Horde/Kolab/Storage/FolderTest.php" />
+   <install as="Horde/Kolab/Storage/PermsTest.php" name="test/Horde/Kolab/Storage/PermsTest.php" />
+   <install as="Horde/Kolab/Storage/phpunit.xml" name="test/Horde/Kolab/Storage/phpunit.xml" />
+   <install as="Horde/Kolab/Storage/Scenario.php" name="test/Horde/Kolab/Storage/Scenario.php" />
+   <install as="Horde/Kolab/Storage/StorageTest.php" name="test/Horde/Kolab/Storage/StorageTest.php" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
-   <date>2008-12-05</date>
    <version>
-    <release>0.3.0</release>
+    <release>0.1.0</release>
     <api>0.1.0</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
+   <date>2008-09-11</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
-    * 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.
    </notes>
   </release>
   <release>
@@ -233,7 +232,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <api>alpha</api>
    </stability>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Fixed the Kolab_Storage::getFolder() function.
+   <notes>
+* 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">
    </notes>
   </release>
   <release>
+   <date>2008-12-05</date>
    <version>
-    <release>0.1.0</release>
+    <release>0.3.0</release>
     <api>0.1.0</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2008-09-11</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
-     * 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)
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.4.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-03-11</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+* Fixed list driver to prevent overwriting folder data when
+  authenticating twice (relevant for testing).
+* Allow to supress triggering (relevant for testing).
    </notes>
   </release>
  </changelog>
index 107b972..cef00f4 100644 (file)
@@ -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);
     }