Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattpiwik <matthieu.aubry@gmail.com>2011-02-04 09:05:33 +0300
committermattpiwik <matthieu.aubry@gmail.com>2011-02-04 09:05:33 +0300
commit96891a2824ae3bc9d7fec85697165f0a453b75cc (patch)
tree7f54bcda35dc700e1d03a03aebab55820b6d382b /plugins/UsersManager
parentad6dd91df47f19344edfd62e0daf1f538749aee5 (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.php18
-rw-r--r--plugins/UsersManager/tests/UsersManager.test.php45
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