From 4a1bf5515c29fe3fa47ae19f5c8c733551ce6cbc Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Wed, 17 Mar 2010 20:49:35 +0100 Subject: [PATCH] Fix acl handling. Improve namespace handling. Adapt tests. --- .../lib/Horde/Kolab/Storage/Driver.php | 13 ++++++++++-- .../lib/Horde/Kolab/Storage/Driver/Imap.php | 16 ++------------- .../lib/Horde/Kolab/Storage/Folder.php | 24 +--------------------- .../test/Horde/Kolab/Storage/PermsTest.php | 4 ++-- .../test/Horde/Kolab/Storage/StorageTest.php | 1 + 5 files changed, 17 insertions(+), 41 deletions(-) diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php index 956ed5052..f51489628 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php @@ -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 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 5df5796ff..bd05be32b 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver/Imap.php @@ -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')); } } } diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php index e9e88630b..d3ed639cf 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Folder.php @@ -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); } /** diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/PermsTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/PermsTest.php index 0786c02cc..2699610a5 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/PermsTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/PermsTest.php @@ -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']); diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/StorageTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/StorageTest.php index 082545da5..c8a02b523 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/StorageTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/StorageTest.php @@ -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', -- 2.11.0