From 85fb283d7db457ad9bec03bb89802266da969946 Mon Sep 17 00:00:00 2001 From: mattab Date: Tue, 16 Dec 2014 13:01:19 +1300 Subject: Pull variable up as method parameter for reuse --- plugins/UsersManager/UserPreferences.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'plugins/UsersManager') diff --git a/plugins/UsersManager/UserPreferences.php b/plugins/UsersManager/UserPreferences.php index 430d2b8b65..b1d70f4fcc 100644 --- a/plugins/UsersManager/UserPreferences.php +++ b/plugins/UsersManager/UserPreferences.php @@ -39,6 +39,7 @@ class UserPreferences return false; } + /** * Returns default site ID that Piwik should load. * @@ -91,27 +92,32 @@ class UserPreferences /** * Returns default period type for Piwik reports. * + * @param $defaultDate string the default date string from which the default period will be guessed * @return string `'day'`, `'week'`, `'month'`, `'year'` or `'range'` * @api */ - public function getDefaultPeriod() + public function getDefaultPeriod($defaultDate) { - $userSettingsDate = APIUsersManager::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), APIUsersManager::PREFERENCE_DEFAULT_REPORT_DATE); - - if ($userSettingsDate === false) { - return Config::getInstance()->General['default_period']; + $defaultPeriod = Config::getInstance()->General['default_period']; + if ($defaultDate === false) { + return $defaultPeriod; } - if (in_array($userSettingsDate, array('today', 'yesterday'))) { + if (in_array($defaultDate, array('today', 'yesterday'))) { return 'day'; } - if (strpos($userSettingsDate, 'last') === 0 - || strpos($userSettingsDate, 'previous') === 0 + if (strpos($defaultDate, 'last') === 0 + || strpos($defaultDate, 'previous') === 0 ) { return 'range'; } - return $userSettingsDate; + return $defaultPeriod; + } + + public function getAllUsersPreferences() + { + } } \ No newline at end of file -- cgit v1.2.3 From 6775356fac499e3f56e70d170d91750dd20ce314 Mon Sep 17 00:00:00 2001 From: mattab Date: Tue, 16 Dec 2014 15:15:19 +1300 Subject: New method getAllUsersPreferences and test --- plugins/UsersManager/API.php | 29 +++++++++++++++- plugins/UsersManager/tests/Integration/APITest.php | 39 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) (limited to 'plugins/UsersManager') diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 1e651eef13..75d9190cd1 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -32,6 +32,8 @@ use Piwik\Tracker\Cache; */ class API extends \Piwik\Plugin\API { + const OPTION_NAME_PREFERENCE_SEPARATOR = '_'; + /** * @var Model */ @@ -107,9 +109,34 @@ class API extends \Piwik\Plugin\API return $this->getDefaultUserPreference($preferenceName, $userLogin); } + /** + * Returns an array of Preferences + * @param $preferenceNames array of preference names + * @return array + * @ignore + */ + public function getAllUsersPreferences(array $preferenceNames) + { + Piwik::checkUserHasSuperUserAccess(); + + $userPreferences = array(); + foreach($preferenceNames as $preferenceName) { + $optionNameMatchAllUsers = $this->getPreferenceId('%', $preferenceName); + $preferences = Option::getLike($optionNameMatchAllUsers); + + foreach($preferences as $optionName => $optionValue) { + $optionName = explode(self::OPTION_NAME_PREFERENCE_SEPARATOR, $optionName); + $userName = $optionName[0]; + $preference = $optionName[1]; + $userPreferences[$userName][$preference] = $optionValue; + } + } + return $userPreferences; + } + private function getPreferenceId($login, $preference) { - return $login . '_' . $preference; + return $login . self::OPTION_NAME_PREFERENCE_SEPARATOR . $preference; } private function getDefaultUserPreference($preferenceName, $login) diff --git a/plugins/UsersManager/tests/Integration/APITest.php b/plugins/UsersManager/tests/Integration/APITest.php index 1cf2cf71bb..67a6e9f12e 100644 --- a/plugins/UsersManager/tests/Integration/APITest.php +++ b/plugins/UsersManager/tests/Integration/APITest.php @@ -69,4 +69,43 @@ class APITest extends IntegrationTestCase $this->assertFalse($eventTriggered, 'UsersManager.removeSiteAccess event was triggered but should not'); } + public function test_getAllUsersPreferences_isEmpty_whenNoPreference() + { + $preferences = $this->api->getAllUsersPreferences(array('preferenceName')); + $this->assertEmpty($preferences); + } + + public function test_getAllUsersPreferences_isEmpty_whenNoPreferenceAndMultipleRequested() + { + $preferences = $this->api->getAllUsersPreferences(array('preferenceName', 'otherOne')); + $this->assertEmpty($preferences); + } + + public function test_getAllUsersPreferences_shouldGetMultiplePreferences() + { + $user2 = 'userLogin2'; + $user3 = 'userLogin3'; + $this->api->addUser($user2, 'password', 'userlogin2@password.de'); + $this->api->setUserPreference($user2, 'myPreferenceName', 'valueForUser2'); + $this->api->setUserPreference($user2, 'Random_NOT_REQUESTED', 'Random_NOT_REQUESTED'); + + $this->api->addUser($user3, 'password', 'userlogin3@password.de'); + $this->api->setUserPreference($user3, 'myPreferenceName', 'valueForUser3'); + $this->api->setUserPreference($user3, 'otherPreferenceHere', 'otherPreferenceVALUE'); + $this->api->setUserPreference($user3, 'Random_NOT_REQUESTED', 'Random_NOT_REQUESTED'); + + $expected = array( + $user2 => array( + 'myPreferenceName' => 'valueForUser2' + ), + $user3 => array( + 'myPreferenceName' => 'valueForUser3', + 'otherPreferenceHere' => 'otherPreferenceVALUE', + ), + ); + $result = $this->api->getAllUsersPreferences(array('myPreferenceName', 'otherPreferenceHere', 'randomDoesNotExist')); + + $this->assertSame($expected, $result); + } + } -- cgit v1.2.3