From a6a2d31b8f3290d31e400f77e459c9a8d4be94f3 Mon Sep 17 00:00:00 2001 From: Moriel Schottlender Date: Thu, 14 Sep 2017 14:11:44 -0700 Subject: [PATCH] RCFilters: Don't cast days default to an integer Values can be floats, like 1.5 days, etc. Cast instead to a float. Bug: T175965 Change-Id: I14ba792f1cd435f89b2e09067b0a0e894a0a2557 --- includes/specialpage/ChangesListSpecialPage.php | 7 +++++++ includes/specials/SpecialRecentchanges.php | 7 +++---- includes/specials/SpecialWatchlist.php | 7 +++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index ec09559d5f..98b7aa1925 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -1580,5 +1580,12 @@ abstract class ChangesListSpecialPage extends SpecialPage { abstract function getDefaultLimit(); + /** + * Get the default value of the number of days to display when loading + * the result set. + * Supports fractional values, and should be cast to a float. + * + * @return float + */ abstract function getDefaultDays(); } diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index 547a1b06c2..15c05ee124 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -233,10 +233,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage { */ public function getDefaultOptions() { $opts = parent::getDefaultOptions(); - $user = $this->getUser(); - $opts->add( 'days', $user->getIntOption( 'rcdays' ), FormOptions::FLOAT ); - $opts->add( 'limit', $user->getIntOption( 'rclimit' ) ); + $opts->add( 'days', $this->getDefaultDays(), FormOptions::FLOAT ); + $opts->add( 'limit', $this->getDefaultLimit() ); $opts->add( 'from', '' ); $opts->add( 'categories', '' ); @@ -1010,6 +1009,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } function getDefaultDays() { - return $this->getUser()->getIntOption( 'rcdays' ); + return floatval( $this->getUser()->getOption( 'rcdays' ) ); } } diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index ec648690f4..2750551bd0 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -277,10 +277,9 @@ class SpecialWatchlist extends ChangesListSpecialPage { */ public function getDefaultOptions() { $opts = parent::getDefaultOptions(); - $user = $this->getUser(); - $opts->add( 'days', $user->getOption( 'watchlistdays' ), FormOptions::FLOAT ); - $opts->add( 'limit', $user->getIntOption( 'wllimit' ), FormOptions::INT ); + $opts->add( 'days', $this->getDefaultDays(), FormOptions::FLOAT ); + $opts->add( 'limit', $this->getDefaultLimit(), FormOptions::INT ); return $opts; } @@ -918,6 +917,6 @@ class SpecialWatchlist extends ChangesListSpecialPage { } function getDefaultDays() { - return $this->getUser()->getIntOption( 'watchlistdays' ); + return floatval( $this->getUser()->getOption( 'watchlistdays' ) ); } } -- 2.20.1