X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialWatchlist.php;h=c51b61b99f9c96282fad402ec8f07c7f1c81a986;hb=a9bb933dadc755fc4fd322b8edc1674a508ba209;hp=59f0dfedc07bb49cc7319efd7621ca5e0a712305;hpb=565b65d5e4cc74fe80b8e524bfb08e412ff4af25;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 59f0dfedc0..c51b61b99f 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -41,18 +41,7 @@ class SpecialWatchlist extends SpecialPage { $output = $this->getOutput(); # Anons don't get a watchlist - if ( $user->isAnon() ) { - $output->setPageTitle( $this->msg( 'watchnologin' ) ); - $output->setRobotPolicy( 'noindex,nofollow' ); - $llink = Linker::linkKnown( - SpecialPage::getTitleFor( 'Userlogin' ), - $this->msg( 'loginreqlink' )->escaped(), - array(), - array( 'returnto' => $this->getTitle()->getPrefixedText() ) - ); - $output->addHTML( $this->msg( 'watchlistanontext' )->rawParams( $llink )->parse() ); - return; - } + $this->requireLogin( 'watchlistanontext', 'watchnologin' ); // Check permissions $this->checkPermissions(); @@ -60,32 +49,32 @@ class SpecialWatchlist extends SpecialPage { // Add feed links $wlToken = $user->getTokenFromOption( 'watchlisttoken' ); if ( $wlToken ) { - $this->addFeedLinks( array( 'action' => 'feedwatchlist', 'allrev' => 'allrev', - 'wlowner' => $user->getName(), 'wltoken' => $wlToken ) ); + $this->addFeedLinks( array( + 'action' => 'feedwatchlist', + 'allrev' => 1, + 'wlowner' => $user->getName(), + 'wltoken' => $wlToken, + ) ); } $this->setHeaders(); $this->outputHeader(); - $output->addSubtitle( $this->msg( 'watchlistfor2', $user->getName() - )->rawParams( SpecialEditWatchlist::buildTools( null ) ) ); + $output->addSubtitle( + $this->msg( 'watchlistfor2', $user->getName() ) + ->rawParams( SpecialEditWatchlist::buildTools( null ) ) + ); $request = $this->getRequest(); $mode = SpecialEditWatchlist::getMode( $request, $par ); if ( $mode !== false ) { - # TODO: localise? - switch ( $mode ) { - case SpecialEditWatchlist::EDIT_CLEAR: - $mode = 'clear'; - break; - case SpecialEditWatchlist::EDIT_RAW: - $mode = 'raw'; - break; - default: - $mode = null; + if ( $mode === SpecialEditWatchlist::EDIT_RAW ) { + $title = SpecialPage::getTitleFor( 'EditWatchlist', 'raw' ); + } else { + $title = SpecialPage::getTitleFor( 'EditWatchlist' ); } - $title = SpecialPage::getTitleFor( 'EditWatchlist', $mode ); + $output->redirect( $title->getLocalURL() ); return; } @@ -100,7 +89,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' ), @@ -121,7 +110,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'] ); @@ -158,18 +147,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 ) { @@ -191,14 +168,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(); @@ -228,7 +197,17 @@ 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 ) { + $conds[] = $dbr->makeList( + array( + 'rc_this_oldid=page_latest', + 'rc_type' => $nonRevisionTypes, + ), + LIST_OR + ); + } $limitWatchlist = 0; $usePage = true; }