diff options
author | mattpiwik <matthieu.aubry@gmail.com> | 2011-02-04 09:29:32 +0300 |
---|---|---|
committer | mattpiwik <matthieu.aubry@gmail.com> | 2011-02-04 09:29:32 +0300 |
commit | 3b6a5ea4f53dc0a46f5ce1d38dd27d4c6cb64cd6 (patch) | |
tree | 227bffe69120af2f8863e57a92495e48326d1e02 /plugins/UsersManager | |
parent | 55fb6f63c4928721d885d1b8aa431f4aa7ace714 (diff) |
Fixes #2062
git-svn-id: http://dev.piwik.org/svn/trunk@3845 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/UsersManager')
-rw-r--r-- | plugins/UsersManager/API.php | 21 | ||||
-rw-r--r-- | plugins/UsersManager/tests/UsersManager.test.php | 17 |
2 files changed, 34 insertions, 4 deletions
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 2c7231ac9a..dfb46816de 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -182,7 +182,28 @@ class Piwik_UsersManager_API $return[$user['login']] = $user['access']; } return $return; + } + + public function getUsersWithSiteAccess( $idSite, $access ) + { + Piwik::checkUserHasAdminAccess( $idSite ); + $this->checkAccessType( $access ); + $db = Zend_Registry::get('db'); + $users = $db->fetchAll("SELECT login + FROM ".Piwik_Common::prefixTable("access") + ." WHERE idsite = ? AND access = ?", array($idSite, $access)); + $logins = array(); + foreach($users as $user) + { + $logins[] = $user['login']; + } + if(empty($logins)) + { + return array(); + } + $logins = implode(',', $logins); + return $this->getUsers($logins); } /** diff --git a/plugins/UsersManager/tests/UsersManager.test.php b/plugins/UsersManager/tests/UsersManager.test.php index 133dfc0848..ce772b2cee 100644 --- a/plugins/UsersManager/tests/UsersManager.test.php +++ b/plugins/UsersManager/tests/UsersManager.test.php @@ -744,14 +744,14 @@ class Test_Piwik_UsersManager extends Test_Database Piwik_UsersManager_API::getInstance()->setUserAccess("user1", "view", array($id1,$id2)); Piwik_UsersManager_API::getInstance()->setUserAccess("user2", "admin", array($id1)); - Piwik_UsersManager_API::getInstance()->setUserAccess("user2", "view", array($id3)); + Piwik_UsersManager_API::getInstance()->setUserAccess("user2", "view", array($id3, $id2)); $access1 = Piwik_UsersManager_API::getInstance()->getSitesAccessFromUser("user1"); $access1 = $this->_flatten($access1); $access2 = Piwik_UsersManager_API::getInstance()->getSitesAccessFromUser("user2"); $access2 = $this->_flatten($access2); $wanted1 = array( $id1 => 'view', $id2 => 'view', ); - $wanted2 = array( $id1 => 'admin', $id3 => 'view' ); + $wanted2 = array( $id1 => 'admin', $id2 => 'view', $id3 => 'view' ); $this->assertEqual($access1, $wanted1); $this->assertEqual($access2, $wanted2); @@ -761,7 +761,7 @@ class Test_Piwik_UsersManager extends Test_Database $access2 = Piwik_UsersManager_API::getInstance()->getUsersAccessFromSite($id2); $access3 = Piwik_UsersManager_API::getInstance()->getUsersAccessFromSite($id3); $wanted1 = array( 'user1' => 'view', 'user2' => 'admin', ); - $wanted2 = array( 'user1' => 'view' ); + $wanted2 = array( 'user1' => 'view', 'user2' => 'view' ); $wanted3 = array( 'user2' => 'view' ); $this->assertEqual($access1, $wanted1); @@ -770,12 +770,21 @@ class Test_Piwik_UsersManager extends Test_Database $access1 = Piwik_UsersManager_API::getInstance()->getUsersSitesFromAccess('view'); $access2 = Piwik_UsersManager_API::getInstance()->getUsersSitesFromAccess('admin'); - $wanted1 = array( 'user1' => array($id1,$id2), 'user2' => array($id3) ); + $wanted1 = array( 'user1' => array($id1,$id2), 'user2' => array($id3, $id2) ); $wanted2 = array( 'user2' => array($id1) ); $this->assertEqual($access1, $wanted1); $this->assertEqual($access2, $wanted2); + // Test getUsersWithSiteAccess + $users = Piwik_UsersManager_API::getInstance()->getUsersWithSiteAccess($id1, $access = 'view'); + $this->assertTrue(count($users) == 1 && $users[0]['login'] == 'user1'); + $users = Piwik_UsersManager_API::getInstance()->getUsersWithSiteAccess($id2, $access = 'view'); + $this->assertTrue(count($users) == 2); + $users = Piwik_UsersManager_API::getInstance()->getUsersWithSiteAccess($id1, $access = 'admin'); + $this->assertTrue(count($users) == 1 && $users[0]['login'] == 'user2'); + $users = Piwik_UsersManager_API::getInstance()->getUsersWithSiteAccess($id3, $access = 'admin'); + $this->assertTrue(count($users) == 0); } /** |