diff options
Diffstat (limited to 'includes/SpecialShortpages.php')
-rw-r--r-- | includes/SpecialShortpages.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/includes/SpecialShortpages.php b/includes/SpecialShortpages.php new file mode 100644 index 00000000..d8e13c7b --- /dev/null +++ b/includes/SpecialShortpages.php @@ -0,0 +1,91 @@ +<?php +/** + * + * @package MediaWiki + * @subpackage SpecialPage + */ + +/** + * SpecialShortpages extends QueryPage. It is used to return the shortest + * pages in the database. + * @package MediaWiki + * @subpackage SpecialPage + */ +class ShortPagesPage extends QueryPage { + + function getName() { + return "Shortpages"; + } + + /** + * This query is indexed as of 1.5 + */ + function isExpensive() { + return true; + } + + function isSyndicated() { + return false; + } + + function getSQL() { + $dbr =& wfGetDB( DB_SLAVE ); + $page = $dbr->tableName( 'page' ); + $name = $dbr->addQuotes( $this->getName() ); + + $forceindex = $dbr->useIndexClause("page_len"); + return + "SELECT $name as type, + page_namespace as namespace, + page_title as title, + page_len AS value + FROM $page $forceindex + WHERE page_namespace=".NS_MAIN." AND page_is_redirect=0"; + } + + function preprocessResults( &$dbo, $res ) { + # There's no point doing a batch check if we aren't caching results; + # the page must exist for it to have been pulled out of the table + if( $this->isCached() ) { + $batch = new LinkBatch(); + while( $row = $dbo->fetchObject( $res ) ) + $batch->addObj( Title::makeTitleSafe( $row->namespace, $row->title ) ); + $batch->execute(); + if( $dbo->numRows( $res ) > 0 ) + $dbo->dataSeek( $res, 0 ); + } + } + + function sortDescending() { + return false; + } + + function formatResult( $skin, $result ) { + global $wgLang, $wgContLang; + $dm = $wgContLang->getDirMark(); + + $title = Title::makeTitleSafe( $result->namespace, $result->title ); + $hlink = $skin->makeKnownLinkObj( $title, wfMsgHtml( 'hist' ), 'action=history' ); + $plink = $this->isCached() + ? $skin->makeLinkObj( $title ) + : $skin->makeKnownLinkObj( $title ); + $size = wfMsgHtml( 'nbytes', $wgLang->formatNum( htmlspecialchars( $result->value ) ) ); + + return $title->exists() + ? "({$hlink}) {$dm}{$plink} {$dm}[{$size}]" + : "<s>({$hlink}) {$dm}{$plink} {$dm}[{$size}]</s>"; + } +} + +/** + * constructor + */ +function wfSpecialShortpages() { + list( $limit, $offset ) = wfCheckLimits(); + + $spp = new ShortPagesPage(); + + return $spp->doQuery( $offset, $limit ); +} + +?> |