summaryrefslogtreecommitdiff
path: root/includes/SpecialWatchlist.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/SpecialWatchlist.php')
-rw-r--r--includes/SpecialWatchlist.php46
1 files changed, 29 insertions, 17 deletions
diff --git a/includes/SpecialWatchlist.php b/includes/SpecialWatchlist.php
index 33e19a2b..2e660bd5 100644
--- a/includes/SpecialWatchlist.php
+++ b/includes/SpecialWatchlist.php
@@ -1,14 +1,13 @@
<?php
/**
*
- * @package MediaWiki
- * @subpackage SpecialPage
+ * @addtogroup SpecialPage
*/
/**
*
*/
-require_once( 'SpecialRecentchanges.php' );
+require_once( dirname(__FILE__) . '/SpecialRecentchanges.php' );
/**
* Constructor
@@ -16,12 +15,12 @@ require_once( 'SpecialRecentchanges.php' );
* @param $par Parameter passed to the page
*/
function wfSpecialWatchlist( $par ) {
- global $wgUser, $wgOut, $wgLang, $wgMemc, $wgRequest, $wgContLang;
+ global $wgUser, $wgOut, $wgLang, $wgRequest, $wgContLang;
global $wgRCShowWatchingUsers, $wgEnotifWatchlist, $wgShowUpdatedMarker;
global $wgEnotifWatchlist;
$fname = 'wfSpecialWatchlist';
- $skin =& $wgUser->getSkin();
+ $skin = $wgUser->getSkin();
$specialTitle = SpecialPage::getTitleFor( 'Watchlist' );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
@@ -86,25 +85,25 @@ function wfSpecialWatchlist( $par ) {
# Deleting items from watchlist
if(($action == 'submit') && isset($remove) && is_array($id)) {
$wgOut->addWikiText( wfMsg( 'removingchecked' ) );
- $wgOut->addHTML( '<p>' );
+ $wgOut->addHTML( "<ul id=\"mw-unwatch-list\">\n" );
foreach($id as $one) {
$t = Title::newFromURL( $one );
if( !is_null( $t ) ) {
$wl = WatchedItem::fromUserTitle( $wgUser, $t );
if( $wl->removeWatch() === false ) {
- $wgOut->addHTML( wfMsg( 'couldntremove', htmlspecialchars($one) ) . "<br />\n" );
+ $wgOut->addHTML( '<li class="mw-unwatch-failure">' . wfMsg( 'couldntremove', htmlspecialchars($one) ) . "</li>\n" );
} else {
wfRunHooks('UnwatchArticle', array(&$wgUser, new Article($t)));
- $wgOut->addHTML( '(' . htmlspecialchars($one) . ')<br />' );
+ $wgOut->addHTML( '<li class="mw-unwatch-success">[[' . htmlspecialchars($one) . "]]</li>\n" );
}
} else {
- $wgOut->addHTML( wfMsg( 'iteminvalidname', htmlspecialchars($one) ) . "<br />\n" );
+ $wgOut->addHTML( '<li class="mw-unwatch-invalid">' . wfMsg( 'iteminvalidname', htmlspecialchars($one) ) . "</li>\n" );
}
}
- $wgOut->addHTML( "</p>\n<p>" . wfMsg( 'wldone' ) . "</p>\n" );
+ $wgOut->addHTML( "</ul>\n<p>" . wfMsg( 'wldone' ) . "</p>\n" );
}
- $dbr =& wfGetDB( DB_SLAVE, 'watchlist' );
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
list( $page, $watchlist, $recentchanges ) = $dbr->tableNamesN( 'page', 'watchlist', 'recentchanges' );
$sql = "SELECT COUNT(*) AS n FROM $watchlist WHERE wl_user=$uid";
@@ -158,7 +157,7 @@ function wfSpecialWatchlist( $par ) {
/* Edit watchlist form */
if($wgRequest->getBool('edit') || $par == 'edit' ) {
- $wgOut->addWikiText( wfMsg( 'watchlistcontains', $wgLang->formatNum( $nitems ) ) .
+ $wgOut->addWikiText( wfMsgExt( 'watchlistcontains', array( 'parseinline' ), $wgLang->formatNum( $nitems ) ) .
"\n\n" . wfMsg( 'watcheditlist' ) );
$wgOut->addHTML( '<form action=\'' .
@@ -258,7 +257,8 @@ function wfSpecialWatchlist( $par ) {
$andLatest='';
$limitWatchlist = 'LIMIT ' . intval( $wgUser->getOption( 'wllimit' ) );
} else {
- $andLatest= 'AND rc_this_oldid=page_latest';
+ # Top log Ids for a page are not stored
+ $andLatest= 'AND (rc_this_oldid=page_latest OR rc_type=' . RC_LOG . ') ';
$limitWatchlist = '';
}
@@ -299,10 +299,10 @@ function wfSpecialWatchlist( $par ) {
$wgOut->addHTML( "<hr />\n" );
if($days >= 1) {
- $wgOut->addWikiText( wfMsg( 'rcnote', $wgLang->formatNum( $numRows ),
+ $wgOut->addWikiText( wfMsgExt( 'rcnote', array( 'parseinline' ), $wgLang->formatNum( $numRows ),
$wgLang->formatNum( $days ), $wgLang->timeAndDate( wfTimestampNow(), true ) ) . '<br />' , false );
} elseif($days > 0) {
- $wgOut->addWikiText( wfMsg( 'wlnote', $wgLang->formatNum( $numRows ),
+ $wgOut->addWikiText( wfMsgExt( 'wlnote', array( 'parseinline' ), $wgLang->formatNum( $numRows ),
$wgLang->formatNum( round($days*24) ) ) . '<br />' , false );
}
@@ -353,6 +353,18 @@ function wfSpecialWatchlist( $par ) {
/* End bottom header */
+ /* Do link batch query */
+ $linkBatch = new LinkBatch;
+ while ( $row = $dbr->fetchObject( $res ) ) {
+ $userNameUnderscored = str_replace( ' ', '_', $row->rc_user_text );
+ if ( $row->rc_user != 0 ) {
+ $linkBatch->add( NS_USER, $userNameUnderscored );
+ }
+ $linkBatch->add( NS_USER_TALK, $userNameUnderscored );
+ }
+ $linkBatch->execute();
+ $dbr->dataSeek( $res, 0 );
+
$list = ChangesList::newFromUser( $wgUser );
$s = $list->beginRecentChangesList();
@@ -435,7 +447,7 @@ function wlCutoffLinks( $days, $page = 'Watchlist', $options = array() ) {
* @return integer
*/
function wlCountItems( &$user, $talk = true ) {
- $dbr =& wfGetDB( DB_SLAVE, 'watchlist' );
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
# Fetch the raw count
$res = $dbr->select( 'watchlist', 'COUNT(*) AS count', array( 'wl_user' => $user->mId ), 'wlCountItems' );
@@ -471,7 +483,7 @@ function wlHandleClear( &$out, &$request, $par ) {
# See if we're clearing or confirming
if( $request->wasPosted() && $wgUser->matchEditToken( $request->getText( 'token' ), 'clearwatchlist' ) ) {
# Clearing, so do it and report the result
- $dbw =& wfGetDB( DB_MASTER );
+ $dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'watchlist', array( 'wl_user' => $wgUser->mId ), 'wlHandleClear' );
$out->addWikiText( wfMsgExt( 'watchlistcleardone', array( 'parsemag', 'escape'), $wgLang->formatNum( $count ) ) );
$out->returnToMain();