X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialDisambiguations.php;h=48180a77234f9a73236f7b121fea1c94b8184b1a;hb=18cfd4bb3892d6596020500fee2aafd3e0211fa5;hp=a5ab3e69f9d4b1d517996ed2c56bad1cc30aae63;hpb=78a8aa828e335593003a0caa1c743eca2050ec64;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialDisambiguations.php b/includes/specials/SpecialDisambiguations.php index a5ab3e69f9..48180a7723 100644 --- a/includes/specials/SpecialDisambiguations.php +++ b/includes/specials/SpecialDisambiguations.php @@ -32,21 +32,29 @@ class DisambiguationsPage extends QueryPage { parent::__construct( $name ); } - function isExpensive() { return true; } - function isSyndicated() { return false; } + function isExpensive() { + return true; + } + + function isSyndicated() { + return false; + } function getPageHeader() { return $this->msg( 'disambiguations-text' )->parseAsBlock(); } - function getQueryInfo() { + /** + * @return string|bool False on failure + */ + function getQueryFromLinkBatch() { $dbr = wfGetDB( DB_SLAVE ); $dMsgText = $this->msg( 'disambiguationspage' )->inContentLanguage()->text(); $linkBatch = new LinkBatch; # If the text can be treated as a title, use it verbatim. # Otherwise, pull the titles from the links table - $dp = Title::newFromText($dMsgText); + $dp = Title::newFromText( $dMsgText ); if( $dp ) { if( $dp->getNamespace() != NS_TEMPLATE ) { # @todo FIXME: We assume the disambiguation message is a template but @@ -71,25 +79,38 @@ class DisambiguationsPage extends QueryPage { } } $set = $linkBatch->constructSet( 'tl', $dbr ); + if( $set === false ) { # We must always return a valid SQL query, but this way # the DB will always quickly return an empty result $set = 'FALSE'; - wfDebug("Mediawiki:disambiguationspage message does not link to any templates!\n"); + wfDebug( "Mediawiki:disambiguationspage message does not link to any templates!\n" ); } + return $set; + } + function getQueryInfo() { // @todo FIXME: What are pagelinks and p2 doing here? return array ( - 'tables' => array( 'templatelinks', 'p1' => 'page', 'pagelinks', 'p2' => 'page' ), - 'fields' => array( 'p1.page_namespace AS namespace', - 'p1.page_title AS title', - 'pl_from AS value' ), - 'conds' => array( $set, - 'p1.page_id = tl_from', - 'pl_namespace = p1.page_namespace', - 'pl_title = p1.page_title', - 'p2.page_id = pl_from', - 'p2.page_namespace' => MWNamespace::getContentNamespaces() ) + 'tables' => array( + 'templatelinks', + 'p1' => 'page', + 'pagelinks', + 'p2' => 'page' + ), + 'fields' => array( + 'namespace' => 'p1.page_namespace', + 'title' => 'p1.page_title', + 'value' => 'pl_from' + ), + 'conds' => array( + $this->getQueryFromLinkBatch(), + 'p1.page_id = tl_from', + 'pl_namespace = p1.page_namespace', + 'pl_title = p1.page_title', + 'p2.page_id = pl_from', + 'p2.page_namespace' => MWNamespace::getContentNamespaces() + ) ); } @@ -126,10 +147,14 @@ class DisambiguationsPage extends QueryPage { $dp = Title::makeTitle( $result->namespace, $result->title ); $from = Linker::link( $title ); - $edit = Linker::link( $title, $this->msg( 'parentheses', $this->msg( 'editlink' )->text() )->escaped(), - array(), array( 'redirect' => 'no', 'action' => 'edit' ) ); - $arr = $this->getLanguage()->getArrow(); - $to = Linker::link( $dp ); + $edit = Linker::link( + $title, + $this->msg( 'parentheses', $this->msg( 'editlink' )->text() )->escaped(), + array(), + array( 'redirect' => 'no', 'action' => 'edit' ) + ); + $arr = $this->getLanguage()->getArrow(); + $to = Linker::link( $dp ); return "$from $edit $arr $to"; }