diff options
author | mattpiwik <matthieu.aubry@gmail.com> | 2011-02-04 09:05:33 +0300 |
---|---|---|
committer | mattpiwik <matthieu.aubry@gmail.com> | 2011-02-04 09:05:33 +0300 |
commit | 96891a2824ae3bc9d7fec85697165f0a453b75cc (patch) | |
tree | 7f54bcda35dc700e1d03a03aebab55820b6d382b /plugins/UsersManager | |
parent | ad6dd91df47f19344edfd62e0daf1f538749aee5 (diff) |
Fixes #2061
git-svn-id: http://dev.piwik.org/svn/trunk@3843 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/UsersManager')
-rw-r--r-- | plugins/UsersManager/API.php | 18 | ||||
-rw-r--r-- | plugins/UsersManager/tests/UsersManager.test.php | 45 |
2 files changed, 40 insertions, 23 deletions
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 456ac3052c..2c7231ac9a 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -67,16 +67,26 @@ class Piwik_UsersManager_API /** * Returns the list of all the users * + * @param string Comma separated list of users to select. If not specified, will return all users * @return array the list of all the users */ - public function getUsers() + public function getUsers( $userLogins = '' ) { Piwik::checkUserHasSomeAdminAccess(); + $where = ''; + $bind = array(); + if(!empty($userLogins)) + { + $userLogins = explode(',', $userLogins); + $where = 'WHERE login IN (? '.str_repeat(',?', count($userLogins)-1).')'; + $bind = $userLogins; + } $db = Zend_Registry::get('db'); $users = $db->fetchAll("SELECT * - FROM ".Piwik_Common::prefixTable("user")." - ORDER BY login ASC"); + FROM ".Piwik_Common::prefixTable("user")." + $where + ORDER BY login ASC", $bind); // Non Super user can only access login & alias if(!Piwik::isUserIsSuperUser()) { @@ -174,7 +184,7 @@ class Piwik_UsersManager_API return $return; } - + /** * For each website ID, returns the access level of the given $userLogin. * If the user doesn't have any access to a website ('noaccess'), diff --git a/plugins/UsersManager/tests/UsersManager.test.php b/plugins/UsersManager/tests/UsersManager.test.php index 24eec13d65..133dfc0848 100644 --- a/plugins/UsersManager/tests/UsersManager.test.php +++ b/plugins/UsersManager/tests/UsersManager.test.php @@ -520,28 +520,34 @@ class Test_Piwik_UsersManager extends Test_Database /** * normal case + * as well as selecting specific user names, comma separated */ function test_getUsers() { - - Piwik_UsersManager_API::getInstance()->addUser("gegg4564eqgeqag", "geqgegagae", "tegst@tesgt.com", "alias"); - Piwik_UsersManager_API::getInstance()->addUser("geggeqge632ge56a4qag", "geqgegeagae", "tesggt@tesgt.com", "alias"); - Piwik_UsersManager_API::getInstance()->addUser("geggeqgeqagqegg", "geqgeaggggae", "tesgggt@tesgt.com"); - - $users = Piwik_UsersManager_API::getInstance()->getUsers(); - foreach($users as &$user) - { - unset($user['token_auth']); - unset($user['date_registered']); - } - $this->assertEqual($users, - array( - array('login' => "gegg4564eqgeqag", 'password' => md5("geqgegagae"), 'alias' => "alias", 'email' => "tegst@tesgt.com"), - array('login' => "geggeqge632ge56a4qag", 'password' => md5("geqgegeagae"),'alias' => "alias", 'email' => "tesggt@tesgt.com"), - array('login' => "geggeqgeqagqegg", 'password' => md5("geqgeaggggae"), 'alias' => 'geggeqgeqagqegg','email' => "tesgggt@tesgt.com"), - ) - ); - + Piwik_UsersManager_API::getInstance()->addUser("gegg4564eqgeqag", "geqgegagae", "tegst@tesgt.com", "alias"); + Piwik_UsersManager_API::getInstance()->addUser("geggeqge632ge56a4qag", "geqgegeagae", "tesggt@tesgt.com", "alias"); + Piwik_UsersManager_API::getInstance()->addUser("geggeqgeqagqegg", "geqgeaggggae", "tesgggt@tesgt.com"); + + $users = Piwik_UsersManager_API::getInstance()->getUsers(); + $users = $this->removeNonTestableFieldsFromUsers($users); + $user1 = array('login' => "gegg4564eqgeqag", 'password' => md5("geqgegagae"), 'alias' => "alias", 'email' => "tegst@tesgt.com"); + $user2 = array('login' => "geggeqge632ge56a4qag", 'password' => md5("geqgegeagae"),'alias' => "alias", 'email' => "tesggt@tesgt.com"); + $user3 = array('login' => "geggeqgeqagqegg", 'password' => md5("geqgeaggggae"), 'alias' => 'geggeqgeqagqegg','email' => "tesgggt@tesgt.com"); + $expectedUsers = array($user1, $user2, $user3); + $this->assertEqual($users, $expectedUsers); + $this->assertEqual( $this->removeNonTestableFieldsFromUsers(Piwik_UsersManager_API::getInstance()->getUsers('gegg4564eqgeqag')), array($user1)); + $this->assertEqual( $this->removeNonTestableFieldsFromUsers(Piwik_UsersManager_API::getInstance()->getUsers('gegg4564eqgeqag,geggeqge632ge56a4qag')), array($user1, $user2)); + + } + + function removeNonTestableFieldsFromUsers($users) + { + foreach($users as &$user) + { + unset($user['token_auth']); + unset($user['date_registered']); + } + return $users; } /** @@ -687,6 +693,7 @@ class Test_Piwik_UsersManager extends Test_Database $access = Piwik_UsersManager_API::getInstance()->getSitesAccessFromUser("gegg4564eqgeqag"); $access = $this->_flatten($access); $this->assertEqual( array($id1,$id3), array_keys($access)); + } /** * normal case, string idSites comma separated access set for multiple sites |