diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php index 138cd4e4f088a3a03a6c5c483231dbf8a888cb5d..4cce5d07114d44fb6d13805f8d20913c98f1795b 100644 --- a/core/Plugin/Controller.php +++ b/core/Plugin/Controller.php @@ -179,9 +179,10 @@ abstract class Controller } /** - * @return array + * Returns values that are enabled for the parameter &period= + * @return array eg. array('day', 'week', 'month', 'year', 'range') */ - private static function getAvailablePeriods() + protected static function getEnabledPeriodsInUI() { $periods = Config::getInstance()->General['enabled_periods_UI']; $periods = explode(",", $periods); @@ -690,7 +691,7 @@ abstract class Controller $currentPeriod = Common::getRequestVar('period'); $view->displayUniqueVisitors = SettingsPiwik::isUniqueVisitorsEnabled($currentPeriod); - $availablePeriods = self::getAvailablePeriods(); + $availablePeriods = self::getEnabledPeriodsInUI(); if (!in_array($currentPeriod, $availablePeriods)) { throw new Exception("Period must be one of: " . implode(",", $availablePeriods)); } diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php index f966fc26c85e396e5b18961639a73dc2add984cc..ad59009ec9a2f268e0463f6199f72d9340f4c8a4 100644 --- a/plugins/UsersManager/Controller.php +++ b/plugins/UsersManager/Controller.php @@ -142,6 +142,51 @@ class Controller extends \Piwik\Plugin\ControllerAdmin return APIUsersManager::getInstance()->getUserPreference($user, APIUsersManager::PREFERENCE_DEFAULT_REPORT_DATE); } + /** + * Returns the enabled dates that users can select, + * in their User Settings page "Report date to load by default" + * + * @throws + * @return array + */ + protected function getAvailableDefaultDates() + { + $dates = array( + 'today' => Piwik::translate('General_Today'), + 'yesterday' => Piwik::translate('General_Yesterday'), + 'previous7' => Piwik::translate('General_PreviousDays', 7), + 'previous30' => Piwik::translate('General_PreviousDays', 30), + 'last7' => Piwik::translate('General_LastDays', 7), + 'last30' => Piwik::translate('General_LastDays', 30), + 'week' => Piwik::translate('General_CurrentWeek'), + 'month' => Piwik::translate('General_CurrentMonth'), + 'year' => Piwik::translate('General_CurrentYear'), + ); + + $mappingDatesToPeriods = array( + 'today' => 'day', + 'yesterday' => 'day', + 'previous7' => 'range', + 'previous30' => 'range', + 'last7' => 'range', + 'last30' => 'range', + 'week' => 'week', + 'month' => 'month', + 'year' => 'year', + ); + + // assertion + if(count($dates) != count($mappingDatesToPeriods)) { + throw new Exception("some metadata is missing in getAvailableDefaultDates()"); + } + + $allowedPeriods = self::getEnabledPeriodsInUI(); + $allowedDates = array_intersect($mappingDatesToPeriods, $allowedPeriods); + $dates = array_intersect_key($dates, $allowedDates); + + return $dates; + } + /** * The "User Settings" admin UI screen view */ @@ -169,17 +214,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin } $view->defaultDate = $this->getDefaultDateForUser($userLogin); - $view->availableDefaultDates = array( - 'today' => Piwik::translate('General_Today'), - 'yesterday' => Piwik::translate('General_Yesterday'), - 'previous7' => Piwik::translate('General_PreviousDays', 7), - 'previous30' => Piwik::translate('General_PreviousDays', 30), - 'last7' => Piwik::translate('General_LastDays', 7), - 'last30' => Piwik::translate('General_LastDays', 30), - 'week' => Piwik::translate('General_CurrentWeek'), - 'month' => Piwik::translate('General_CurrentMonth'), - 'year' => Piwik::translate('General_CurrentYear'), - ); + $view->availableDefaultDates = $this->getAvailableDefaultDates(); $view->languages = APILanguagesManager::getInstance()->getAvailableLanguageNames(); $view->currentLanguageCode = LanguagesManager::getLanguageCodeForCurrentUser(); diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI index 444330b9ce8669b5e1f6f47d6274d32158493b76..ab41f15940b4b7db6c02c2f52cab226c5f2743bd 160000 --- a/tests/PHPUnit/UI +++ b/tests/PHPUnit/UI @@ -1 +1 @@ -Subproject commit 444330b9ce8669b5e1f6f47d6274d32158493b76 +Subproject commit ab41f15940b4b7db6c02c2f52cab226c5f2743bd