From 1af1106d5a058ed455c763126f3df9a1958ac250 Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Fri, 28 Jan 2011 15:41:04 +0100 Subject: [PATCH] Fix retrieving share permissions when using listShares(). --- framework/Share/lib/Horde/Share/Sqlng.php | 25 ++++--------------------- framework/Share/test/Horde/Share/Base.php | 31 +++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/framework/Share/lib/Horde/Share/Sqlng.php b/framework/Share/lib/Horde/Share/Sqlng.php index 3aef6e871..a8508c6d4 100644 --- a/framework/Share/lib/Horde/Share/Sqlng.php +++ b/framework/Share/lib/Horde/Share/Sqlng.php @@ -101,7 +101,6 @@ class Horde_Share_Sqlng extends Horde_Share_Sql list($users, $groups, $shareids) = $this->_getUserAndGroupShares($userid, $perms); } - $shares = array(); if (is_null($params['sort_by'])) { $sortfield = 'share_id'; } elseif ($params['sort_by'] == 'owner' || $params['sort_by'] == 'id') { @@ -122,29 +121,13 @@ class Horde_Share_Sqlng extends Horde_Share_Sql } catch (Horde_Db_Exception $e) { throw new Horde_Share_Exception($e->getMessage()); } - foreach ($rows as $share) { - $shares[(int)$share['share_id']] = $this->_fromDriverCharset($share); - } - - if (!empty($userid)) { - foreach ($users as $user) { - if (isset($shares[$user['share_id']])) { - $shares[$user['share_id']]['perm']['users'] = $this->_buildPermsFromRow($user, 'user_uid'); - } - } - foreach ($groups as $group) { - if (isset($shares[$group['share_id']])) { - $shares[$group['share_id']]['perm']['groups'] = $this->_buildPermsFromRow($group, 'group_uid'); - } - } - } $sharelist = array(); - foreach ($shares as $data) { - $this->_getSharePerms($data); - $sharelist[$data['share_name']] = $this->_createObject($data); + foreach ($rows as $share) { + $share = $this->_fromDriverCharset($share); + $this->_loadPermissions($share); + $sharelist[$share['share_name']] = $this->_createObject($share); } - unset($shares); // Run the results through the callback, if configured. if (!empty($this->_callbacks['list'])) { diff --git a/framework/Share/test/Horde/Share/Base.php b/framework/Share/test/Horde/Share/Base.php index 5d1318324..47a612c29 100644 --- a/framework/Share/test/Horde/Share/Base.php +++ b/framework/Share/test/Horde/Share/Base.php @@ -26,9 +26,12 @@ class Horde_Share_Test_Base extends Horde_Test_Case public function addShare() { $share = self::$share->newShare('john', 'myshare'); + $this->assertInstanceOf('Horde_Share_Object', $share); $share->set('name', 'My Share'); $share->set('desc', '行事曆'); - $this->assertInstanceOf('Horde_Share_Object', $share); + $share->addDefaultPermission(Horde_Perms::SHOW); + $share->addUserPermission('jane', Horde_Perms::SHOW); + $share->addGroupPermission('mygroup', Horde_Perms::SHOW); self::$share->addShare($share); // Add a child to the share to test hierarchical functions @@ -47,11 +50,9 @@ class Horde_Share_Test_Base extends Horde_Test_Case // System share. $share = self::$share->newShare(null, 'systemshare'); $share->set('name', 'System Share'); - $perm = $share->getPermission(); - $this->assertInstanceOf('Horde_Perms_Permission', $perm); - $perm->addDefaultPermission(Horde_Perms::SHOW | Horde_Perms::READ); - $perm->addGuestPermission(Horde_Perms::SHOW); - $share->setPermission($perm); + $this->assertInstanceOf('Horde_Perms_Permission', $share->getPermission()); + $share->addDefaultPermission(Horde_Perms::SHOW | Horde_Perms::READ); + $share->addGuestPermission(Horde_Perms::SHOW); $share->save(); $this->assertTrue($share->hasPermission('john', Horde_Perms::SHOW)); $this->assertTrue($share->hasPermission('john', Horde_Perms::READ)); @@ -356,17 +357,35 @@ class Horde_Share_Test_Base extends Horde_Test_Case public function getPermission() { + $permission = new Horde_Perms_Permission('myshare'); + $permission->addDefaultPermission(Horde_Perms::SHOW); + $permission->addGuestPermission(0); + $permission->addCreatorPermission(0); + $permission->addUserPermission('jane', Horde_Perms::SHOW); + $permission->addGroupPermission('mygroup', Horde_Perms::SHOW); + $this->assertEquals($permission, self::$shares['myshare']->getPermission()); + self::$share->resetCache(); + $this->assertEquals($permission, self::$share->getShare('myshare')->getPermission()); + self::$share->resetCache(); + $shares = self::$share->getShares(array(self::$shares['myshare']->getId())); + $this->assertEquals($permission, $shares['myshare']->getPermission()); + self::$share->resetCache(); + $shares = self::$share->listShares('john'); + $this->assertEquals($permission, $shares['myshare']->getPermission()); + $permission = new Horde_Perms_Permission('systemshare'); $permission->addDefaultPermission(Horde_Perms::SHOW | Horde_Perms::READ); $permission->addGuestPermission(Horde_Perms::SHOW); $permission->addCreatorPermission(0); $this->assertEquals($permission, self::$shares['systemshare']->getPermission()); + $permission = new Horde_Perms_Permission('janeshare'); $permission->addDefaultPermission(0); $permission->addGuestPermission(0); $permission->addCreatorPermission(0); $permission->addUserPermission('john', Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::EDIT); $this->assertEquals($permission, self::$shares['janeshare']->getPermission()); + $permission = new Horde_Perms_Permission('groupshare'); $permission->addDefaultPermission(0); $permission->addGuestPermission(0); -- 2.11.0