diff options
author | diosmosis <benaka.moorthi@gmail.com> | 2013-04-08 06:20:11 +0400 |
---|---|---|
committer | diosmosis <benaka.moorthi@gmail.com> | 2013-04-08 06:20:11 +0400 |
commit | 0e35cd6d9e667fcf9b79ca9437c93f83f9d176d2 (patch) | |
tree | fffc51fae35b41d0adf3c63d84a82340b477cbab /plugins/UsersManager | |
parent | b8a603b62d9b11af74c6999689711641c9f16352 (diff) |
Fixes #3781, make sure getUserPreference returns valid default value when option is not set in the DB.
Diffstat (limited to 'plugins/UsersManager')
-rw-r--r-- | plugins/UsersManager/API.php | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 340fb97961..7a0b992b64 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -24,6 +24,9 @@ */ class Piwik_UsersManager_API { + const PREFERENCE_DEFAULT_REPORT = 'defaultReport'; + const PREFERENCE_DEFAULT_REPORT_DATE = 'defaultReportDate'; + static private $instance = null; /** @@ -52,9 +55,6 @@ class Piwik_UsersManager_API return self::$instance; } - const PREFERENCE_DEFAULT_REPORT = 'defaultReport'; - const PREFERENCE_DEFAULT_REPORT_DATE = 'defaultReportDate'; - /** * Sets a user preference * @param string $userLogin @@ -77,13 +77,31 @@ class Piwik_UsersManager_API public function getUserPreference($userLogin, $preferenceName) { Piwik::checkUserIsSuperUserOrTheUser($userLogin); - return Piwik_GetOption($this->getPreferenceId($userLogin, $preferenceName)); + + $optionValue = Piwik_GetOption($this->getPreferenceId($userLogin, $preferenceName)); + if ($optionValue === false) { + return $this->getDefaultUserPreference($userLogin, $preferenceName); + } + return $optionValue; } private function getPreferenceId($login, $preference) { return $login . '_' . $preference; } + + private function getDefaultUserPreference($login, $preferenceName) + { + switch ($preferenceName) { + case self::PREFERENCE_DEFAULT_REPORT: + $viewableSiteIds = Piwik_SitesManager_API::getInstance()->getSitesIdWithAtLeastViewAccess($login); + return reset($viewableSiteIds); + case self::PREFERENCE_DEFAULT_REPORT_DATE: + return 'yesterday'; + default: + return false; + } + } /** * Returns the list of all the users |