Tidy up the class
[mediawiki.git] / includes / specials / SpecialMostlinkedtemplates.php
blob71a6b5396ab6b261f4cd95ae5fdae30c9395c7ed
1 <?php
2 /**
3 * @file
4 * @ingroup SpecialPage
5 */
7 /**
8 * Special page lists templates with a large number of
9 * transclusion links, i.e. "most used" templates
11 * @ingroup SpecialPage
12 * @author Rob Church <robchur@gmail.com>
14 class SpecialMostlinkedtemplates extends QueryPage {
16 /**
17 * Name of the report
19 * @return String
21 public function getName() {
22 return 'Mostlinkedtemplates';
25 /**
26 * Is this report expensive, i.e should it be cached?
28 * @return Boolean
30 public function isExpensive() {
31 return true;
34 /**
35 * Is there a feed available?
37 * @return Boolean
39 public function isSyndicated() {
40 return false;
43 /**
44 * Sort the results in descending order?
46 * @return Boolean
48 public function sortDescending() {
49 return true;
52 /**
53 * Generate SQL for the report
55 * @return String
57 public function getSql() {
58 $dbr = wfGetDB( DB_SLAVE );
59 $templatelinks = $dbr->tableName( 'templatelinks' );
60 $name = $dbr->addQuotes( $this->getName() );
61 return "SELECT {$name} AS type,
62 " . NS_TEMPLATE . " AS namespace,
63 tl_title AS title,
64 COUNT(*) AS value
65 FROM {$templatelinks}
66 WHERE tl_namespace = " . NS_TEMPLATE . "
67 GROUP BY tl_title";
70 /**
71 * Pre-cache page existence to speed up link generation
73 * @param $db Database connection
74 * @param $res ResultWrapper
76 public function preprocessResults( $db, $res ) {
77 $batch = new LinkBatch();
78 while( $row = $db->fetchObject( $res ) ) {
79 $batch->add( $row->namespace, $row->title );
81 $batch->execute();
82 if( $db->numRows( $res ) > 0 )
83 $db->dataSeek( $res, 0 );
86 /**
87 * Format a result row
89 * @param $skin Skin to use for UI elements
90 * @param $result Result row
91 * @return String
93 public function formatResult( $skin, $result ) {
94 $title = Title::makeTitleSafe( $result->namespace, $result->title );
96 return wfSpecialList(
97 $skin->link( $title ),
98 $this->makeWlhLink( $title, $skin, $result )
103 * Make a "what links here" link for a given title
105 * @param $title Title to make the link for
106 * @param $skin Skin to use
107 * @param $result Result row
108 * @return String
110 private function makeWlhLink( $title, $skin, $result ) {
111 global $wgLang;
112 $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
113 $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
114 $wgLang->formatNum( $result->value ) );
115 return $skin->link( $wlh, $label, array(), array( 'target' => $title->getPrefixedText() ) );
120 * Execution function
122 * @param $par Mixed: parameters passed to the page
124 function wfSpecialMostlinkedtemplates( $par = false ) {
125 list( $limit, $offset ) = wfCheckLimits();
126 $mlt = new SpecialMostlinkedtemplates();
127 $mlt->doQuery( $offset, $limit );