From ee02ffd2537b0f5d41d6bc3b379c747337e4e29d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=86var=20Arnfj=C3=B6r=C3=B0=20Bjarmason?= Date: Fri, 21 Oct 2005 02:07:29 +0000 Subject: [PATCH] * A new special page to list wanted categories --- includes/QueryPage.php | 1 + includes/SpecialPage.php | 1 + includes/SpecialWantedcategories.php | 89 ++++++++++++++++++++++++++++ languages/Language.php | 1 + 4 files changed, 92 insertions(+) create mode 100644 includes/SpecialWantedcategories.php diff --git a/includes/QueryPage.php b/includes/QueryPage.php index 7dc4740a79..28ca360d54 100644 --- a/includes/QueryPage.php +++ b/includes/QueryPage.php @@ -35,6 +35,7 @@ $wgQueryPages = array( array( 'UncategorizedPagesPage', 'Uncategorizedpages' ), array( 'UnusedCategoriesPage', 'Unusedcategories' ), array( 'UnusedimagesPage', 'Unusedimages' ), + array( 'WantedCategoriesPage', 'Wantedcategories' ), array( 'WantedPagesPage', 'Wantedpages' ), ); wfRunHooks( 'wgQueryPages', array( &$wgQueryPages ) ); diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index 02709dea77..833dd92d6c 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -42,6 +42,7 @@ $wgSpecialPages = array( 'Unusedcategories' => new SpecialPage( 'Unusedcategories' ), 'Unusedimages' => new SpecialPage( 'Unusedimages' ), 'Wantedpages' => new IncludableSpecialPage( 'Wantedpages' ), + 'Wantedcategories' => new SpecialPage( 'Wantedcategories' ), 'Mostlinked' => new SpecialPage( 'Mostlinked' ), 'Mostcategories' => new SpecialPage( 'Mostcategories' ), 'Mostimages' => new SpecialPage( 'Mostimages' ), diff --git a/includes/SpecialWantedcategories.php b/includes/SpecialWantedcategories.php new file mode 100644 index 0000000000..a78fb08d17 --- /dev/null +++ b/includes/SpecialWantedcategories.php @@ -0,0 +1,89 @@ + + * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason + * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later + */ + +/* */ +require_once 'QueryPage.php'; + +/** + * @package MediaWiki + * @subpackage SpecialPage + */ +class WantedCategoriesPage extends QueryPage { + + function getName() { return 'Wantedcategories'; } + function isExpensive() { return true; } + function isSyndicated() { return false; } + + function getSQL() { + $dbr =& wfGetDB( DB_SLAVE ); + extract( $dbr->tableNames( 'categorylinks', 'page' ) ); + $name = $dbr->addQuotes( $this->getName() ); + return + " + SELECT + $name as type, + " . NS_CATEGORY . " as namespace, + cl_to as title, + COUNT(*) as value + FROM $categorylinks + LEFT JOIN $page ON cl_to = page_title + WHERE page_len IS NULL + GROUP BY cl_to + "; + } + + function sortDescending() { return true; } + + /** + * Fetch user page links and cache their existence + */ + function preprocessResults( &$db, &$res ) { + global $wgLinkCache; + + $batch = new LinkBatch; + while ( $row = $db->fetchObject( $res ) ) + $batch->addObj( Title::makeTitleSafe( NS_USER, $row->title ) ); + $batch->execute( $wgLinkCache ); + + // Back to start for display + if ( $db->numRows( $res ) > 0 ) + // If there are no rows we get an error seeking. + $db->dataSeek( $res, 0 ); + } + + function formatResult( $skin, $result ) { + global $wgContLang; + + $nt = Title::makeTitle( $result->namespace, $result->title ); + $text = $wgContLang->convert( $nt->getText() ); + + $plink = $this->isCached() ? + $skin->makeLinkObj( $nt, htmlspecialchars( $text ) ) : + $skin->makeBrokenLink( $nt->getText(), $text ); + + $nlinks = wfMsg( 'nlinks', $result->value ); + return "$plink ($nlinks)"; + } +} + +/** + * constructor + */ +function wfSpecialWantedCategories() { + list( $limit, $offset ) = wfCheckLimits(); + + $wpp = new WantedCategoriesPage(); + + $wpp->doQuery( $offset, $limit ); +} + +?> diff --git a/languages/Language.php b/languages/Language.php index 7900c3acf6..436488618f 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -1138,6 +1138,7 @@ That comes to '''$5''' average edits per page, and '''$6''' views per edit.", 'unusedimages' => 'Unused files', 'popularpages' => 'Popular pages', 'nviews' => '$1 views', +'wantedcategories' => 'Wanted categories', 'wantedpages' => 'Wanted pages', 'mostlinked' => 'Most linked to pages', 'mostcategories' => 'Most linked to categories', -- 2.20.1