Fixed some doxygen warnings
[lhc/web/wiklou.git] / includes / specials / SpecialMostlinkedtemplates.php
1 <?php
2 /**
3 * @file
4 * @ingroup SpecialPage
5 */
6
7 /**
8 * Special page lists templates with a large number of
9 * transclusion links, i.e. "most used" templates
10 *
11 * @ingroup SpecialPage
12 * @author Rob Church <robchur@gmail.com>
13 */
14 class SpecialMostlinkedtemplates extends QueryPage {
15
16 /**
17 * Name of the report
18 *
19 * @return String
20 */
21 public function getName() {
22 return 'Mostlinkedtemplates';
23 }
24
25 /**
26 * Is this report expensive, i.e should it be cached?
27 *
28 * @return Boolean
29 */
30 public function isExpensive() {
31 return true;
32 }
33
34 /**
35 * Is there a feed available?
36 *
37 * @return Boolean
38 */
39 public function isSyndicated() {
40 return false;
41 }
42
43 /**
44 * Sort the results in descending order?
45 *
46 * @return Boolean
47 */
48 public function sortDescending() {
49 return true;
50 }
51
52 /**
53 * Generate SQL for the report
54 *
55 * @return String
56 */
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";
68 }
69
70 /**
71 * Pre-cache page existence to speed up link generation
72 *
73 * @param $db Database connection
74 * @param $res ResultWrapper
75 */
76 public function preprocessResults( $db, $res ) {
77 $batch = new LinkBatch();
78 while( $row = $db->fetchObject( $res ) ) {
79 $batch->add( $row->namespace, $row->title );
80 }
81 $batch->execute();
82 if( $db->numRows( $res ) > 0 )
83 $db->dataSeek( $res, 0 );
84 }
85
86 /**
87 * Format a result row
88 *
89 * @param $skin Skin to use for UI elements
90 * @param $result Result row
91 * @return String
92 */
93 public function formatResult( $skin, $result ) {
94 $title = Title::makeTitleSafe( $result->namespace, $result->title );
95
96 return wfSpecialList(
97 $skin->link( $title ),
98 $this->makeWlhLink( $title, $skin, $result )
99 );
100 }
101
102 /**
103 * Make a "what links here" link for a given title
104 *
105 * @param $title Title to make the link for
106 * @param $skin Skin to use
107 * @param $result Result row
108 * @return String
109 */
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() ) );
116 }
117 }
118
119 /**
120 * Execution function
121 *
122 * @param $par Mixed: parameters passed to the page
123 */
124 function wfSpecialMostlinkedtemplates( $par = false ) {
125 list( $limit, $offset ) = wfCheckLimits();
126 $mlt = new SpecialMostlinkedtemplates();
127 $mlt->doQuery( $offset, $limit );
128 }