Update formatting for includes/specials/

Change-Id: I478dedd0b692eae002a0ca9b0ec15cb2c357411f
This commit is contained in:
Siebrand Mazeland 2014-03-22 23:51:18 +01:00 committed by Siebrand
parent 811b2e6138
commit 374cce86c8
49 changed files with 412 additions and 235 deletions

View file

@ -291,6 +291,7 @@ class SpecialActiveUsers extends SpecialPage {
self::doQueryCacheUpdate( $dbw, $window );
}
}
return ( time() -
( $cTime ? wfTimestamp( TS_UNIX, $cTime ) : $wgActiveUserDays * 86400 ) );
}
@ -383,7 +384,7 @@ class SpecialActiveUsers extends SpecialPage {
$newRows = array();
foreach ( $names as $name => $lastEditTime ) {
$newRows[] = array(
'qcc_type' => 'activeusers',
'qcc_type' => 'activeusers',
'qcc_namespace' => NS_USER,
'qcc_title' => $name,
'qcc_value' => wfTimestamp( TS_UNIX, $lastEditTime ),

View file

@ -352,7 +352,7 @@ class AllmessagesTablePager extends TablePager {
'grouppath' => 'mediawiki',
'query' => 'language:' . $this->getLanguage()->getCode() . '^25 ' .
'messageid:"MediaWiki:' . $value . '"^10 "' .
$this->msg ( $value )->inLanguage ( 'en' )->plain() . '"'
$this->msg( $value )->inLanguage( 'en' )->plain() . '"'
) ),
$this->msg( 'allmessages-filter-translate' )->text()
);

View file

@ -216,6 +216,7 @@ class SpecialAllpages extends IncludableSpecialPage {
// since generating it will cause a lot of scanning
if ( $count > $this->maxTopLevelPages ) {
$this->showChunk( $namespace, $from, $to, $hideredirects );
return;
}

View file

@ -125,6 +125,7 @@ class SpecialBookSources extends SpecialPage {
$form .= '&#160;' . Xml::submitButton( $this->msg( 'booksources-go' )->text() ) . "</p>\n";
$form .= Html::closeElement( 'form' ) . "\n";
$form .= Html::closeElement( 'fieldset' ) . "\n";
return $form;
}

View file

@ -167,6 +167,7 @@ class SpecialChangePassword extends FormSpecialPage {
}
$query = $request->getVal( 'returntoquery' );
$this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
return true;
}

View file

@ -26,7 +26,6 @@
*
* @ingroup SpecialPage
*/
class SpecialContributions extends IncludableSpecialPage {
protected $opts;
@ -66,6 +65,7 @@ class SpecialContributions extends IncludableSpecialPage {
if ( !$this->including() ) {
$out->addHTML( $this->getForm() );
}
return;
}

View file

@ -27,7 +27,6 @@
*
* @ingroup SpecialPage
*/
class SpecialCreateAccount extends SpecialRedirectToSpecial {
function __construct() {
parent::__construct( 'CreateAccount', 'Userlogin', 'signup', array( 'returnto', 'returntoquery', 'uselang' ) );

View file

@ -276,7 +276,7 @@ class DeletedContribsPager extends IndexPager {
class DeletedContributionsPage extends SpecialPage {
function __construct() {
parent::__construct( 'DeletedContributions', 'deletedhistory',
/*listed*/true, /*function*/false, /*file*/false );
/*listed*/true, /*function*/false, /*file*/false );
}
/**

View file

@ -162,14 +162,14 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
}
if ( count( $toWatch ) > 0 ) {
$this->successMessage .= ' ' . $this->msg( 'watchlistedit-raw-added'
)->numParams( count( $toWatch ) )->parse();
$this->successMessage .= ' ' . $this->msg( 'watchlistedit-raw-added' )
->numParams( count( $toWatch ) )->parse();
$this->showTitles( $toWatch, $this->successMessage );
}
if ( count( $toUnwatch ) > 0 ) {
$this->successMessage .= ' ' . $this->msg( 'watchlistedit-raw-removed'
)->numParams( count( $toUnwatch ) )->parse();
$this->successMessage .= ' ' . $this->msg( 'watchlistedit-raw-removed' )
->numParams( count( $toUnwatch ) )->parse();
$this->showTitles( $toUnwatch, $this->successMessage );
}
} else {

View file

@ -125,9 +125,7 @@ class SpecialExpandTemplates extends SpecialPage {
}
$this->showHtmlPreview( $title, $rawhtml, $out );
}
}
/**

View file

@ -36,6 +36,7 @@ class SpecialFilepath extends RedirectSpecialPage {
// implement by redirecting through Special:Redirect/file
function getRedirect( $par ) {
$file = $par ?: $this->getRequest()->getText( 'file' );
return SpecialPage::getSafeTitleFor( 'Redirect', 'file/' . $file );
}

View file

@ -129,7 +129,7 @@ class ImageListPager extends TablePager {
$conds = array();
if ( !is_null( $this->mUserName ) ) {
$conds[ $prefix . '_user_text' ] = $this->mUserName;
$conds[$prefix . '_user_text'] = $this->mUserName;
}
if ( $this->mSearch !== '' ) {
@ -215,6 +215,7 @@ class ImageListPager extends TablePager {
// for two different tables, without reimplementing
// the pager class.
$qi = $this->getQueryInfoReal( $this->mTableName );
return $qi;
}
@ -338,7 +339,7 @@ class ImageListPager extends TablePager {
$topRes2 = $res2->next();
$resultArray = array();
for ( $i = 0; $i < $limit && $topRes1 && $topRes2; $i++ ) {
if ( strcmp( $topRes1->{ $this->mIndexField }, $topRes2->{ $this->mIndexField } ) > 0 ) {
if ( strcmp( $topRes1->{$this->mIndexField}, $topRes2->{$this->mIndexField} ) > 0 ) {
if ( !$ascending ) {
$resultArray[] = $topRes1;
$topRes1 = $res1->next();
@ -364,6 +365,7 @@ class ImageListPager extends TablePager {
$resultArray[] = $topRes2;
$topRes2 = $res2->next();
}
return new FakeResultWrapper( $resultArray );
}
@ -409,6 +411,7 @@ class ImageListPager extends TablePager {
// If statement for paranoia
if ( $file ) {
$thumb = $file->transform( array( 'width' => 180, 'height' => 360 ) );
return $thumb->toHtml( array( 'desc-link' => true ) );
} else {
return htmlspecialchars( $value );
@ -493,6 +496,7 @@ class ImageListPager extends TablePager {
'checked' => $this->mShowAll,
'tabindex' => 4,
) );
return Html::openElement( 'form',
array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listfiles-form' )
) .

View file

@ -84,6 +84,7 @@ class MIMEsearchPage extends QueryPage {
),
),
);
return $qi;
}

View file

@ -23,6 +23,7 @@
* @ingroup SpecialPage
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
*/
class MostrevisionsPage extends FewestrevisionsPage {
function __construct( $name = 'Mostrevisions' ) {
parent::__construct( $name );

View file

@ -593,8 +593,8 @@ class MovePageForm extends UnlistedSpecialPage {
$dbr = wfGetDB( DB_MASTER );
if ( $this->moveSubpages && (
MWNamespace::hasSubpages( $nt->getNamespace() ) || (
$this->moveTalk &&
MWNamespace::hasSubpages( $nt->getTalkPage()->getNamespace() )
$this->moveTalk
&& MWNamespace::hasSubpages( $nt->getTalkPage()->getNamespace() )
)
) ) {
$conds = array(

View file

@ -108,6 +108,7 @@ class SpecialAllMyUploads extends RedirectSpecialPage {
function getRedirect( $subpage ) {
$this->mAddedRedirectParams['ilshowall'] = 1;
return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
}
}

View file

@ -20,6 +20,7 @@
* @file
* @ingroup SpecialPage
*/
class SpecialNewFiles extends IncludableSpecialPage {
public function __construct() {
parent::__construct( 'Newimages' );

View file

@ -39,6 +39,7 @@ class SpecialPermanentLink extends RedirectSpecialPage {
throw new ErrorPageError( 'nopagetitle', 'nopagetext' );
}
$this->mAddedRedirectParams['oldid'] = $subpage;
return true;
}
}

View file

@ -207,6 +207,7 @@ class SpecialRandomInCategory extends SpecialPage {
$qi['conds'][] = 'cl_timestamp ' . $op . ' ' .
$dbr->addQuotes( $dbr->timestamp( $minClTime ) );
}
return $qi;
}
@ -229,6 +230,7 @@ class SpecialRandomInCategory extends SpecialPage {
}
$ts = ( $this->maxTimestamp - $this->minTimestamp ) * $rand + $this->minTimestamp;
return intval( $ts );
}
@ -258,6 +260,7 @@ class SpecialRandomInCategory extends SpecialPage {
if ( !$res ) {
throw new MWException( 'No entries in category' );
}
return array( wfTimestamp( TS_UNIX, $res->low ), wfTimestamp( TS_UNIX, $res->high ) );
}

View file

@ -45,6 +45,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
$query = $this->getFeedQuery();
$query['feedformat'] = $feedFormat === 'atom' ? 'atom' : 'rss';
$this->getOutput()->redirect( wfAppendQuery( wfScript( 'api' ), $query ) );
return;
}
@ -272,6 +273,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
if ( $query['limit'] > $wgFeedLimit ) {
$query['limit'] = $wgFeedLimit;
}
return $query;
}
@ -492,6 +494,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
public function checkLastModified() {
$dbr = $this->getDB();
$lastmod = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)', false, __METHOD__ );
return $lastmod;
}

View file

@ -38,6 +38,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
$opts = parent::getDefaultOptions();
$opts->add( 'target', '' );
$opts->add( 'showlinkedto', false );
return $opts;
}
@ -58,6 +59,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
if ( !$title || $title->isExternal() ) {
$outputPage->addHtml( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )
->parse() . '</div>' );
return false;
}
@ -91,7 +93,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
'wl_user' => $uid,
'wl_title=rc_title',
'wl_namespace=rc_namespace'
));
) );
}
if ( $this->getUser()->isAllowed( 'rollback' ) ) {
$tables[] = 'page';
@ -256,6 +258,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
$this->rclTargetTitle = false;
}
}
return $this->rclTargetTitle;
}
}

View file

@ -78,6 +78,7 @@ class SpecialRedirect extends FormSpecialPage {
return null;
}
$userpage = Title::makeTitle( NS_USER, $username );
return $userpage->getFullURL( '', false, PROTO_CURRENT );
}
@ -89,7 +90,7 @@ class SpecialRedirect extends FormSpecialPage {
function dispatchFile() {
$title = Title::makeTitleSafe( NS_FILE, $this->mValue );
if ( ! $title instanceof Title ) {
if ( !$title instanceof Title ) {
return null;
}
$file = wfFindFile( $title );
@ -112,6 +113,7 @@ class SpecialRedirect extends FormSpecialPage {
$url = $mto->getURL();
}
}
return $url;
}
@ -130,6 +132,7 @@ class SpecialRedirect extends FormSpecialPage {
if ( $oldid === 0 ) {
return null;
}
return wfAppendQuery( wfScript( 'index' ), array(
'oldid' => $oldid
) );
@ -149,6 +152,7 @@ class SpecialRedirect extends FormSpecialPage {
if ( $curid === 0 ) {
return null;
}
return wfAppendQuery( wfScript( 'index' ), array(
'curid' => $curid
) );
@ -165,33 +169,36 @@ class SpecialRedirect extends FormSpecialPage {
function dispatch() {
// the various namespaces supported by Special:Redirect
switch ( $this->mType ) {
case 'user':
$url = $this->dispatchUser();
break;
case 'file':
$url = $this->dispatchFile();
break;
case 'revision':
$url = $this->dispatchRevision();
break;
case 'page':
$url = $this->dispatchPage();
break;
default:
$this->getOutput()->setStatusCode( 404 );
$url = null;
break;
case 'user':
$url = $this->dispatchUser();
break;
case 'file':
$url = $this->dispatchFile();
break;
case 'revision':
$url = $this->dispatchRevision();
break;
case 'page':
$url = $this->dispatchPage();
break;
default:
$this->getOutput()->setStatusCode( 404 );
$url = null;
break;
}
if ( $url ) {
$this->getOutput()->redirect( $url );
return true;
}
if ( !is_null( $this->mValue ) ) {
$this->getOutput()->setStatusCode( 404 );
// Message: redirect-not-exists
$msg = $this->getMessagePrefix() . '-not-exists';
return Status::newFatal( $msg );
}
return false;
}
@ -228,6 +235,7 @@ class SpecialRedirect extends FormSpecialPage {
if ( !empty( $this->mValue ) ) {
$a['value']['default'] = $this->mValue;
}
return $a;
}
@ -235,6 +243,7 @@ class SpecialRedirect extends FormSpecialPage {
if ( !empty( $data['type'] ) && !empty( $data['value'] ) ) {
$this->setParameter( $data['type'] . '/' . $data['value'] );
}
/* if this returns false, will show the form */
return $this->dispatch();
}

View file

@ -90,7 +90,7 @@ class SpecialResetTokens extends FormSpecialPage {
->rawParams( $this->msg( $tok['label-message'] )->parse() )
->params( $user->getTokenFromOption( $tok['preference'] ) )
->escaped();
$tokensForForm[ $label ] = $tok['preference'];
$tokensForForm[$label] = $tok['preference'];
}
$desc = array(

View file

@ -137,6 +137,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$this->token = $request->getVal( 'token' );
if ( $this->archiveName && $this->targetObj ) {
$this->tryShowFile( $this->archiveName );
return;
}
@ -156,6 +157,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
# We need a target page!
if ( is_null( $this->targetObj ) ) {
$output->addWikiMsg( 'undelete-header' );
return;
}
# Give a link to the logs/hist for this page
@ -257,6 +259,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$conds['log_action'] = $this->getList()->getLogAction();
$conds['ls_field'] = RevisionDeleter::getRelationType( $this->typeName );
$conds['ls_value'] = $this->ids;
return $conds;
}
@ -271,6 +274,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
// Check if user is allowed to see this file
if ( !$oimage->exists() ) {
$this->getOutput()->addWikiMsg( 'revdelete-no-file' );
return;
}
$user = $this->getUser();
@ -300,6 +304,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
Xml::submitButton( $this->msg( 'revdelete-show-file-submit' )->text() ) .
'</form>'
);
return;
}
$this->getOutput()->disable();
@ -325,6 +330,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$this->typeName, $this->getContext(), $this->targetObj, $this->ids
);
}
return $this->list;
}
@ -467,8 +473,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$line = Xml::tags( 'td', array( 'class' => 'mw-input' ), $innerHTML );
$html .= "<tr>$line</tr>\n";
}
// Otherwise, use tri-state radios
} else {
// Otherwise, use tri-state radios
$html .= '<tr>';
$html .= '<th class="mw-revdel-checkbox">' . $this->msg( 'revdelete-radio-same' )->escaped() . '</th>';
$html .= '<th class="mw-revdel-checkbox">' . $this->msg( 'revdelete-radio-unset' )->escaped() . '</th>';
@ -495,6 +501,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
}
$html .= '</table>';
return $html;
}
@ -508,6 +515,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$token = $this->getRequest()->getVal( 'wpEditToken' );
if ( $this->submitClicked && !$this->getUser()->matchEditToken( $token ) ) {
$this->getOutput()->addWikiMsg( 'sessionfailure' );
return false;
}
$bitParams = $this->extractBitParams();
@ -527,11 +535,13 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$status = $this->save( $bitParams, $comment, $this->targetObj );
if ( $status->isGood() ) {
$this->success();
return true;
# ...otherwise, bounce back to form...
} else {
# ...otherwise, bounce back to form...
$this->failure( $status );
}
return false;
}
@ -573,6 +583,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
if ( !isset( $bitfield[Revision::DELETED_RESTRICTED] ) ) {
$bitfield[Revision::DELETED_RESTRICTED] = 0;
}
return $bitfield;
}

View file

@ -38,10 +38,12 @@ class SpecialRunJobs extends UnlistedSpecialPage {
if ( wfReadOnly() ) {
header( "HTTP/1.0 423 Locked" );
print 'Wiki is in read-only mode';
return;
} elseif ( !$this->getRequest()->wasPosted() ) {
header( "HTTP/1.0 400 Bad Request" );
print 'Request must be POSTed';
return;
}
@ -53,6 +55,7 @@ class SpecialRunJobs extends UnlistedSpecialPage {
if ( count( $missing ) ) {
header( "HTTP/1.0 400 Bad Request" );
print 'Missing parameters: ' . implode( ', ', array_keys( $missing ) );
return;
}
@ -76,6 +79,7 @@ class SpecialRunJobs extends UnlistedSpecialPage {
if ( !$verified || $params['sigexpiry'] < time() ) {
header( "HTTP/1.0 400 Bad Request" );
print 'Invalid or stale signature provided';
return;
}
@ -132,7 +136,7 @@ class SpecialRunJobs extends UnlistedSpecialPage {
$job = $group->pop( JobQueueGroup::TYPE_DEFAULT, JobQueueGroup::USE_CACHE );
if ( $job ) {
$output = $job->toString() . "\n";
$t = - microtime( true );
$t = -microtime( true );
wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
$success = $job->run();
wfProfileOut( __METHOD__ . '-' . get_class( $job ) );

View file

@ -179,6 +179,7 @@ class SpecialSearch extends SpecialPage {
# If the string cannot be used to create a title
if ( is_null( $t ) ) {
$this->showResults( $term );
return;
}
# If there's an exact or very near match, jump right there.
@ -191,6 +192,7 @@ class SpecialSearch extends SpecialPage {
if ( !is_null( $t ) ) {
$this->getOutput()->redirect( $t->getFullURL() );
return;
}
# No match, generate an edit URL
@ -203,6 +205,7 @@ class SpecialSearch extends SpecialPage {
# If the feature is enabled, go straight to the edit page
if ( $wgGoToEdit ) {
$this->getOutput()->redirect( $t->getFullURL( array( 'action' => 'edit' ) ) );
return;
}
}
@ -247,6 +250,7 @@ class SpecialSearch extends SpecialPage {
Xml::closeElement( 'fieldset' )
);
}
return;
}
@ -328,6 +332,7 @@ class SpecialSearch extends SpecialPage {
// Sometimes the search engine knows there are too many hits
if ( $titleMatches instanceof SearchResultTooMany ) {
$out->wrapWikiMsg( "==$1==\n", 'toomanymatches' );
return;
}
@ -336,6 +341,7 @@ class SpecialSearch extends SpecialPage {
$out->addHTML( $this->formHeader( $term, 0, 0 ) );
$out->addHtml( $this->getProfileForm( $this->profile, $term ) );
$out->addHTML( '</form>' );
// Empty query -- straight view of search form
return;
}
@ -438,12 +444,14 @@ class SpecialSearch extends SpecialPage {
// show direct page/create link if applicable
// Check DBkey !== '' in case of fragment link only.
if ( is_null( $t ) || $t->getDBkey() === '' ||
( $titleMatches !== null && $titleMatches->searchContainedSyntax() ) ||
( $textMatches !== null && $textMatches->searchContainedSyntax() ) ) {
if ( is_null( $t ) || $t->getDBkey() === ''
|| ( $titleMatches !== null && $titleMatches->searchContainedSyntax() )
|| ( $textMatches !== null && $textMatches->searchContainedSyntax() )
) {
// invalid title
// preserve the paragraph for margins etc...
$this->getOutput()->addHtml( '<p></p>' );
return;
}
@ -517,6 +525,7 @@ class SpecialSearch extends SpecialPage {
$opt['ns' . $n] = 1;
}
}
return $opt + $this->extraParams;
}
@ -573,7 +582,7 @@ class SpecialSearch extends SpecialPage {
$link_t = clone $t;
wfRunHooks( 'ShowSearchHitTitle',
array( &$link_t, &$titleSnippet, $result, $terms, $this ) );
array( &$link_t, &$titleSnippet, $result, $terms, $this ) );
$link = Linker::linkKnown(
$link_t,
@ -845,6 +854,7 @@ class SpecialSearch extends SpecialPage {
}
$out .= "<li>{$link} {$redirect}</li>\n";
return $out;
}
@ -864,6 +874,7 @@ class SpecialSearch extends SpecialPage {
} else {
$form = '';
wfRunHooks( 'SpecialSearchProfileForm', array( $this, &$form, $profile, $term, $opts ) );
return $form;
}
}
@ -938,11 +949,12 @@ class SpecialSearch extends SpecialPage {
foreach ( $opts as $key => $value ) {
$hidden .= Html::hidden( $key, $value );
}
// Return final output
return Xml::openElement(
'fieldset',
array( 'id' => 'mw-searchoptions', 'style' => 'margin:0em;' )
) .
'fieldset',
array( 'id' => 'mw-searchoptions', 'style' => 'margin:0em;' )
) .
Xml::element( 'legend', null, $this->msg( 'powersearch-legend' )->text() ) .
Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
@ -1098,6 +1110,7 @@ class SpecialSearch extends SpecialPage {
$this->msg( 'searchbutton' )->text(),
array( 'class' => array( 'mw-ui-button', 'mw-ui-progressive' ) )
) . "\n";
return $out . $this->didYouMeanHtml;
}
@ -1149,6 +1162,7 @@ class SpecialSearch extends SpecialPage {
if ( count( $p ) > 1 ) {
return $wgContLang->getNsIndex( $p[0] ) == NS_FILE;
}
return false;
}
@ -1166,6 +1180,7 @@ class SpecialSearch extends SpecialPage {
if ( count( $p ) > 1 ) {
return $p[0] == $allkeyword;
}
return false;
}
@ -1179,6 +1194,7 @@ class SpecialSearch extends SpecialPage {
$this->searchEngine = $this->searchEngineType ?
SearchEngine::create( $this->searchEngineType ) : SearchEngine::create();
}
return $this->searchEngine;
}

View file

@ -40,12 +40,15 @@ class ShortPagesPage extends QueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'page' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_len' ),
'conds' => array( 'page_namespace' =>
MWNamespace::getContentNamespaces(),
'page_is_redirect' => 0 ),
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_len'
),
'conds' => array(
'page_namespace' => MWNamespace::getContentNamespaces(),
'page_is_redirect' => 0
),
'options' => array( 'USE INDEX' => 'page_redirect_namespace_len' )
);
}
@ -111,8 +114,8 @@ class ShortPagesPage extends QueryPage {
$size = $this->msg( 'nbytes' )->numParams( $result->value )->escaped();
return $exists
? "${hlinkInParentheses} {$dm}{$plink} {$dm}[{$size}]"
: "<del>${hlinkInParentheses} {$dm}{$plink} {$dm}[{$size}]</del>";
? "${hlinkInParentheses} {$dm}{$plink} {$dm}[{$size}]"
: "<del>${hlinkInParentheses} {$dm}{$plink} {$dm}[{$size}]</del>";
}
protected function getGroupName() {

View file

@ -30,7 +30,7 @@
class SpecialStatistics extends SpecialPage {
private $views, $edits, $good, $images, $total, $users,
$activeUsers = 0;
$activeUsers = 0;
public function __construct() {
parent::__construct( 'Statistics' );
@ -123,6 +123,7 @@ class SpecialStatistics extends SpecialPage {
" $descriptionText" );
}
}
return Html::rawElement( 'tr', $trExtraParams,
Html::rawElement( 'td', array(), $text ) .
Html::rawElement( 'td', array( 'class' => 'mw-statistics-numbers' ), $number )
@ -166,6 +167,7 @@ class SpecialStatistics extends SpecialPage {
private function getUserStats() {
global $wgActiveUserDays;
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), $this->msg( 'statistics-header-users' )->parse() ) .
Xml::closeElement( 'tr' ) .
@ -225,6 +227,7 @@ class SpecialStatistics extends SpecialPage {
$this->getLanguage()->formatNum( $countUsers ),
array( 'class' => 'statistics-group-' . Sanitizer::escapeClass( $group ) . $classZero ) );
}
return $text;
}
@ -245,36 +248,39 @@ class SpecialStatistics extends SpecialPage {
$text = '';
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select(
'page',
array(
'page_namespace',
'page_title',
'page_counter',
),
array(
'page_is_redirect' => 0,
'page_counter > 0',
),
__METHOD__,
array(
'ORDER BY' => 'page_counter DESC',
'LIMIT' => 10,
)
);
if ( $res->numRows() > 0 ) {
$text .= Xml::openElement( 'tr' );
$text .= Xml::tags( 'th', array( 'colspan' => '2' ), $this->msg( 'statistics-mostpopular' )->parse() );
$text .= Xml::closeElement( 'tr' );
foreach ( $res as $row ) {
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
if ( $title instanceof Title ) {
$text .= $this->formatRow( Linker::link( $title ),
$this->getLanguage()->formatNum( $row->page_counter ) );
'page',
array(
'page_namespace',
'page_title',
'page_counter',
),
array(
'page_is_redirect' => 0,
'page_counter > 0',
),
__METHOD__,
array(
'ORDER BY' => 'page_counter DESC',
'LIMIT' => 10,
)
);
}
if ( $res->numRows() > 0 ) {
$text .= Xml::openElement( 'tr' );
$text .= Xml::tags( 'th', array( 'colspan' => '2' ), $this->msg( 'statistics-mostpopular' )->parse() );
$text .= Xml::closeElement( 'tr' );
foreach ( $res as $row ) {
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
if ( $title instanceof Title ) {
$text .= $this->formatRow( Linker::link( $title ),
$this->getLanguage()->formatNum( $row->page_counter ) );
}
$res->free();
}
$res->free();
}
return $text;
}

View file

@ -46,11 +46,11 @@ class SpecialTags extends SpecialPage {
// Write the headers
$html = Xml::tags( 'tr', null, Xml::tags( 'th', null, $this->msg( 'tags-tag' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-display-header' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-description-header' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-active-header' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-hitcount-header' )->parse() )
);
Xml::tags( 'th', null, $this->msg( 'tags-display-header' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-description-header' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-active-header' )->parse() ) .
Xml::tags( 'th', null, $this->msg( 'tags-hitcount-header' )->parse() )
);
// Used in #doTagRow()
$this->definedTags = array_fill_keys( ChangeTags::listDefinedTags(), true );

View file

@ -107,7 +107,6 @@ class SpecialUnblock extends SpecialPage {
if ( $type == Block::TYPE_AUTO && $this->type == Block::TYPE_IP ) {
$fields['Target']['default'] = $this->target;
unset( $fields['Name'] );
} else {
$fields['Target']['default'] = $target;
$fields['Target']['type'] = 'hidden';
@ -133,11 +132,11 @@ class SpecialUnblock extends SpecialPage {
break;
}
}
} else {
$fields['Target']['default'] = $this->target;
unset( $fields['Name'] );
}
return $fields;
}
@ -181,6 +180,7 @@ class SpecialUnblock extends SpecialPage {
list( $target, $type ) = SpecialBlock::getTargetAndType( $target );
if ( $block->getType() == Block::TYPE_RANGE && $type == Block::TYPE_IP ) {
$range = $block->getTarget();
return array( array( 'ipb_blocked_as_range', $target, $range ) );
}

View file

@ -50,13 +50,13 @@ class UncategorizedImagesPage extends ImageQueryPage {
return array(
'tables' => array( 'page', 'categorylinks' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title' ),
'title' => 'page_title',
'value' => 'page_title' ),
'conds' => array( 'cl_from IS NULL',
'page_namespace' => NS_FILE,
'page_is_redirect' => 0 ),
'page_namespace' => NS_FILE,
'page_is_redirect' => 0 ),
'join_conds' => array( 'categorylinks' => array(
'LEFT JOIN', 'cl_from=page_id' ) )
'LEFT JOIN', 'cl_from=page_id' ) )
);
}

View file

@ -49,16 +49,21 @@ class UncategorizedPagesPage extends PageQueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'page', 'categorylinks' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title' ),
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title'
),
// default for page_namespace is all content namespaces (if requestedNamespace is false)
// otherwise, page_namespace is requestedNamespace
'conds' => array( 'cl_from IS NULL',
'page_namespace' => ( $this->requestedNamespace !== false ? $this->requestedNamespace : MWNamespace::getContentNamespaces() ),
'page_is_redirect' => 0 ),
'join_conds' => array( 'categorylinks' => array(
'LEFT JOIN', 'cl_from = page_id' ) )
'conds' => array(
'cl_from IS NULL',
'page_namespace' => ( $this->requestedNamespace !== false ? $this->requestedNamespace : MWNamespace::getContentNamespaces() ),
'page_is_redirect' => 0
),
'join_conds' => array(
'categorylinks' => array( 'LEFT JOIN', 'cl_from = page_id' )
)
);
}
@ -68,6 +73,7 @@ class UncategorizedPagesPage extends PageQueryPage {
if ( $this->requestedNamespace === false && count( MWNamespace::getContentNamespaces() ) > 1 ) {
return array( 'page_namespace', 'page_title' );
}
return array( 'page_title' );
}

View file

@ -58,6 +58,7 @@ class PageArchive {
*/
public static function listAllPages() {
$dbr = wfGetDB( DB_SLAVE );
return self::listPages( $dbr, '' );
}
@ -137,7 +138,7 @@ class PageArchive {
}
$conds = array( 'ar_namespace' => $this->title->getNamespace(),
'ar_title' => $this->title->getDBkey() );
'ar_title' => $this->title->getDBkey() );
$options = array( 'ORDER BY' => 'ar_timestamp DESC' );
@ -406,6 +407,7 @@ class PageArchive {
->inContentLanguage()->text();
} else {
wfDebug( "Undelete: nothing undeleted...\n" );
return false;
}
@ -545,6 +547,7 @@ class PageArchive {
$status = Status::newGood( 0 );
$status->warning( "undelete-no-results" );
return $status;
}
@ -765,6 +768,7 @@ class SpecialUndelete extends SpecialPage {
if ( $user->isAllowed( 'browsearchive' ) ) {
$this->showSearchForm();
}
return;
}
@ -844,6 +848,7 @@ class SpecialUndelete extends SpecialPage {
if ( $result->numRows() == 0 ) {
$out->addWikiMsg( 'undelete-no-results' );
return false;
}
@ -897,6 +902,7 @@ class SpecialUndelete extends SpecialPage {
if ( !$rev ) {
$out->addWikiMsg( 'undeleterevision-missing' );
return;
}
@ -906,6 +912,7 @@ class SpecialUndelete extends SpecialPage {
"<div class='mw-warning plainlinks'>\n$1\n</div>\n",
'rev-deleted-text-permission'
);
return;
}
@ -1269,32 +1276,31 @@ class SpecialUndelete extends SpecialPage {
$unsuppressBox = '';
}
$table =
Xml::fieldset( $this->msg( 'undelete-fieldset-title' )->text() ) .
Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
"<tr>
<td colspan='2' class='mw-undelete-extrahelp'>" .
$this->msg( 'undeleteextrahelp' )->parseAsBlock() .
"</td>
</tr>
<tr>
<td class='mw-label'>" .
Xml::label( $this->msg( 'undeletecomment' )->text(), 'wpComment' ) .
"</td>
<td class='mw-input'>" .
Xml::input( 'wpComment', 50, $this->mComment, array( 'id' => 'wpComment', 'autofocus' => true ) ) .
"</td>
</tr>
<tr>
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( $this->msg( 'undeletebtn' )->text(), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
Xml::submitButton( $this->msg( 'undeleteinvert' )->text(), array( 'name' => 'invert', 'id' => 'mw-undelete-invert' ) ) .
"</td>
</tr>" .
$unsuppressBox .
Xml::closeElement( 'table' ) .
Xml::closeElement( 'fieldset' );
$table = Xml::fieldset( $this->msg( 'undelete-fieldset-title' )->text() ) .
Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
"<tr>
<td colspan='2' class='mw-undelete-extrahelp'>" .
$this->msg( 'undeleteextrahelp' )->parseAsBlock() .
"</td>
</tr>
<tr>
<td class='mw-label'>" .
Xml::label( $this->msg( 'undeletecomment' )->text(), 'wpComment' ) .
"</td>
<td class='mw-input'>" .
Xml::input( 'wpComment', 50, $this->mComment, array( 'id' => 'wpComment', 'autofocus' => true ) ) .
"</td>
</tr>
<tr>
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( $this->msg( 'undeletebtn' )->text(), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
Xml::submitButton( $this->msg( 'undeleteinvert' )->text(), array( 'name' => 'invert', 'id' => 'mw-undelete-invert' ) ) .
"</td>
</tr>" .
$unsuppressBox .
Xml::closeElement( 'table' ) .
Xml::closeElement( 'fieldset' );
$out->addHTML( $table );
}

View file

@ -41,14 +41,17 @@ class UnusedCategoriesPage extends QueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'page', 'categorylinks' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title' ),
'conds' => array( 'cl_from IS NULL',
'page_namespace' => NS_CATEGORY,
'page_is_redirect' => 0 ),
'join_conds' => array( 'categorylinks' => array(
'LEFT JOIN', 'cl_to = page_title' ) )
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title'
),
'conds' => array(
'cl_from IS NULL',
'page_namespace' => NS_CATEGORY,
'page_is_redirect' => 0
),
'join_conds' => array( 'categorylinks' => array( 'LEFT JOIN', 'cl_to = page_title' ) )
);
}
@ -67,6 +70,7 @@ class UnusedCategoriesPage extends QueryPage {
*/
function formatResult( $skin, $result ) {
$title = Title::makeTitle( NS_CATEGORY, $result->title );
return Linker::link( $title, htmlspecialchars( $title->getText() ) );
}

View file

@ -47,28 +47,30 @@ class UnusedimagesPage extends ImageQueryPage {
global $wgCountCategorizedImagesAsUsed;
$retval = array(
'tables' => array( 'image', 'imagelinks' ),
'fields' => array( 'namespace' => NS_FILE,
'title' => 'img_name',
'value' => 'img_timestamp',
'img_user', 'img_user_text',
'img_description' ),
'fields' => array(
'namespace' => NS_FILE,
'title' => 'img_name',
'value' => 'img_timestamp',
'img_user', 'img_user_text',
'img_description'
),
'conds' => array( 'il_to IS NULL' ),
'join_conds' => array( 'imagelinks' => array(
'LEFT JOIN', 'il_to = img_name' ) )
'join_conds' => array( 'imagelinks' => array( 'LEFT JOIN', 'il_to = img_name' ) )
);
if ( $wgCountCategorizedImagesAsUsed ) {
// Order is significant
$retval['tables'] = array( 'image', 'page', 'categorylinks',
'imagelinks' );
'imagelinks' );
$retval['conds']['page_namespace'] = NS_FILE;
$retval['conds'][] = 'cl_from IS NULL';
$retval['conds'][] = 'img_name = page_title';
$retval['join_conds']['categorylinks'] = array(
'LEFT JOIN', 'cl_from = page_id' );
'LEFT JOIN', 'cl_from = page_id' );
$retval['join_conds']['imagelinks'] = array(
'LEFT JOIN', 'il_to = page_title' );
'LEFT JOIN', 'il_to = page_title' );
}
return $retval;
}

View file

@ -50,12 +50,16 @@ class UnusedtemplatesPage extends QueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'page', 'templatelinks' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title' ),
'conds' => array( 'page_namespace' => NS_TEMPLATE,
'tl_from IS NULL',
'page_is_redirect' => 0 ),
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title'
),
'conds' => array(
'page_namespace' => NS_TEMPLATE,
'tl_from IS NULL',
'page_is_redirect' => 0
),
'join_conds' => array( 'templatelinks' => array(
'LEFT JOIN', array( 'tl_title = page_title',
'tl_namespace = page_namespace' ) ) )
@ -79,6 +83,7 @@ class UnusedtemplatesPage extends QueryPage {
SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() ),
$this->msg( 'unusedtemplateswlh' )->escaped()
);
return $this->getLanguage()->specialList( $pageLink, $wlhLink );
}

View file

@ -46,13 +46,16 @@ class UnwatchedpagesPage extends QueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'page', 'watchlist' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_namespace' ),
'conds' => array( 'wl_title IS NULL',
'page_is_redirect' => 0,
"page_namespace != '" . NS_MEDIAWIKI .
"'" ),
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_namespace'
),
'conds' => array(
'wl_title IS NULL',
'page_is_redirect' => 0,
"page_namespace != '" . NS_MEDIAWIKI . "'"
),
'join_conds' => array( 'watchlist' => array(
'LEFT JOIN', array( 'wl_title = page_title',
'wl_namespace = page_namespace' ) ) )

View file

@ -179,6 +179,7 @@ class SpecialUpload extends SpecialPage {
# Backwards compatibility hook
if ( !wfRunHooks( 'UploadForm:initial', array( &$this ) ) ) {
wfDebug( "Hook 'UploadForm:initial' broke output of the upload form" );
return;
}
$this->showUploadForm( $this->getUploadForm() );
@ -206,7 +207,6 @@ class SpecialUpload extends SpecialPage {
} else {
$this->getOutput()->addHTML( $form );
}
}
/**
@ -401,6 +401,7 @@ class SpecialUpload extends SpecialPage {
$status = $this->mUpload->fetchFile();
if ( !$status->isOK() ) {
$this->showUploadError( $this->getOutput()->parse( $status->getWikiText() ) );
return;
}
@ -418,6 +419,7 @@ class SpecialUpload extends SpecialPage {
$details = $this->mUpload->verifyUpload();
if ( $details['status'] != UploadBase::OK ) {
$this->processVerificationError( $details );
return;
}
@ -426,6 +428,7 @@ class SpecialUpload extends SpecialPage {
if ( $permErrors !== true ) {
$code = array_shift( $permErrors[0] );
$this->showRecoverableUploadError( $this->msg( $code, $permErrors[0] )->parse() );
return;
}
@ -449,6 +452,7 @@ class SpecialUpload extends SpecialPage {
$status = $this->mUpload->performUpload( $this->mComment, $pageText, $this->mWatchthis, $this->getUser() );
if ( !$status->isGood() ) {
$this->showUploadError( $this->getOutput()->parse( $status->getWikiText() ) );
return;
}
@ -500,6 +504,7 @@ class SpecialUpload extends SpecialPage {
$pageText = $comment;
}
}
return $pageText;
}
@ -629,6 +634,7 @@ class SpecialUpload extends SpecialPage {
$success = $this->mUpload->unsaveUploadedFile();
if ( !$success ) {
$this->getOutput()->showFileDeleteError( $this->mUpload->getTempPath() );
return false;
} else {
return true;
@ -707,6 +713,7 @@ class SpecialUpload extends SpecialPage {
foreach ( $dupes as $file ) {
$gallery->add( $file->getTitle() );
}
return '<li>' .
wfMessage( 'file-exists-duplicate' )->numParams( count( $dupes ) )->parse() .
$gallery->toHtml() . "</li>\n";
@ -741,8 +748,7 @@ class UploadForm extends HTMLForm {
public function __construct( array $options = array(), IContextSource $context = null ) {
$this->mWatch = !empty( $options['watch'] );
$this->mForReUpload = !empty( $options['forreupload'] );
$this->mSessionKey = isset( $options['sessionkey'] )
? $options['sessionkey'] : '';
$this->mSessionKey = isset( $options['sessionkey'] ) ? $options['sessionkey'] : '';
$this->mHideIgnoreWarning = !empty( $options['hideignorewarning'] );
$this->mDestWarningAck = !empty( $options['destwarningack'] );
$this->mDestFile = isset( $options['destfile'] ) ? $options['destfile'] : '';
@ -778,7 +784,6 @@ class UploadForm extends HTMLForm {
$this->mSourceIds[] = $field['id'];
}
}
}
/**
@ -838,8 +843,8 @@ class UploadForm extends HTMLForm {
'upload-type' => 'File',
'radio' => &$radio,
'help' => $this->msg( 'upload-maxfilesize',
$this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['file'] ) )
->parse() .
$this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['file'] )
)->parse() .
$this->msg( 'word-separator' )->escaped() .
$this->msg( 'upload_source_file' )->escaped(),
'checked' => $selectedSourceType == 'file',
@ -855,8 +860,8 @@ class UploadForm extends HTMLForm {
'upload-type' => 'url',
'radio' => &$radio,
'help' => $this->msg( 'upload-maxfilesize',
$this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['url'] ) )
->parse() .
$this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['url'] )
)->parse() .
$this->msg( 'word-separator' )->escaped() .
$this->msg( 'upload_source_url' )->escaped(),
'checked' => $selectedSourceType == 'url',
@ -870,6 +875,7 @@ class UploadForm extends HTMLForm {
'default' => $this->getExtensionsMessage(),
'raw' => true,
);
return $descriptor;
}
@ -882,7 +888,7 @@ class UploadForm extends HTMLForm {
# Print a list of allowed file extensions, if so configured. We ignore
# MIME type here, it's incomprehensible to most people and too long.
global $wgCheckFileExtensions, $wgStrictFileExtensions,
$wgFileExtensions, $wgFileBlacklist;
$wgFileExtensions, $wgFileBlacklist;
if ( $wgCheckFileExtensions ) {
if ( $wgStrictFileExtensions ) {
@ -905,6 +911,7 @@ class UploadForm extends HTMLForm {
# Everything is permitted.
$extensionsList = '';
}
return $extensionsList;
}
@ -1100,7 +1107,6 @@ class UploadForm extends HTMLForm {
function trySubmit() {
return false;
}
}
/**
@ -1130,6 +1136,7 @@ class UploadSourceField extends HTMLTextField {
$id = $this->mParams['id'];
$label = Html::rawElement( 'label', array( 'for' => $id ), $this->mLabel );
}
return Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes, $label );
}

View file

@ -66,6 +66,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
if ( $subPage === null || $subPage === '' ) {
return $this->showUploads();
}
return $this->showUpload( $subPage );
}
@ -136,10 +137,11 @@ class SpecialUploadStash extends UnlistedSpecialPage {
$handler = $file->getHandler();
if ( $handler ) {
$params = $handler->parseParamString( $paramString );
return array( 'file' => $file, 'type' => $type, 'params' => $params );
} else {
throw new UploadStashBadPathException( 'No handler found for ' .
"mime {$file->getMimeType()} of file {$file->getPath()}" );
"mime {$file->getMimeType()} of file {$file->getPath()}" );
}
}
@ -204,7 +206,6 @@ class SpecialUploadStash extends UnlistedSpecialPage {
}
return $this->outputLocalFile( $thumbFile );
}
/**
@ -214,9 +215,9 @@ class SpecialUploadStash extends UnlistedSpecialPage {
* Note: We rely on NFS to have propagated the file contents to the scaler. However, we do not rely on the thumbnail being created in NFS and then
* propagated back to our filesystem. Instead we take the results of the HTTP request instead.
* Note: no caching is being done here, although we are instructing the client to cache it forever.
* @param $file: File object
* @param $params: scaling parameters ( e.g. array( width => '50' ) );
* @param $flags: scaling flags ( see File:: constants )
* @param File $file
* @param array $params Scaling parameters ( e.g. array( width => '50' ) );
* @param $flags Scaling flags ( see File:: constants )
* @throws MWException
* @return boolean success
*/
@ -248,16 +249,17 @@ class SpecialUploadStash extends UnlistedSpecialPage {
);
$req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions );
$status = $req->execute();
if ( ! $status->isOK() ) {
if ( !$status->isOK() ) {
$errors = $status->getErrorsArray();
$errorStr = "Fetching thumbnail failed: " . print_r( $errors, 1 );
$errorStr .= "\nurl = $scalerThumbUrl\n";
throw new MWException( $errorStr );
}
$contentType = $req->getResponseHeader( "content-type" );
if ( ! $contentType ) {
if ( !$contentType ) {
throw new MWException( "Missing content-type header" );
}
return $this->outputContents( $req->getContent(), $contentType );
}
@ -273,6 +275,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
if ( $file->getSize() > self::MAX_SERVE_BYTES ) {
throw new SpecialUploadStashTooLargeException();
}
return $file->getRepo()->streamFile( $file->getPath(),
array( 'Content-Transfer-Encoding: binary',
'Expires: Sun, 17-Jan-2038 19:14:07 GMT' )
@ -294,6 +297,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
}
self::outputFileHeaders( $contentType, $size );
print $content;
return true;
}
@ -301,8 +305,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
* Output headers for streaming
* XXX unsure about encoding as binary; if we received from HTTP perhaps we should use that encoding, concatted with semicolon to mimeType as it usually is.
* Side effect: preps PHP to write headers to STDOUT.
* @param string $contentType : string suitable for content-type header
* @param string $size: length in bytes
* @param string $contentType String suitable for content-type header
* @param string $size Length in bytes
*/
private static function outputFileHeaders( $contentType, $size ) {
header( "Content-Type: $contentType", true );
@ -325,10 +329,12 @@ class SpecialUploadStash extends UnlistedSpecialPage {
if ( isset( $formData['Clear'] ) ) {
$stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
wfDebug( "stash has: " . print_r( $stash->listFiles(), true ) );
if ( ! $stash->clear() ) {
if ( !$stash->clear() ) {
return Status::newFatal( 'uploadstash-errclear' );
}
}
return Status::newGood();
}
@ -390,4 +396,6 @@ class SpecialUploadStash extends UnlistedSpecialPage {
}
}
class SpecialUploadStashTooLargeException extends MWException {};
class SpecialUploadStashTooLargeException extends MWException {
}

View file

@ -101,7 +101,7 @@ class LoginForm extends SpecialPage {
$this->mCookieCheck = $request->getVal( 'wpCookieCheck' );
$this->mPosted = $request->wasPosted();
$this->mCreateaccountMail = $request->getCheck( 'wpCreateaccountMail' )
&& $wgEnableEmail;
&& $wgEnableEmail;
$this->mCreateaccount = $request->getCheck( 'wpCreateaccount' ) && !$this->mCreateaccountMail;
$this->mLoginattempt = $request->getCheck( 'wpLoginattempt' );
$this->mAction = $request->getVal( 'action' );
@ -134,9 +134,10 @@ class LoginForm extends SpecialPage {
# 2. Do not return to PasswordReset after a successful password change
# but goto Wiki start page (Main_Page) instead ( bug 33997 )
$returnToTitle = Title::newFromText( $this->mReturnTo );
if ( is_object( $returnToTitle ) && (
$returnToTitle->isSpecial( 'Userlogout' )
|| $returnToTitle->isSpecial( 'PasswordReset' ) ) ) {
if ( is_object( $returnToTitle )
&& ( $returnToTitle->isSpecial( 'Userlogout' )
|| $returnToTitle->isSpecial( 'PasswordReset' ) )
) {
$this->mReturnTo = '';
$this->mReturnToQuery = '';
}
@ -183,6 +184,7 @@ class LoginForm extends SpecialPage {
$this->getOutput()->redirect( $url );
// Since we only do this redir to change proto, always vary
$this->getOutput()->addVaryHeader( 'X-Forwarded-Proto' );
return;
} else {
// A wiki without HTTPS login support should set $wgServer to
@ -196,16 +198,20 @@ class LoginForm extends SpecialPage {
if ( !is_null( $this->mCookieCheck ) ) {
$this->onCookieRedirectCheck( $this->mCookieCheck );
return;
} elseif ( $this->mPosted ) {
if ( $this->mCreateaccount ) {
$this->addNewAccount();
return;
} elseif ( $this->mCreateaccountMail ) {
$this->addNewAccountMailPassword();
return;
} elseif ( ( 'submitlogin' == $this->mAction ) || $this->mLoginattempt ) {
$this->processLogin();
return;
}
}
@ -218,6 +224,7 @@ class LoginForm extends SpecialPage {
function addNewAccountMailPassword() {
if ( $this->mEmail == '' ) {
$this->mainLoginForm( $this->msg( 'noemailcreate' )->escaped() );
return;
}
@ -225,6 +232,7 @@ class LoginForm extends SpecialPage {
if ( !$status->isGood() ) {
$error = $status->getMessage();
$this->mainLoginForm( $error->toString() );
return;
}
@ -261,6 +269,7 @@ class LoginForm extends SpecialPage {
if ( !$status->isGood() ) {
$error = $status->getMessage();
$this->mainLoginForm( $error->toString() );
return false;
}
@ -324,6 +333,7 @@ class LoginForm extends SpecialPage {
wfRunHooks( 'AddNewAccount', array( $u, false ) );
$u->addNewUserLogEntry( 'create2', $this->mReason );
}
return true;
}
@ -366,6 +376,7 @@ class LoginForm extends SpecialPage {
# Request forgery checks.
if ( !self::getCreateaccountToken() ) {
self::setCreateaccountToken();
return Status::newFatal( 'nocookiesfornew' );
}
@ -387,6 +398,7 @@ class LoginForm extends SpecialPage {
} elseif ( $creationBlock instanceof Block ) {
// Throws an ErrorPageError.
$this->userBlockedMessage( $creationBlock );
// This should never be reached.
return false;
}
@ -394,7 +406,7 @@ class LoginForm extends SpecialPage {
# Include checks that will include GlobalBlocking (Bug 38333)
$permErrors = $this->getPageTitle()->getUserPermissionsErrors( 'createaccount', $currentUser, true );
if ( count( $permErrors ) ) {
throw new PermissionsError( 'createaccount', $permErrors );
throw new PermissionsError( 'createaccount', $permErrors );
}
$ip = $this->getRequest()->getIP();
@ -432,6 +444,7 @@ class LoginForm extends SpecialPage {
if ( !is_array( $valid ) ) {
$valid = array( $valid, $wgMinimalPasswordLength );
}
return call_user_func_array( 'Status::newFatal', $valid );
}
}
@ -463,6 +476,7 @@ class LoginForm extends SpecialPage {
// To return a different error code, return a Status object.
$abortError = new Message( 'createaccount-hook-aborted', array( $abortError ) );
$abortError->text();
return Status::newFatal( $abortError );
} else {
// For MediaWiki 1.23+ and updated hooks, return the Status object
@ -493,6 +507,7 @@ class LoginForm extends SpecialPage {
}
self::clearCreateaccountToken();
return $this->initUser( $u, false );
}
@ -560,6 +575,7 @@ class LoginForm extends SpecialPage {
// If the user doesn't have a login token yet, set one.
if ( !self::getLoginToken() ) {
self::setLoginToken();
return self::NEED_TOKEN;
}
// If the user didn't pass a login token, tell them we need one
@ -585,6 +601,7 @@ class LoginForm extends SpecialPage {
// will effectively be using stale data.
if ( $this->getUser()->getName() === $this->mUsername ) {
wfDebug( __METHOD__ . ": already logged in as {$this->mUsername}\n" );
return self::SUCCESS;
}
@ -610,6 +627,7 @@ class LoginForm extends SpecialPage {
$msg = null;
if ( !wfRunHooks( 'AbortLogin', array( $u, $this->mPassword, &$abort, &$msg ) ) ) {
$this->mAbortLoginErrorMsg = $msg;
return $abort;
}
@ -674,6 +692,7 @@ class LoginForm extends SpecialPage {
$retval = self::SUCCESS;
}
wfRunHooks( 'LoginAuthenticateAudit', array( $u, $this->mPassword, $retval ) );
return $retval;
}
@ -732,17 +751,23 @@ class LoginForm extends SpecialPage {
if ( $this->getUser()->isBlockedFromCreateAccount() ) {
wfDebug( __METHOD__ . ": user is blocked from account creation\n" );
return self::CREATE_BLOCKED;
}
if ( !$wgAuth->autoCreate() ) {
return self::NOT_EXISTS;
}
if ( !$wgAuth->userExists( $user->getName() ) ) {
wfDebug( __METHOD__ . ": user does not exist\n" );
return self::NOT_EXISTS;
}
if ( !$wgAuth->authenticate( $user->getName(), $this->mPassword ) ) {
wfDebug( __METHOD__ . ": \$wgAuth->authenticate() returned false, aborting\n" );
return self::WRONG_PLUGIN_PASS;
}
@ -751,6 +776,7 @@ class LoginForm extends SpecialPage {
// Hook point to add extra creation throttles and blocks
wfDebug( "LoginForm::attemptAutoCreate: a hook blocked creation: $abortError\n" );
$this->mAbortLoginErrorMsg = $abortError;
return self::ABORTED;
}
@ -760,6 +786,7 @@ class LoginForm extends SpecialPage {
if ( !$status->isOK() ) {
$errors = $status->getErrorsByType( 'error' );
$this->mAbortLoginErrorMsg = $errors[0]['message'];
return self::ABORTED;
}
@ -768,7 +795,7 @@ class LoginForm extends SpecialPage {
function processLogin() {
global $wgMemc, $wgLang, $wgSecureLogin, $wgPasswordAttemptThrottle,
$wgInvalidPasswordReset;
$wgInvalidPasswordReset;
switch ( $this->authenticateUserData() ) {
case self::SUCCESS:
@ -870,8 +897,8 @@ class LoginForm extends SpecialPage {
case self::THROTTLED:
$error = $this->mAbortLoginErrorMsg ?: 'login-throttled';
$this->mainLoginForm( $this->msg( $error )
->params ( $this->getLanguage()->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) )
->text()
->params( $this->getLanguage()->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) )
->text()
);
break;
case self::USER_BLOCKED:
@ -1133,6 +1160,7 @@ class LoginForm extends SpecialPage {
throw new PermissionsError( 'createaccount', $permErrors );
} elseif ( $user->isBlockedFromCreateAccount() ) {
$this->userBlockedMessage( $user->isBlockedFromCreateAccount() );
return;
} elseif ( wfReadOnly() ) {
throw new ReadOnlyError;
@ -1324,6 +1352,7 @@ class LoginForm extends SpecialPage {
*/
function hasSessionCookie() {
global $wgDisableCookieCheck;
return $wgDisableCookieCheck ? true : $this->getRequest()->checkSessionCookie();
}
@ -1333,6 +1362,7 @@ class LoginForm extends SpecialPage {
*/
public static function getLoginToken() {
global $wgRequest;
return $wgRequest->getSessionData( 'wsLoginToken' );
}
@ -1360,6 +1390,7 @@ class LoginForm extends SpecialPage {
*/
public static function getCreateaccountToken() {
global $wgRequest;
return $wgRequest->getSessionData( 'wsCreateaccountToken' );
}
@ -1442,6 +1473,7 @@ class LoginForm extends SpecialPage {
$links[] = $this->makeLanguageSelectorLink( $parts[0], trim( $parts[1] ) );
}
}
return count( $links ) > 0 ? $this->msg( 'loginlanguagelabel' )->rawParams(
$this->getLanguage()->pipeList( $links ) )->escaped() : '';
} else {

View file

@ -55,6 +55,7 @@ class UserrightsPage extends SpecialPage {
if ( $user->getId() == 0 ) {
return false;
}
return !empty( $available['add'] )
|| !empty( $available['remove'] )
|| ( ( $this->isself || !$checkIfSelf ) &&
@ -118,6 +119,7 @@ class UserrightsPage extends SpecialPage {
$out = $this->getOutput();
$out->wrapWikiMsg( "<div class=\"successbox\">\n$1\n</div>", 'userrights-removed-self' );
$out->returnToMain();
return;
}
@ -148,6 +150,7 @@ class UserrightsPage extends SpecialPage {
$status = $this->fetchUser( $this->mTarget );
if ( !$status->isOK() ) {
$this->getOutput()->addWikiText( $status->getWikiText() );
return;
}
@ -166,6 +169,7 @@ class UserrightsPage extends SpecialPage {
);
$out->redirect( $this->getSuccessURL() );
return;
}
}
@ -266,6 +270,7 @@ class UserrightsPage extends SpecialPage {
if ( $newGroups != $oldGroups ) {
$this->addLogEntry( $user, $oldGroups, $newGroups, $reason );
}
return array( $add, $remove );
}
@ -293,6 +298,7 @@ class UserrightsPage extends SpecialPage {
$status = $this->fetchUser( $username );
if ( !$status->isOK() ) {
$this->getOutput()->addWikiText( $status->getWikiText() );
return;
} else {
$user = $status->value;
@ -486,10 +492,10 @@ class UserrightsPage extends SpecialPage {
}
$userToolLinks = Linker::userToolLinks(
$user->getId(),
$user->getName(),
false, /* default for redContribsWhenNoEdits */
Linker::TOOL_LINKS_EMAIL /* Add "send e-mail" link */
$user->getId(),
$user->getName(),
false, /* default for redContribsWhenNoEdits */
Linker::TOOL_LINKS_EMAIL /* Add "send e-mail" link */
);
$this->getOutput()->addHTML(
@ -640,6 +646,7 @@ class UserrightsPage extends SpecialPage {
private function canRemove( $group ) {
// $this->changeableGroups()['remove'] doesn't work, of course. Thanks, PHP.
$groups = $this->changeableGroups();
return in_array( $group, $groups['remove'] ) || ( $this->isself && in_array( $group, $groups['remove-self'] ) );
}
@ -649,6 +656,7 @@ class UserrightsPage extends SpecialPage {
*/
private function canAdd( $group ) {
$groups = $this->changeableGroups();
return in_array( $group, $groups['add'] ) || ( $this->isself && in_array( $group, $groups['add-self'] ) );
}

View file

@ -255,6 +255,7 @@ class SpecialVersion extends SpecialPage {
}
wfProfileOut( __METHOD__ );
return $version;
}
@ -283,6 +284,7 @@ class SpecialVersion extends SpecialPage {
}
wfProfileOut( __METHOD__ );
return $v;
}
@ -323,6 +325,7 @@ class SpecialVersion extends SpecialPage {
preg_match( "/^(\d+\.\d+)/", $wgVersion, $versionParts );
$versionUrl = "https://www.mediawiki.org/wiki/MediaWiki_{$versionParts[1]}";
}
return "[$versionUrl $wgVersion]";
}
@ -396,6 +399,7 @@ class SpecialVersion extends SpecialPage {
*/
public static function getExtensionTypeName( $type ) {
$types = self::getExtensionTypes();
return isset( $types[$type] ) ? $types[$type] : $types['other'];
}
@ -469,7 +473,7 @@ class SpecialVersion extends SpecialPage {
)
);
array_walk( $tags, function( &$value ) {
array_walk( $tags, function ( &$value ) {
$value = '&lt;' . htmlentities( $value ) . '&gt;';
} );
$out .= $this->listToText( $tags );
@ -633,9 +637,9 @@ class SpecialVersion extends SpecialPage {
if ( $vcsDate ) {
$vcsTimeString = Html::element( 'span',
array( 'class' => 'mw-version-ext-vcs-timestamp' ),
$this->getLanguage()->timeanddate( $vcsDate )
);
array( 'class' => 'mw-version-ext-vcs-timestamp' ),
$this->getLanguage()->timeanddate( $vcsDate )
);
$versionString .= " {$vcsTimeString}";
}
$versionString = Html::rawElement( 'span',
@ -784,6 +788,7 @@ class SpecialVersion extends SpecialPage {
*/
private function IPInfo() {
$ip = str_replace( '--', ' - ', htmlspecialchars( $this->getRequest()->getIP() ) );
return "<!-- visited from $ip -->\n<span style='display:none'>visited from $ip</span>";
}
@ -824,13 +829,11 @@ class SpecialVersion extends SpecialPage {
$text = $this->msg( 'version-poweredby-others' )->text();
}
$list[] = $text;
} elseif ( substr( $item, -5 ) == ' ...]' ) {
$hasOthers = true;
$list[] = $this->getOutput()->parseInline(
substr( $item, 0, -4 ) . $this->msg( 'version-poweredby-others' )->text() . "]"
);
} else {
$list[] = $this->getOutput()->parseInline( $item );
}
@ -850,7 +853,7 @@ class SpecialVersion extends SpecialPage {
* Obtains the full path of an extensions authors or credits file if
* one exists.
*
* @param string $extDir: Path to the extensions root directory
* @param string $extDir Path to the extensions root directory
*
* @since 1.23
*
@ -879,7 +882,7 @@ class SpecialVersion extends SpecialPage {
* Obtains the full path of an extensions copying or license file if
* one exists.
*
* @param string $extDir: Path to the extensions root directory
* @param string $extDir Path to the extensions root directory
*
* @since 1.23
*
@ -924,6 +927,7 @@ class SpecialVersion extends SpecialPage {
if ( $sort ) {
sort( $list );
}
return $this->getLanguage()->listToText( array_map( array( __CLASS__, 'arrayToString' ), $list ) );
}
}
@ -942,6 +946,7 @@ class SpecialVersion extends SpecialPage {
}
if ( is_object( $list ) ) {
$class = wfMessage( 'parentheses' )->params( get_class( $list ) )->escaped();
return $class;
} elseif ( !is_array( $list ) ) {
return $list;
@ -951,6 +956,7 @@ class SpecialVersion extends SpecialPage {
} else {
$class = $list[0];
}
return wfMessage( 'parentheses' )->params( "$class, {$list[1]}" )->escaped();
}
}
@ -1063,6 +1069,7 @@ class SpecialVersion extends SpecialPage {
*/
public static function getGitHeadSha1( $dir ) {
$repo = new GitInfo( $dir );
return $repo->getHeadSHA1();
}
@ -1111,11 +1118,11 @@ class SpecialVersion extends SpecialPage {
}
$out .= Html::closeElement( 'table' );
return $out;
}
protected function getGroupName() {
return 'wiki';
}
}

View file

@ -38,9 +38,11 @@ class WantedCategoriesPage extends WantedQueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'categorylinks', 'page' ),
'fields' => array( 'namespace' => NS_CATEGORY,
'title' => 'cl_to',
'value' => 'COUNT(*)' ),
'fields' => array(
'namespace' => NS_CATEGORY,
'title' => 'cl_to',
'value' => 'COUNT(*)'
),
'conds' => array( 'page_title IS NULL' ),
'options' => array( 'GROUP BY' => 'cl_to' ),
'join_conds' => array( 'page' => array( 'LEFT JOIN',
@ -73,7 +75,7 @@ class WantedCategoriesPage extends WantedQueryPage {
__METHOD__
);
foreach ( $categoryRes as $row ) {
$this->currentCategoryCounts[ $row->cat_title ] = intval( $row->cat_pages );
$this->currentCategoryCounts[$row->cat_title] = intval( $row->cat_pages );
}
// Back to start for display
@ -104,8 +106,8 @@ class WantedCategoriesPage extends WantedQueryPage {
} else {
$plink = Linker::link( $nt, $text );
$currentValue = isset( $this->currentCategoryCounts[ $result->title ] )
? $this->currentCategoryCounts[ $result->title ]
$currentValue = isset( $this->currentCategoryCounts[$result->title] )
? $this->currentCategoryCounts[$result->title]
: 0;
// If the category has been created or emptied since the list was refreshed, strike it

View file

@ -75,9 +75,11 @@ class WantedFilesPage extends WantedQueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'imagelinks', 'image' ),
'fields' => array( 'namespace' => NS_FILE,
'title' => 'il_to',
'value' => 'COUNT(*)' ),
'fields' => array(
'namespace' => NS_FILE,
'title' => 'il_to',
'value' => 'COUNT(*)'
),
'conds' => array( 'img_name IS NULL' ),
'options' => array( 'GROUP BY' => 'il_to' ),
'join_conds' => array( 'image' =>

View file

@ -69,8 +69,7 @@ class WantedPagesPage extends WantedQueryPage {
),
'conds' => array(
'pg1.page_namespace IS NULL',
"pl_namespace NOT IN ( '" . NS_USER .
"', '" . NS_USER_TALK . "' )",
"pl_namespace NOT IN ( '" . NS_USER . "', '" . NS_USER_TALK . "' )",
"pg2.page_namespace != '" . NS_MEDIAWIKI . "'"
),
'options' => array(
@ -89,6 +88,7 @@ class WantedPagesPage extends WantedQueryPage {
);
// Replacement for the WantedPages::getSQL hook
wfRunHooks( 'WantedPages::getQueryInfo', array( &$this, &$query ) );
return $query;
}

View file

@ -40,16 +40,19 @@ class WantedTemplatesPage extends WantedQueryPage {
function getQueryInfo() {
return array(
'tables' => array( 'templatelinks', 'page' ),
'fields' => array( 'namespace' => 'tl_namespace',
'title' => 'tl_title',
'value' => 'COUNT(*)' ),
'conds' => array( 'page_title IS NULL',
'tl_namespace' => NS_TEMPLATE ),
'options' => array(
'GROUP BY' => array( 'tl_namespace', 'tl_title' ) ),
'fields' => array(
'namespace' => 'tl_namespace',
'title' => 'tl_title',
'value' => 'COUNT(*)'
),
'conds' => array(
'page_title IS NULL',
'tl_namespace' => NS_TEMPLATE
),
'options' => array( 'GROUP BY' => array( 'tl_namespace', 'tl_title' ) ),
'join_conds' => array( 'page' => array( 'LEFT JOIN',
array( 'page_namespace = tl_namespace',
'page_title = tl_title' ) ) )
array( 'page_namespace = tl_namespace',
'page_title = tl_title' ) ) )
);
}

View file

@ -58,6 +58,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
}
$output->redirect( $title->getLocalURL() );
return;
}
@ -66,11 +67,13 @@ class SpecialWatchlist extends ChangesListSpecialPage {
$user = $this->getUser();
$opts = $this->getOptions();
if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
$request->wasPosted() )
{
if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker )
&& $request->getVal( 'reset' )
&& $request->wasPosted()
) {
$user->clearAllNotifications();
$output->redirect( $this->getPageTitle()->getFullURL( $opts->getChangedValues() ) );
return;
}
@ -145,6 +148,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
// methods defined on WebRequest and removing this dependency would cause some code duplication.
$request = new DerivativeRequest( $this->getRequest(), $params );
$opts->fetchValuesFromRequest( $request );
return $opts;
}
@ -379,7 +383,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
if ( $opts['days'] > 0 ) {
$timestamp = wfTimestampNow();
$wlInfo = $this->msg( 'wlnote2' )->numParams( round( $opts['days'] * 24 ) )->params(
$lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) )->parse() . "<br />\n";
$lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user )
)->parse() . "<br />\n";
}
$nondefaults = $opts->getChangedValues();
@ -557,6 +562,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
foreach ( $days as $d ) {
$days[$i++] = $this->daysLink( $d, $options );
}
return $this->msg( 'wlshowlast' )->rawParams(
$this->getLanguage()->pipeList( $hours ),
$this->getLanguage()->pipeList( $days ),

View file

@ -79,6 +79,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
$this->target = Title::newFromURL( $opts->getValue( 'target' ) );
if ( !$this->target ) {
$out->addHTML( $this->whatlinkshereForm() );
return;
}
@ -158,7 +159,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
'rd_namespace' => $target->getNamespace(),
'rd_title' => $target->getDBkey(),
'rd_interwiki = ' . $dbr->addQuotes( '' ) . ' OR rd_interwiki IS NULL'
)));
) ) );
if ( $fetchlinks ) {
$options['ORDER BY'] = 'pl_from';
@ -197,6 +198,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
$out->addWikiMsg( $errMsg, $this->target->getPrefixedText() );
}
}
return;
}
@ -270,7 +272,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
$out->addHTML( $this->listEnd() );
if ( $level == 0 ) {
if( !$this->including() ){
if ( !$this->including() ) {
$out->addHTML( $prevnext );
}
}
@ -414,7 +416,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
# Target input
$f .= Xml::inputLabel( $this->msg( 'whatlinkshere-page' )->text(), 'target',
'mw-whatlinkshere-target', 40, $target );
'mw-whatlinkshere-target', 40, $target );
$f .= ' ';
@ -469,6 +471,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
$links[] = $this->msg( "whatlinkshere-{$type}" )->rawParams(
$this->makeSelfLink( $msg, array_merge( $changed, $overrides ) ) )->escaped();
}
return Xml::fieldset( $this->msg( 'whatlinkshere-filters' )->text(), $this->getLanguage()->pipeList( $links ) );
}

View file

@ -80,19 +80,23 @@ class WithoutInterwikiPage extends PageQueryPage {
function getQueryInfo() {
$query = array(
'tables' => array( 'page', 'langlinks' ),
'fields' => array( 'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title' ),
'conds' => array( 'll_title IS NULL',
'page_namespace' => MWNamespace::getContentNamespaces(),
'page_is_redirect' => 0 ),
'join_conds' => array( 'langlinks' => array(
'LEFT JOIN', 'll_from = page_id' ) )
'fields' => array(
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title'
),
'conds' => array(
'll_title IS NULL',
'page_namespace' => MWNamespace::getContentNamespaces(),
'page_is_redirect' => 0
),
'join_conds' => array( 'langlinks' => array( 'LEFT JOIN', 'll_from = page_id' ) )
);
if ( $this->prefix ) {
$dbr = wfGetDB( DB_SLAVE );
$query['conds'][] = 'page_title ' . $dbr->buildLike( $this->prefix, $dbr->anyString() );
}
return $query;
}