diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
commit | 183851b06bd6c52f3cae5375f433da720d410447 (patch) | |
tree | a477257decbf3360127f6739c2f9d0ec57a03d39 /includes/SpecialWantedcategories.php |
MediaWiki 1.7.1 wiederhergestellt
Diffstat (limited to 'includes/SpecialWantedcategories.php')
-rw-r--r-- | includes/SpecialWantedcategories.php | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/includes/SpecialWantedcategories.php b/includes/SpecialWantedcategories.php new file mode 100644 index 00000000..8e75953a --- /dev/null +++ b/includes/SpecialWantedcategories.php @@ -0,0 +1,85 @@ +<?php +/** + * A querypage to list the most wanted categories + * + * @package MediaWiki + * @subpackage SpecialPage + * + * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> + * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason + * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later + */ + +/** + * @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 AND page_namespace = ". NS_CATEGORY ." + WHERE page_title IS NULL + GROUP BY cl_to + "; + } + + function sortDescending() { return true; } + + /** + * Fetch user page links and cache their existence + */ + function preprocessResults( &$db, &$res ) { + $batch = new LinkBatch; + while ( $row = $db->fetchObject( $res ) ) + $batch->addObj( Title::makeTitleSafe( $row->namespace, $row->title ) ); + $batch->execute(); + + // 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 $wgLang, $wgContLang; + + $nt = Title::makeTitle( $result->namespace, $result->title ); + $text = $wgContLang->convert( $nt->getText() ); + + $plink = $this->isCached() ? + $skin->makeLinkObj( $nt, htmlspecialchars( $text ) ) : + $skin->makeBrokenLinkObj( $nt, htmlspecialchars( $text ) ); + + $nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape'), + $wgLang->formatNum( $result->value ) ); + return wfSpecialList($plink, $nlinks); + } +} + +/** + * constructor + */ +function wfSpecialWantedCategories() { + list( $limit, $offset ) = wfCheckLimits(); + + $wpp = new WantedCategoriesPage(); + + $wpp->doQuery( $offset, $limit ); +} + +?> |