X-Git-Url: https://git.cyclocoop.org/%20%27.%28%24debut%20%20%20%24par_page%29.%27?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialWatchlist.php;h=336b05bdd1ec98e8c675d15cd7605dd9aba1293d;hb=6d4f5d142f28ade566dd6cd97af129c582e6f27b;hp=6572a0839c73d8fd6b19e393d5e5968987742f5d;hpb=c6ed10eebfd49707363e3ed6aa84ad5356cad845;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 6572a0839c..336b05bdd1 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -94,7 +94,7 @@ class SpecialWatchlist extends SpecialPage { // @todo use FormOptions! $defaults = array( - /* float */ 'days' => floatval( $user->getOption( 'watchlistdays' ) ), /* 3.0 or 0.5, watch further below */ + /* float */ 'days' => floatval( $user->getOption( 'watchlistdays' ) ), /* bool */ 'hideMinor' => (int)$user->getBoolOption( 'watchlisthideminor' ), /* bool */ 'hideBots' => (int)$user->getBoolOption( 'watchlisthidebots' ), /* bool */ 'hideAnons' => (int)$user->getBoolOption( 'watchlisthideanons' ), @@ -115,7 +115,7 @@ class SpecialWatchlist extends SpecialPage { # Extract variables from the request, falling back to user preferences or # other default values if these don't exist $values = array(); - $values['days'] = $request->getVal( 'days', $defaults['days'] ); + $values['days'] = floatval( $request->getVal( 'days', $defaults['days'] ) ); $values['hideMinor'] = (int)$request->getBool( 'hideMinor', $defaults['hideMinor'] ); $values['hideBots'] = (int)$request->getBool( 'hideBots', $defaults['hideBots'] ); $values['hideAnons'] = (int)$request->getBool( 'hideAnons', $defaults['hideAnons'] ); @@ -152,18 +152,6 @@ class SpecialWatchlist extends SpecialPage { $values['invert'] = $invert; $values['associated'] = $associated; - if ( is_null( $values['days'] ) || !is_numeric( $values['days'] ) ) { - $big = 1000; /* The magical big */ - if ( $nitems > $big ) { - # Set default cutoff shorter - $values['days'] = $defaults['days'] = ( 12.0 / 24.0 ); # 12 hours... - } else { - $values['days'] = $defaults['days']; # default cutoff for shortlisters - } - } else { - $values['days'] = floatval( $values['days'] ); - } - // Dump everything here $nondefaults = array(); foreach ( $defaults as $name => $defValue ) { @@ -185,14 +173,6 @@ class SpecialWatchlist extends SpecialPage { $conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $values['days'] * 86400 ) ) ); } - # If the watchlist is relatively short, it's simplest to zip - # down its entirety and then sort the results. - - # If it's relatively long, it may be worth our while to zip - # through the time-sorted page list checking for watched items. - - # Up estimate of watched items by 15% to compensate for talk pages... - # Toggles if ( $values['hideOwn'] ) { $conds[] = 'rc_user != ' . $user->getId(); @@ -222,7 +202,21 @@ class SpecialWatchlist extends SpecialPage { $usePage = false; } else { # Top log Ids for a page are not stored - $conds[] = 'rc_this_oldid=page_latest OR rc_type=' . RC_LOG; + $nonRevisionTypes = array( RC_LOG ); + wfRunHooks( 'SpecialWatchlistGetNonRevisionTypes', array( &$nonRevisionTypes ) ); + if ( $nonRevisionTypes ) { + if ( count( $nonRevisionTypes ) === 1 ) { + // if only one use an equality instead of IN condition + $nonRevisionTypes = reset( $nonRevisionTypes ); + } + $conds[] = $dbr->makeList( + array( + 'rc_this_oldid=page_latest', + 'rc_type' => $nonRevisionTypes, + ), + LIST_OR + ); + } $limitWatchlist = 0; $usePage = true; }