Fix acl handling. Improve namespace handling. Adapt tests.
authorGunnar Wrobel <p@rdus.de>
Wed, 17 Mar 2010 19:49:35 +0000 (20:49 +0100)
committerGunnar Wrobel <wrobel@temple.(none)>
Wed, 17 Mar 2010 20:23:34 +0000 (21:23 +0100)
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php
framework/Kolab_Storage/test/Horde/Kolab/Storage/PermsTest.php
framework/Kolab_Storage/test/Horde/Kolab/Storage/StorageTest.php

index 956ed50..f514896 100644 (file)
@@ -25,9 +25,8 @@
  * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
  * @link     http://pear.horde.org/index.php?package=Kolab_Storage
  */
-class Horde_Kolab_Storage_Driver
+abstract class Horde_Kolab_Storage_Driver
 {
-
     /**
      * Factory.
      *
@@ -45,6 +44,16 @@ class Horde_Kolab_Storage_Driver
         }
         throw new Horde_Kolab_Storage_Exception(
             'Driver type definition "' . $class . '" missing.');
+    }
 
+    /**
+     * 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();
     }
+
 }
\ No newline at end of file
index 5df5796..bd05be3 100644 (file)
@@ -52,16 +52,6 @@ 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.
@@ -292,11 +282,9 @@ class Horde_Kolab_Storage_Driver_Imap extends Horde_Kolab_Storage_Driver
             return $this->_imap->getACL($folder);
         } catch (Exception $e) {
             try {
-                return $this->_imap->getMyACLRights($folder);
+                return array(Horde_Auth::getAuth() => str_split($this->_imap->getMyACLRights($folder)));
             } catch (Exception $e) {
-                $acl = array();
-                $acl[Horde_Auth::getAuth()] = 'lrid';
-                return $acl;
+                return array(Horde_Auth::getAuth() => str_split('lrid'));
             }
         }            
     }
index e9e8863..d3ed639 100644 (file)
@@ -1276,29 +1276,7 @@ class Horde_Kolab_Storage_Folder
      */
     function getACL()
     {
-        $acl = $this->_connection->getACL($this->name);
-
-        /*
-         * Check if the getPerm comes from the owner in this case we
-         * can use getACL to have all the right of the share Otherwise
-         * we just ask for the right of the current user for a folder
-         */
-        if ($this->getOwner() == Horde_Auth::getAuth()) {
-            return $acl;
-        } else {
-            if (!is_a($acl, 'PEAR_Error')) {
-                return $acl;
-            }
-
-            $my_rights = $this->_connection->getMyrights($this->name);
-            if (is_a($my_rights, 'PEAR_Error')) {
-                return $my_rights;
-            }
-
-            $acl = array();
-            $acl[Horde_Auth::getAuth()] = $my_rights;
-            return $acl;
-        }
+        return $this->_connection->getACL($this->name);
     }
 
     /**
index 0786c02..2699610 100644 (file)
@@ -70,7 +70,7 @@ class Horde_Kolab_Storage_PermsTest extends PHPUnit_Framework_TestCase
             )
         );
         $perms = new Horde_Kolab_Storage_Permission($folder);
-    $data = $perms->getData();
+        $data = $perms->getData();
         $this->assertContains('users', array_keys($data));
         $this->assertContains('wrobel', array_keys($data['users']));
         $this->assertContains('reader', array_keys($data['users']));
@@ -100,7 +100,7 @@ class Horde_Kolab_Storage_PermsTest extends PHPUnit_Framework_TestCase
             'wrobel'
         );
         $perms = new Horde_Kolab_Storage_Permission($folder);
-    $data = $perms->getData();
+        $data = $perms->getData();
         unset($data['guest']);
         unset($data['default']);
         unset($data['users']['viewer']);
index 082545d..c8a02b5 100644 (file)
@@ -139,6 +139,7 @@ class Horde_Kolab_Storage_StorageTest extends Horde_Kolab_Storage_Scenario
     {
         $GLOBALS['language'] = 'de_DE';
         $storage = new Horde_Kolab_Storage(
+            new Horde_Kolab_Storage_Connection(),
             'Imap',
             array(
                 'username' => 'test',