r23383 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r23382‎ | r23383 | r23384 >
Date:11:43, 25 June 2007
Author:robchurch
Status:old
Tags:
Comment:
Port 'most linked pages' and 'most linked templates'
Modified paths:
  • /branches/robchurch/reports/includes/AutoLoader.php (modified) (history)
  • /branches/robchurch/reports/includes/QueryPage.php (modified) (history)
  • /branches/robchurch/reports/includes/SpecialMostlinked.php (deleted) (history)
  • /branches/robchurch/reports/includes/SpecialMostlinkedtemplates.php (deleted) (history)
  • /branches/robchurch/reports/includes/SpecialPage.php (modified) (history)
  • /branches/robchurch/reports/includes/reports/MostLinkedPagesReport.php (added) (history)
  • /branches/robchurch/reports/includes/reports/MostUsedTemplatesReport.php (added) (history)
  • /branches/robchurch/reports/includes/reports/Report.php (modified) (history)
  • /branches/robchurch/reports/languages/messages/MessagesEn.php (modified) (history)
  • /branches/robchurch/reports/maintenance/language/messageTypes.inc (modified) (history)
  • /branches/robchurch/reports/maintenance/language/messages.inc (modified) (history)

Diff [purge]

Index: branches/robchurch/reports/maintenance/language/messages.inc
@@ -968,11 +968,11 @@
969969 'wantedpages',
970970 'wantedpages-header',
971971 'mostlinked',
972 - 'mostlinked-summary',
 972+ 'mostlinked-header',
973973 'largestcategories',
974974 'largestcategories-header',
975975 'mostlinkedtemplates',
976 - 'mostlinkedtemplates-summary',
 976+ 'mostlinkedtemplates-header',
977977 'mostcategories',
978978 'mostcategories-summary',
979979 'mostimages',
Index: branches/robchurch/reports/maintenance/language/messageTypes.inc
@@ -119,8 +119,6 @@
120120 'whatlinkshere-summary',
121121 'whatlinkshere-barrow',
122122 'imagelist-summary',
123 - 'mostlinked-summary',
124 - 'mostlinkedtemplates-summary',
125123 'mostcategories-summary',
126124 'mostimages-summary',
127125 'mostrevisions-summary',
Index: branches/robchurch/reports/includes/SpecialMostlinkedtemplates.php
@@ -1,132 +0,0 @@
2 -<?php
3 -
4 -/**
5 - * Special page lists templates with a large number of
6 - * transclusion links, i.e. "most used" templates
7 - *
8 - * @addtogroup SpecialPage
9 - * @author Rob Church <robchur@gmail.com>
10 - */
11 -class SpecialMostlinkedtemplates extends QueryPage {
12 -
13 - /**
14 - * Name of the report
15 - *
16 - * @return string
17 - */
18 - public function getName() {
19 - return 'Mostlinkedtemplates';
20 - }
21 -
22 - /**
23 - * Is this report expensive, i.e should it be cached?
24 - *
25 - * @return bool
26 - */
27 - public function isExpensive() {
28 - return true;
29 - }
30 -
31 - /**
32 - * Is there a feed available?
33 - *
34 - * @return bool
35 - */
36 - public function isSyndicated() {
37 - return false;
38 - }
39 -
40 - /**
41 - * Sort the results in descending order?
42 - *
43 - * @return bool
44 - */
45 - public function sortDescending() {
46 - return true;
47 - }
48 -
49 - /**
50 - * Generate SQL for the report
51 - *
52 - * @return string
53 - */
54 - public function getSql() {
55 - $dbr = wfGetDB( DB_SLAVE );
56 - $templatelinks = $dbr->tableName( 'templatelinks' );
57 - $name = $dbr->addQuotes( $this->getName() );
58 - return "SELECT {$name} AS type,
59 - " . NS_TEMPLATE . " AS namespace,
60 - tl_title AS title,
61 - COUNT(*) AS value
62 - FROM {$templatelinks}
63 - WHERE tl_namespace = " . NS_TEMPLATE . "
64 - GROUP BY 1, 2, 3";
65 - }
66 -
67 - /**
68 - * Pre-cache page existence to speed up link generation
69 - *
70 - * @param Database $dbr Database connection
71 - * @param int $res Result pointer
72 - */
73 - public function preprocessResults( $dbr, $res ) {
74 - $batch = new LinkBatch();
75 - while( $row = $dbr->fetchObject( $res ) ) {
76 - $title = Title::makeTitleSafe( $row->namespace, $row->title );
77 - $batch->addObj( $title );
78 - }
79 - $batch->execute();
80 - if( $dbr->numRows( $res ) > 0 )
81 - $dbr->dataSeek( $res, 0 );
82 - }
83 -
84 - /**
85 - * Format a result row
86 - *
87 - * @param Skin $skin Skin to use for UI elements
88 - * @param object $result Result row
89 - * @return string
90 - */
91 - public function formatResult( $skin, $result ) {
92 - $title = Title::makeTitleSafe( $result->namespace, $result->title );
93 - if( $title instanceof Title ) {
94 - return wfSpecialList(
95 - $skin->makeLinkObj( $title ),
96 - $this->makeWlhLink( $title, $skin, $result )
97 - );
98 - } else {
99 - $tsafe = htmlspecialchars( $result->title );
100 - return "Invalid title in result set; {$tsafe}";
101 - }
102 - }
103 -
104 - /**
105 - * Make a "what links here" link for a given title
106 - *
107 - * @param Title $title Title to make the link for
108 - * @param Skin $skin Skin to use
109 - * @param object $result Result row
110 - * @return string
111 - */
112 - private function makeWlhLink( $title, $skin, $result ) {
113 - global $wgLang;
114 - $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
115 - $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
116 - $wgLang->formatNum( $result->value ) );
117 - return $skin->makeKnownLinkObj( $wlh, $label, 'target=' . $title->getPrefixedUrl() );
118 - }
119 -
120 -}
121 -
122 -/**
123 - * Execution function
124 - *
125 - * @param mixed $par Parameters passed to the page
126 - */
127 -function wfSpecialMostlinkedtemplates( $par = false ) {
128 - list( $limit, $offset ) = wfCheckLimits();
129 - $mlt = new SpecialMostlinkedtemplates();
130 - $mlt->doQuery( $offset, $limit );
131 -}
132 -
133 -?>
\ No newline at end of file
Index: branches/robchurch/reports/includes/SpecialMostlinked.php
@@ -1,93 +0,0 @@
2 -<?php
3 -
4 -/**
5 - * A special page to show pages ordered by the number of pages linking to them.
6 - * Implements Special:Mostlinked
7 - *
8 - * @addtogroup SpecialPage
9 - *
10 - * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
11 - * @author Rob Church <robchur@gmail.com>
12 - * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
13 - * @copyright © 2006 Rob Church
14 - * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
15 - */
16 -class MostlinkedPage extends QueryPage {
17 -
18 - function getName() { return 'Mostlinked'; }
19 - function isExpensive() { return true; }
20 - function isSyndicated() { return false; }
21 -
22 - /**
23 - * Note: Getting page_namespace only works if $this->isCached() is false
24 - */
25 - function getSQL() {
26 - $dbr = wfGetDB( DB_SLAVE );
27 - list( $pagelinks, $page ) = $dbr->tableNamesN( 'pagelinks', 'page' );
28 - return
29 - "SELECT 'Mostlinked' AS type,
30 - pl_namespace AS namespace,
31 - pl_title AS title,
32 - COUNT(*) AS value,
33 - page_namespace
34 - FROM $pagelinks
35 - LEFT JOIN $page ON pl_namespace=page_namespace AND pl_title=page_title
36 - GROUP BY 1,2,3,5
37 - HAVING COUNT(*) > 1";
38 - }
39 -
40 - /**
41 - * Pre-fill the link cache
42 - */
43 - function preprocessResults( &$db, &$res ) {
44 - if( $db->numRows( $res ) > 0 ) {
45 - $linkBatch = new LinkBatch();
46 - while( $row = $db->fetchObject( $res ) )
47 - $linkBatch->addObj( Title::makeTitleSafe( $row->namespace, $row->title ) );
48 - $db->dataSeek( $res, 0 );
49 - $linkBatch->execute();
50 - }
51 - }
52 -
53 - /**
54 - * Make a link to "what links here" for the specified title
55 - *
56 - * @param $title Title being queried
57 - * @param $skin Skin to use
58 - * @return string
59 - */
60 - function makeWlhLink( &$title, $caption, &$skin ) {
61 - $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedDBkey() );
62 - return $skin->makeKnownLinkObj( $wlh, $caption );
63 - }
64 -
65 - /**
66 - * Make links to the page corresponding to the item, and the "what links here" page for it
67 - *
68 - * @param $skin Skin to be used
69 - * @param $result Result row
70 - * @return string
71 - */
72 - function formatResult( $skin, $result ) {
73 - global $wgLang;
74 - $title = Title::makeTitleSafe( $result->namespace, $result->title );
75 - $link = $skin->makeLinkObj( $title );
76 - $wlh = $this->makeWlhLink( $title,
77 - wfMsgExt( 'nlinks', array( 'parsemag', 'escape'),
78 - $wgLang->formatNum( $result->value ) ), $skin );
79 - return wfSpecialList( $link, $wlh );
80 - }
81 -}
82 -
83 -/**
84 - * constructor
85 - */
86 -function wfSpecialMostlinked() {
87 - list( $limit, $offset ) = wfCheckLimits();
88 -
89 - $wpp = new MostlinkedPage();
90 -
91 - $wpp->doQuery( $offset, $limit );
92 -}
93 -
94 -?>
Index: branches/robchurch/reports/includes/reports/Report.php
@@ -382,6 +382,8 @@
383383 'DoubleRedirectsReport',
384384 'LargestCategoriesReport',
385385 'LongPagesReport',
 386+ 'MostLinkedPagesReport',
 387+ 'MostUsedTemplatesReport',
386388 'OrphanedPagesReport',
387389 'PopularPagesReport',
388390 'RedirectReport',
Index: branches/robchurch/reports/includes/reports/MostUsedTemplatesReport.php
@@ -0,0 +1,167 @@
 2+<?php
 3+
 4+/**
 5+ * Report lists the most used templates
 6+ *
 7+ * @addtogroup Reports
 8+ * @author Rob Church <robchur@gmail.com>
 9+ */
 10+class MostUsedTemplatesReport extends Report {
 11+
 12+ /**
 13+ * Constructor
 14+ */
 15+ public function __construct() {
 16+ parent::__construct();
 17+ }
 18+
 19+ /**
 20+ * Get the name of the report
 21+ *
 22+ * @return string
 23+ */
 24+ public function getName() {
 25+ return 'Mostlinkedtemplates';
 26+ }
 27+
 28+ /**
 29+ * Is it appropriate to allow filtering redirects?
 30+ *
 31+ * @return bool
 32+ */
 33+ public function allowRedirectFilter() {
 34+ return false;
 35+ }
 36+
 37+ /**
 38+ * Is it appropriate to allow filtering namespaces?
 39+ *
 40+ * @return bool
 41+ */
 42+ public function allowNamespaceFilter() {
 43+ return false;
 44+ }
 45+
 46+ /**
 47+ * Get a list of namespaces this report can be run
 48+ * against - false indicates *all* namespaces
 49+ *
 50+ * @return mixed
 51+ */
 52+ public function getApplicableNamespaces() {
 53+ return array(
 54+ NS_TEMPLATE,
 55+ );
 56+ }
 57+
 58+ /**
 59+ * Return base SQL for the report
 60+ *
 61+ * @param Database $dbr Database object being queried
 62+ * @return string
 63+ */
 64+ public function getBaseSql( $dbr ) {
 65+ $templatelinks = $dbr->tableName( 'templatelinks' );
 66+ return
 67+ "SELECT
 68+ tl_title AS rp_id,
 69+ " . NS_TEMPLATE . " AS rp_namespace,
 70+ tl_title AS rp_title,
 71+ 0 AS rp_redirect,
 72+ COUNT(*) AS count
 73+ FROM {$templatelinks}";
 74+ }
 75+
 76+ /**
 77+ * Get the column used for paging when the report is run live
 78+ *
 79+ * @return string
 80+ */
 81+ public function getPagingColumn() {
 82+ return 'tl_title';
 83+ }
 84+
 85+ /**
 86+ * Get a partial WHERE clause to filter on namespace when
 87+ * the report is run live
 88+ *
 89+ * @param int $namespace Namespace to limit to
 90+ * @return string
 91+ */
 92+ public function getNamespaceClause( $namespace ) {
 93+ return "tl_namespace = {$namespace}";
 94+ }
 95+
 96+ /**
 97+ * Get additional SQL to be inserted between the
 98+ * conditions and ORDER clauses when the report is run live
 99+ *
 100+ * @param Database $dbr Database object being queried
 101+ * @return string
 102+ */
 103+ public function getExtraSql( $dbr ) {
 104+ return ' GROUP BY 1, 2, 3';
 105+ }
 106+
 107+ /**
 108+ * Get ORDER BY clauses to be applied when the
 109+ * report is run live
 110+ *
 111+ * @return array
 112+ */
 113+ public function getOrderingClauses() {
 114+ return array(
 115+ 'count DESC',
 116+ );
 117+ }
 118+
 119+ /**
 120+ * Given a result object, extract additional parameters
 121+ * as a dictionary for later use
 122+ *
 123+ * @param object $row Result row
 124+ * @return array
 125+ */
 126+ public function extractParameters( $row ) {
 127+ return array(
 128+ 'count' => $row->count,
 129+ );
 130+ }
 131+
 132+ /**
 133+ * Format an individual result row
 134+ *
 135+ * @param Title $title Result title
 136+ * @param object $row Result row
 137+ * @param array $params Result parameters
 138+ * @param Skin $skin User skin
 139+ * @return string
 140+ */
 141+ public function formatRow( $title, $row, $params, $skin ) {
 142+ global $wgLang;
 143+ $links = $this->makeLinksLink(
 144+ $title,
 145+ wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ), $params['count'] ),
 146+ $skin
 147+ );
 148+ return "<li>" . $skin->makeLinkObj( $title,
 149+ htmlspecialchars( $title->getText() ) ) . " ({$links})</li>\n";
 150+ }
 151+
 152+ /**
 153+ * Build a "what links here" link with the
 154+ * specified title as a target
 155+ *
 156+ * @param Title $target Title to show links to
 157+ * @param string $label Link label
 158+ * @param Skin $skin Skin to use
 159+ * @return string
 160+ */
 161+ private function makeLinksLink( $target, $label, $skin ) {
 162+ $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
 163+ return $skin->makeKnownLinkObj( $wlh, $label, 'target=' . $target->getPrefixedUrl() );
 164+ }
 165+
 166+}
 167+
 168+?>
\ No newline at end of file
Property changes on: branches/robchurch/reports/includes/reports/MostUsedTemplatesReport.php
___________________________________________________________________
Added: svn:eol-style
1169 + native
Index: branches/robchurch/reports/includes/reports/MostLinkedPagesReport.php
@@ -0,0 +1,174 @@
 2+<?php
 3+
 4+/**
 5+ * Report lists pages with the most incoming links
 6+ *
 7+ * @addtogroup Reports
 8+ * @author Rob Church <robchur@gmail.com>
 9+ */
 10+class MostLinkedPagesReport extends Report {
 11+
 12+ /**
 13+ * Constructor
 14+ */
 15+ public function __construct() {
 16+ parent::__construct();
 17+ }
 18+
 19+ /**
 20+ * Get the name of the report
 21+ *
 22+ * @return string
 23+ */
 24+ public function getName() {
 25+ return 'Mostlinked';
 26+ }
 27+
 28+ /**
 29+ * Is it appropriate to allow filtering namespaces?
 30+ *
 31+ * @return bool
 32+ */
 33+ public function allowNamespaceFilter() {
 34+ return true;
 35+ }
 36+
 37+ /**
 38+ * Get a list of namespaces this report can be run
 39+ * against - false indicates *all* namespaces
 40+ *
 41+ * @return mixed
 42+ */
 43+ public function getApplicableNamespaces() {
 44+ return array(
 45+ NS_MAIN,
 46+ ) + $GLOBALS['wgContentNamespaces'];
 47+ }
 48+
 49+ /**
 50+ * Return base SQL for the report
 51+ *
 52+ * @param Database $dbr Database object being queried
 53+ * @return string
 54+ */
 55+ public function getBaseSql( $dbr ) {
 56+ list( $page, $pagelinks ) = $dbr->tableNamesN( 'page', 'pagelinks' );
 57+ return
 58+ "SELECT
 59+ pl_title AS rp_id,
 60+ pl_namespace AS rp_namespace,
 61+ pl_title AS rp_title,
 62+ page_is_redirect AS rp_redirect,
 63+ COUNT(*) AS count
 64+ FROM {$pagelinks}
 65+ LEFT JOIN {$page} ON
 66+ pl_namespace = page_namespace
 67+ AND pl_title = page_title";
 68+ }
 69+
 70+ /**
 71+ * Return additional WHERE clauses and other conditions
 72+ * to which the paging clauses will be appened when
 73+ * the report runs live
 74+ *
 75+ * @param Database $dbr Database object being queried
 76+ * @return array
 77+ */
 78+ public function getExtraConditions( $dbr ) {
 79+ return array(
 80+ 'page_id > 0',
 81+ );
 82+ }
 83+
 84+ /**
 85+ * Get additional SQL to be inserted between the
 86+ * conditions and ORDER clauses when the report is run live
 87+ *
 88+ * @param Database $dbr Database object being queried
 89+ * @return string
 90+ */
 91+ public function getExtraSql( $dbr ) {
 92+ return ' GROUP BY 2, 3';
 93+ }
 94+
 95+ /**
 96+ * Get ORDER BY clauses to be applied when the
 97+ * report is run live
 98+ *
 99+ * @return array
 100+ */
 101+ public function getOrderingClauses() {
 102+ return array(
 103+ 'count DESC',
 104+ );
 105+ }
 106+
 107+ /**
 108+ * Get the column used for paging when the report is run live
 109+ *
 110+ * @return string
 111+ */
 112+ public function getPagingColumn() {
 113+ return 'pl_title';
 114+ }
 115+
 116+ /**
 117+ * Get a partial WHERE clause to filter on namespace when
 118+ * the report is run live
 119+ *
 120+ * @param int $namespace Namespace to limit to
 121+ * @return string
 122+ */
 123+ public function getNamespaceClause( $namespace ) {
 124+ return "pl_namespace = {$namespace}";
 125+ }
 126+
 127+ /**
 128+ * Given a result object, extract additional parameters
 129+ * as a dictionary for later use
 130+ *
 131+ * @param object $row Result row
 132+ * @return array
 133+ */
 134+ public function extractParameters( $row ) {
 135+ return array(
 136+ 'count' => $row->count,
 137+ );
 138+ }
 139+
 140+ /**
 141+ * Format an individual result row
 142+ *
 143+ * @param Title $title Result title
 144+ * @param object $row Result row
 145+ * @param array $params Result parameters
 146+ * @param Skin $skin User skin
 147+ * @return string
 148+ */
 149+ public function formatRow( $title, $row, $params, $skin ) {
 150+ global $wgLang;
 151+ $links = $this->makeLinksLink(
 152+ $title,
 153+ wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ), $params['count'] ),
 154+ $skin
 155+ );
 156+ return "<li>" . $skin->makeLinkObj( $title ) . " ({$links})</li>\n";
 157+ }
 158+
 159+ /**
 160+ * Build a "what links here" link with the
 161+ * specified title as a target
 162+ *
 163+ * @param Title $target Title to show links to
 164+ * @param string $label Link label
 165+ * @param Skin $skin Skin to use
 166+ * @return string
 167+ */
 168+ private function makeLinksLink( $target, $label, $skin ) {
 169+ $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
 170+ return $skin->makeKnownLinkObj( $wlh, $label, 'target=' . $target->getPrefixedUrl() );
 171+ }
 172+
 173+}
 174+
 175+?>
\ No newline at end of file
Property changes on: branches/robchurch/reports/includes/reports/MostLinkedPagesReport.php
___________________________________________________________________
Added: svn:eol-style
1176 + native
Index: branches/robchurch/reports/includes/AutoLoader.php
@@ -184,8 +184,6 @@
185185 'MIMEsearchPage' => 'includes/SpecialMIMEsearch.php',
186186 'MostcategoriesPage' => 'includes/SpecialMostcategories.php',
187187 'MostimagesPage' => 'includes/SpecialMostimages.php',
188 - 'MostlinkedPage' => 'includes/SpecialMostlinked.php',
189 - 'SpecialMostlinkedtemplates' => 'includes/SpecialMostlinkedtemplates.php',
190188 'MostrevisionsPage' => 'includes/SpecialMostrevisions.php',
191189 'FewestrevisionsPage' => 'includes/SpecialFewestrevisions.php',
192190 'MovePageForm' => 'includes/SpecialMovepage.php',
@@ -284,6 +282,8 @@
285283 'DoubleRedirectsReport' => 'includes/reports/DoubleRedirectsReport.php',
286284 'LargestCategoriesReport' => 'includes/reports/LargestCategoriesReport.php',
287285 'LongPagesReport' => 'includes/reports/LongPagesReport.php',
 286+ 'MostLinkedPagesReport' => 'includes/reports/MostLinkedPagesReport.php',
 287+ 'MostUsedTemplatesReport' => 'includes/reports/MostUsedTemplatesReport.php',
288288 'OrphanedPagesReport' => 'includes/reports/OrphanedPagesReport.php',
289289 'PopularPagesReport' => 'includes/reports/PopularPagesReport.php',
290290 'RedirectReport' => 'includes/reports/RedirectReport.php',
Index: branches/robchurch/reports/includes/QueryPage.php
@@ -17,8 +17,6 @@
1818 array( 'DisambiguationsPage', 'Disambiguations' ),
1919 array( 'MostcategoriesPage', 'Mostcategories' ),
2020 array( 'MostimagesPage', 'Mostimages' ),
21 - array( 'SpecialMostlinkedtemplates', 'Mostlinkedtemplates' ),
22 - array( 'MostlinkedPage', 'Mostlinked' ),
2321 array( 'MostrevisionsPage', 'Mostrevisions' ),
2422 array( 'FewestrevisionsPage', 'Fewestrevisions' ),
2523 array( 'UnusedCategoriesPage', 'Unusedcategories' ),
Index: branches/robchurch/reports/includes/SpecialPage.php
@@ -99,9 +99,9 @@
100100 'Unusedimages' => array( 'SpecialPage', 'Unusedimages' ),
101101 'Wantedpages' => 'WantedPagesReport',
102102 'Wantedcategories' => 'WantedCategoriesReport',
103 - 'Mostlinked' => array( 'SpecialPage', 'Mostlinked' ),
 103+ 'Mostlinked' => 'MostLinkedPagesReport',
104104 'Largestcategories' => 'LargestCategoriesReport',
105 - 'Mostlinkedtemplates' => array( 'SpecialPage', 'Mostlinkedtemplates' ),
 105+ 'Mostlinkedtemplates' => 'MostUsedTemplatesReport',
106106 'Mostcategories' => array( 'SpecialPage', 'Mostcategories' ),
107107 'Mostimages' => array( 'SpecialPage', 'Mostimages' ),
108108 'Mostrevisions' => array( 'SpecialPage', 'Mostrevisions' ),
Index: branches/robchurch/reports/languages/messages/MessagesEn.php
@@ -375,7 +375,7 @@
376376 'Wantedcategories' => array( 'Wantedcategories' ),
377377 'Mostlinked' => array( 'Mostlinked' ),
378378 'Largestcategories' => array( 'Largestcategories', 'Mostlinkedcategories' ),
379 - 'Mostlinkedtemplates' => array( 'Mostlinkedtemplates' ),
 379+ 'Mostlinkedtemplates' => array( 'Mostlinkedtemplates', 'Mostusedtemplates' ),
380380 'Mostcategories' => array( 'Mostcategories' ),
381381 'Mostimages' => array( 'Mostimages' ),
382382 'Mostrevisions' => array( 'Mostrevisions' ),
@@ -1576,12 +1576,12 @@
15771577 'wantedcategories-header' => 'This report lists categories which contain pages, but which don\'t have an associated description page.',
15781578 'wantedpages' => 'Wanted pages',
15791579 'wantedpages-header' => 'This report lists pages which don\'t exist, but have $1 or more incoming links.',
1580 -'mostlinked' => 'Most linked to pages',
1581 -'mostlinked-summary' => '', # only translate this message to other languages if you have to change it
 1580+'mostlinked' => 'Most linked-to pages',
 1581+'mostlinked-header' => 'This report lists pages with the most incoming links.',
15821582 'largestcategories' => 'Largest categories',
15831583 'largestcategories-header' => 'This report lists categories with the most members.',
1584 -'mostlinkedtemplates' => 'Most linked-to templates',
1585 -'mostlinkedtemplates-summary' => '', # only translate this message to other languages if you have to change it
 1584+'mostlinkedtemplates' => 'Most used templates',
 1585+'mostlinkedtemplates-header' => 'This report lists the most-used templates on the wiki.',
15861586 'mostcategories' => 'Articles with the most categories',
15871587 'mostcategories-summary' => '', # only translate this message to other languages if you have to change it
15881588 'mostimages' => 'Most linked to images',

Status & tagging log