From ffa3518ed54bf1240195af6ec72e2e0a66a1e54e Mon Sep 17 00:00:00 2001 From: Kevin Israel Date: Mon, 2 Jun 2014 23:02:29 -0400 Subject: [PATCH] Move QueryPage and abstract subclasses to specialpage folder ... now that f508561f7bde ("Moved $wgQueryPages stuff out of the global scope and into a function") has been merged, which eliminated hardcoding of the pathname except in the AutoLoader. WantedQueryPage is moved to a separate file. Bug: 60445 Change-Id: If2019492722083819b82afa6302670b94b181098 --- includes/AutoLoader.php | 8 +- includes/{ => specialpage}/ImageQueryPage.php | 0 includes/{ => specialpage}/PageQueryPage.php | 0 includes/{ => specialpage}/QueryPage.php | 94 -------------- includes/specialpage/WantedQueryPage.php | 117 ++++++++++++++++++ maintenance/updateSpecialPages.php | 4 +- 6 files changed, 123 insertions(+), 100 deletions(-) rename includes/{ => specialpage}/ImageQueryPage.php (100%) rename includes/{ => specialpage}/PageQueryPage.php (100%) rename includes/{ => specialpage}/QueryPage.php (90%) create mode 100644 includes/specialpage/WantedQueryPage.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 3ac4722e27..bf3f42eb0e 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -110,7 +110,6 @@ $wgAutoloadLocalClasses = array( 'ICacheHelper' => 'includes/CacheHelper.php', 'IcuCollation' => 'includes/Collation.php', 'IdentityCollation' => 'includes/Collation.php', - 'ImageQueryPage' => 'includes/ImageQueryPage.php', 'ImportStreamSource' => 'includes/Import.php', 'ImportStringSource' => 'includes/Import.php', 'IndexPager' => 'includes/Pager.php', @@ -140,7 +139,6 @@ $wgAutoloadLocalClasses = array( 'MWInit' => 'includes/Init.php', 'MWNamespace' => 'includes/Namespace.php', 'OutputPage' => 'includes/OutputPage.php', - 'PageQueryPage' => 'includes/PageQueryPage.php', 'Pager' => 'includes/Pager.php', 'PasswordError' => 'includes/User.php', 'PathRouter' => 'includes/PathRouter.php', @@ -156,7 +154,6 @@ $wgAutoloadLocalClasses = array( 'PreferencesForm' => 'includes/Preferences.php', 'PrefixSearch' => 'includes/PrefixSearch.php', 'ProtectionForm' => 'includes/ProtectionForm.php', - 'QueryPage' => 'includes/QueryPage.php', 'QuickTemplate' => 'includes/SkinTemplate.php', 'RawMessage' => 'includes/Message.php', 'ReverseChronologicalPager' => 'includes/Pager.php', @@ -196,7 +193,6 @@ $wgAutoloadLocalClasses = array( 'UserCache' => 'includes/cache/UserCache.php', 'UserMailer' => 'includes/UserMailer.php', 'UserRightsProxy' => 'includes/UserRightsProxy.php', - 'WantedQueryPage' => 'includes/QueryPage.php', 'WatchedItem' => 'includes/WatchedItem.php', 'WebRequest' => 'includes/WebRequest.php', 'WebRequestUpload' => 'includes/WebRequest.php', @@ -927,13 +923,17 @@ $wgAutoloadLocalClasses = array( # includes/specialpage 'ChangesListSpecialPage' => 'includes/specialpage/ChangesListSpecialPage.php', 'FormSpecialPage' => 'includes/specialpage/FormSpecialPage.php', + 'ImageQueryPage' => 'includes/specialpage/ImageQueryPage.php', 'IncludableSpecialPage' => 'includes/specialpage/IncludableSpecialPage.php', + 'PageQueryPage' => 'includes/specialpage/PageQueryPage.php', + 'QueryPage' => 'includes/specialpage/QueryPage.php', 'RedirectSpecialArticle' => 'includes/specialpage/RedirectSpecialPage.php', 'RedirectSpecialPage' => 'includes/specialpage/RedirectSpecialPage.php', 'SpecialPage' => 'includes/specialpage/SpecialPage.php', 'SpecialPageFactory' => 'includes/specialpage/SpecialPageFactory.php', 'SpecialRedirectToSpecial' => 'includes/specialpage/RedirectSpecialPage.php', 'UnlistedSpecialPage' => 'includes/specialpage/UnlistedSpecialPage.php', + 'WantedQueryPage' => 'includes/specialpage/WantedQueryPage.php', # includes/specials 'ActiveUsersPager' => 'includes/specials/SpecialActiveusers.php', diff --git a/includes/ImageQueryPage.php b/includes/specialpage/ImageQueryPage.php similarity index 100% rename from includes/ImageQueryPage.php rename to includes/specialpage/ImageQueryPage.php diff --git a/includes/PageQueryPage.php b/includes/specialpage/PageQueryPage.php similarity index 100% rename from includes/PageQueryPage.php rename to includes/specialpage/PageQueryPage.php diff --git a/includes/QueryPage.php b/includes/specialpage/QueryPage.php similarity index 90% rename from includes/QueryPage.php rename to includes/specialpage/QueryPage.php index 82dea0d96f..3a83d2bad8 100644 --- a/includes/QueryPage.php +++ b/includes/specialpage/QueryPage.php @@ -759,97 +759,3 @@ abstract class QueryPage extends SpecialPage { return $this->getPageTitle()->getFullURL(); } } - -/** - * Class definition for a wanted query page like - * WantedPages, WantedTemplates, etc - */ -abstract class WantedQueryPage extends QueryPage { - function isExpensive() { - return true; - } - - function isSyndicated() { - return false; - } - - /** - * Cache page existence for performance - * @param DatabaseBase $db - * @param ResultWrapper $res - */ - function preprocessResults( $db, $res ) { - if ( !$res->numRows() ) { - return; - } - - $batch = new LinkBatch; - foreach ( $res as $row ) { - $batch->add( $row->namespace, $row->title ); - } - $batch->execute(); - - // Back to start for display - $res->seek( 0 ); - } - - /** - * Should formatResult() always check page existence, even if - * the results are fresh? This is a (hopefully temporary) - * kluge for Special:WantedFiles, which may contain false - * positives for files that exist e.g. in a shared repo (bug - * 6220). - * @return bool - */ - function forceExistenceCheck() { - return false; - } - - /** - * Format an individual result - * - * @param Skin $skin Skin to use for UI elements - * @param object $result Result row - * @return string - */ - public function formatResult( $skin, $result ) { - $title = Title::makeTitleSafe( $result->namespace, $result->title ); - if ( $title instanceof Title ) { - if ( $this->isCached() || $this->forceExistenceCheck() ) { - $pageLink = $title->isKnown() - ? '' . Linker::link( $title ) . '' - : Linker::link( - $title, - null, - array(), - array(), - array( 'broken' ) - ); - } else { - $pageLink = Linker::link( - $title, - null, - array(), - array(), - array( 'broken' ) - ); - } - return $this->getLanguage()->specialList( $pageLink, $this->makeWlhLink( $title, $result ) ); - } else { - return $this->msg( 'wantedpages-badtitle', $result->title )->escaped(); - } - } - - /** - * Make a "what links here" link for a given title - * - * @param Title $title Title to make the link for - * @param object $result Result row - * @return string - */ - private function makeWlhLink( $title, $result ) { - $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() ); - $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped(); - return Linker::link( $wlh, $label ); - } -} diff --git a/includes/specialpage/WantedQueryPage.php b/includes/specialpage/WantedQueryPage.php new file mode 100644 index 0000000000..678c803d19 --- /dev/null +++ b/includes/specialpage/WantedQueryPage.php @@ -0,0 +1,117 @@ +numRows() ) { + return; + } + + $batch = new LinkBatch; + foreach ( $res as $row ) { + $batch->add( $row->namespace, $row->title ); + } + $batch->execute(); + + // Back to start for display + $res->seek( 0 ); + } + + /** + * Should formatResult() always check page existence, even if + * the results are fresh? This is a (hopefully temporary) + * kluge for Special:WantedFiles, which may contain false + * positives for files that exist e.g. in a shared repo (bug + * 6220). + * @return bool + */ + function forceExistenceCheck() { + return false; + } + + /** + * Format an individual result + * + * @param Skin $skin Skin to use for UI elements + * @param object $result Result row + * @return string + */ + public function formatResult( $skin, $result ) { + $title = Title::makeTitleSafe( $result->namespace, $result->title ); + if ( $title instanceof Title ) { + if ( $this->isCached() || $this->forceExistenceCheck() ) { + $pageLink = $title->isKnown() + ? '' . Linker::link( $title ) . '' + : Linker::link( + $title, + null, + array(), + array(), + array( 'broken' ) + ); + } else { + $pageLink = Linker::link( + $title, + null, + array(), + array(), + array( 'broken' ) + ); + } + return $this->getLanguage()->specialList( $pageLink, $this->makeWlhLink( $title, $result ) ); + } else { + return $this->msg( 'wantedpages-badtitle', $result->title )->escaped(); + } + } + + /** + * Make a "what links here" link for a given title + * + * @param Title $title Title to make the link for + * @param object $result Result row + * @return string + */ + private function makeWlhLink( $title, $result ) { + $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() ); + $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped(); + return Linker::link( $wlh, $label ); + } +} diff --git a/maintenance/updateSpecialPages.php b/maintenance/updateSpecialPages.php index fae9063c00..61642828c9 100644 --- a/maintenance/updateSpecialPages.php +++ b/maintenance/updateSpecialPages.php @@ -34,8 +34,8 @@ class UpdateSpecialPages extends Maintenance { parent::__construct(); $this->addOption( 'list', 'List special page names' ); $this->addOption( 'only', 'Only update "page"; case sensitive, ' . - 'check correct case by calling this script with --list or on ' . - 'includes/QueryPage.php. Ex: --only=BrokenRedirects', false, true ); + 'check correct case by calling this script with --list. ' . + 'Ex: --only=BrokenRedirects', false, true ); $this->addOption( 'override', 'Also update pages that have updates disabled' ); } -- 2.20.1