class SpecialWatchlist extends ChangesListSpecialPage {
public function __construct( $page = 'Watchlist', $restriction = 'viewmywatchlist' ) {
parent::__construct( $page, $restriction );
+
+ $this->maxDays = $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 );
}
public function doesWrites() {
return $opts;
}
+ public function validateOptions( FormOptions $opts ) {
+ $opts->validateBounds( 'days', 0, $this->maxDays );
+ parent::validateOptions( $opts );
+ }
+
/**
* Get all custom filters
*
* @inheritdoc
*/
protected function buildQuery( &$tables, &$fields, &$conds, &$query_options,
- &$join_conds, FormOptions $opts ) {
-
+ &$join_conds, FormOptions $opts
+ ) {
$dbr = $this->getDB();
parent::buildQuery( $tables, $fields, $conds, $query_options, $join_conds,
$opts );
// Calculate cutoff
if ( $opts['days'] > 0 ) {
$conds[] = 'rc_timestamp > ' .
- $dbr->addQuotes( $dbr->timestamp( time() - intval( $opts['days'] * 86400 ) ) );
+ $dbr->addQuotes( $dbr->timestamp( time() - $opts['days'] * 3600 * 24 ) );
}
}
* @inheritdoc
*/
protected function doMainQuery( $tables, $fields, $conds, $query_options,
- $join_conds, FormOptions $opts ) {
-
+ $join_conds, FormOptions $opts
+ ) {
$dbr = $this->getDB();
$user = $this->getUser();
# Toggle watchlist content (all recent edits or just the latest)
if ( $opts['extended'] ) {
- $limitWatchlist = $user->getIntOption( 'wllimit' );
$usePage = false;
} else {
# Top log Ids for a page are not stored
LIST_OR
);
}
- $limitWatchlist = 0;
$usePage = true;
}
$tables = array_merge( [ 'recentchanges', 'watchlist' ], $tables );
$fields = array_merge( RecentChange::selectFields(), $fields );
- $query_options = array_merge( [ 'ORDER BY' => 'rc_timestamp DESC' ], $query_options );
+ $query_options = array_merge( [
+ 'ORDER BY' => 'rc_timestamp DESC',
+ 'LIMIT' => $user->getIntOption( 'wllimit' )
+ ], $query_options );
$join_conds = array_merge(
[
'watchlist' => [
if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
$fields[] = 'wl_notificationtimestamp';
}
- if ( $limitWatchlist ) {
- $query_options['LIMIT'] = $limitWatchlist;
- }
$rollbacker = $user->isAllowed( 'rollback' );
if ( $usePage || $rollbacker ) {
if ( $opts['days'] > 0 ) {
$days = $opts['days'];
} else {
- $days = $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 );
+ $days = $this->maxDays;
}
$timestamp = wfTimestampNow();
$wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $days * 24 ) )->params(
$days[] = $userWatchlistOption;
}
- $maxDays = (string)( $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 ) );
+ $maxDays = (string)$this->maxDays;
// add the maximum possible value, if it isn't available already
if ( !in_array( $maxDays, $days ) ) {
$days[] = $maxDays;