00001 <?php
00019 class MostlinkedPage extends QueryPage {
00020
00021 function getName() { return 'Mostlinked'; }
00022 function isExpensive() { return true; }
00023 function isSyndicated() { return false; }
00024
00028 function getSQL() {
00029 $dbr = wfGetDB( DB_SLAVE );
00030 list( $pagelinks, $page ) = $dbr->tableNamesN( 'pagelinks', 'page' );
00031 return
00032 "SELECT 'Mostlinked' AS type,
00033 pl_namespace AS namespace,
00034 pl_title AS title,
00035 COUNT(*) AS value,
00036 page_namespace
00037 FROM $pagelinks
00038 LEFT JOIN $page ON pl_namespace=page_namespace AND pl_title=page_title
00039 GROUP BY pl_namespace, pl_title, page_namespace
00040 HAVING COUNT(*) > 1";
00041 }
00042
00046 function preprocessResults( $db, $res ) {
00047 if( $db->numRows( $res ) > 0 ) {
00048 $linkBatch = new LinkBatch();
00049 while( $row = $db->fetchObject( $res ) )
00050 $linkBatch->add( $row->namespace, $row->title );
00051 $db->dataSeek( $res, 0 );
00052 $linkBatch->execute();
00053 }
00054 }
00055
00063 function makeWlhLink( &$title, $caption, &$skin ) {
00064 $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedDBkey() );
00065 return $skin->makeKnownLinkObj( $wlh, $caption );
00066 }
00067
00075 function formatResult( $skin, $result ) {
00076 global $wgLang;
00077 $title = Title::makeTitleSafe( $result->namespace, $result->title );
00078 $link = $skin->makeLinkObj( $title );
00079 $wlh = $this->makeWlhLink( $title,
00080 wfMsgExt( 'nlinks', array( 'parsemag', 'escape'),
00081 $wgLang->formatNum( $result->value ) ), $skin );
00082 return wfSpecialList( $link, $wlh );
00083 }
00084 }
00085
00089 function wfSpecialMostlinked() {
00090 list( $limit, $offset ) = wfCheckLimits();
00091
00092 $wpp = new MostlinkedPage();
00093
00094 $wpp->doQuery( $offset, $limit );
00095 }