* Three new special pages:
authorÆvar Arnfjörð Bjarmason <avar@users.mediawiki.org>
Sat, 8 Oct 2005 21:20:18 +0000 (21:20 +0000)
committerÆvar Arnfjörð Bjarmason <avar@users.mediawiki.org>
Sat, 8 Oct 2005 21:20:18 +0000 (21:20 +0000)
  - A special page to display the articles with the most revisions
  - A special page to display the articles with the most categories
  - A special page to display the articles with the most images

includes/SpecialMostcategories.php [new file with mode: 0644]
includes/SpecialMostimages.php [new file with mode: 0644]
includes/SpecialMostrevisions.php [new file with mode: 0644]
languages/Language.php

diff --git a/includes/SpecialMostcategories.php b/includes/SpecialMostcategories.php
new file mode 100644 (file)
index 0000000..d532f88
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+/* */
+require_once 'QueryPage.php';
+
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+class MostcategoriesPage extends QueryPage {
+
+       function getName() { return 'Mostcategories'; }
+       function isExpensive() { return true; }
+       function isSyndicated() { return false; }
+
+       function getSQL() {
+               $dbr =& wfGetDB( DB_SLAVE );
+               extract( $dbr->tableNames( 'categorylinks', 'page' ) );
+               return
+                       "
+                       SELECT
+                               'Mostcategories' as type,
+                               page_namespace as namespace,
+                               page_title as title,
+                               COUNT(*) as value
+                       FROM $categorylinks
+                       LEFT JOIN $page ON cl_from = page_id
+                       WHERE page_namespace = " . NS_MAIN . "
+                       GROUP BY cl_from
+                       HAVING COUNT(*) > 1
+                       ";
+       }
+
+       function formatResult( $skin, $result ) {
+               global $wgContLang;
+
+               $nt = Title::makeTitle( $result->namespace, $result->title );
+               $text = $wgContLang->convert( $nt->getPrefixedText() );
+               
+               $plink = $skin->makeKnownLink( $nt->getPrefixedText(), $text );
+               
+               $nl = wfMsg( 'ncategories', $result->value );
+               $nlink = $skin->makeKnownLink( $wgContLang->specialPage( 'Categories' ), $nl, 'article=' . $nt->getPrefixedURL() );
+
+               return "{$plink} ({$nlink})";
+       }
+}
+
+/**
+ * constructor
+ */
+function wfSpecialMostcategories() {
+       list( $limit, $offset ) = wfCheckLimits();
+
+       $wpp = new MostcategoriesPage();
+
+       $wpp->doQuery( $offset, $limit );
+}
+
+?>
diff --git a/includes/SpecialMostimages.php b/includes/SpecialMostimages.php
new file mode 100644 (file)
index 0000000..c9946c0
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+/* */
+require_once 'QueryPage.php';
+
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+class MostimagesPage extends QueryPage {
+
+       function getName() { return 'Mostimages'; }
+       function isExpensive() { return true; }
+       function isSyndicated() { return false; }
+
+       function getSQL() {
+               $dbr =& wfGetDB( DB_SLAVE );
+               extract( $dbr->tableNames( 'imagelinks' ) );
+               return
+                       "
+                       SELECT
+                               'Mostimages' as type,
+                               " . NS_IMAGE . " as namespace,
+                               il_to as title,
+                               COUNT(*) as value
+                       FROM $imagelinks
+                       GROUP BY il_to
+                       HAVING COUNT(*) > 1
+                       ";
+       }
+
+       function formatResult( $skin, $result ) {
+               global $wgContLang;
+
+               $nt = Title::makeTitle( $result->namespace, $result->title );
+               $text = $wgContLang->convert( $nt->getPrefixedText() );
+               
+               $plink = $skin->makeKnownLink( $nt->getPrefixedText(), $text );
+               
+               $nl = wfMsg( 'nlinks', $result->value );
+               $nlink = $skin->makeKnownLink( $nt->getPrefixedText() . '#filelinks', $nl );
+
+               return "{$plink} ({$nlink})";
+       }
+}
+
+/**
+ * Constructor
+ */
+function wfSpecialMostimages() {
+       list( $limit, $offset ) = wfCheckLimits();
+
+       $wpp = new MostimagesPage();
+
+       $wpp->doQuery( $offset, $limit );
+}
+
+?>
diff --git a/includes/SpecialMostrevisions.php b/includes/SpecialMostrevisions.php
new file mode 100644 (file)
index 0000000..893d7d4
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * A special page to show pages in the 
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+/* */
+require_once 'QueryPage.php';
+
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+class MostrevisionsPage extends QueryPage {
+
+       function getName() { return 'Mostrevisions'; }
+       function isExpensive() { return true; }
+       function isSyndicated() { return false; }
+
+       function getSQL() {
+               $dbr =& wfGetDB( DB_SLAVE );
+               extract( $dbr->tableNames( 'revision', 'page' ) );
+               return
+                       "
+                       SELECT
+                               'Mostrevisions' as type,
+                               page_namespace as namespace,
+                               page_title as title,
+                               COUNT(*) as value
+                       FROM $revision
+                       LEFT JOIN $page ON page_id = rev_page
+                       WHERE page_namespace = " . NS_MAIN . "
+                       GROUP BY rev_page
+                       HAVING COUNT(*) > 1
+                       ";
+       }
+
+       function formatResult( $skin, $result ) {
+               global $wgContLang;
+
+               $nt = Title::makeTitle( $result->namespace, $result->title );
+               $text = $wgContLang->convert( $nt->getPrefixedText() );
+               
+               $plink = $skin->makeKnownLink( $nt->getPrefixedText(), $text );
+               
+               $nl = wfMsg( 'nrevisions', $result->value );
+               $nlink = $skin->makeKnownLinkObj( $nt, $nl, 'action=history' );
+
+               return "{$plink} ({$nlink})";
+       }
+}
+
+/**
+ * constructor
+ */
+function wfSpecialMostrevisions() {
+       list( $limit, $offset ) = wfCheckLimits();
+
+       $wpp = new MostrevisionsPage();
+
+       $wpp->doQuery( $offset, $limit );
+}
+
+?>
index a3aa0c8..683fc0b 100644 (file)
@@ -1137,6 +1137,9 @@ That comes to '''$5''' average edits per page, and '''$6''' views per edit.",
 'nviews'               => '$1 views',
 'wantedpages'  => 'Wanted pages',
 'mostlinked'   => 'Most linked to pages',
+'mostcategories' => 'Most linked to categories',
+'mostimages'   => 'Most linked to images',
+'mostrevisions' => 'Articles with the most revisions',
 'nlinks'               => '$1 links',
 'allpages'             => 'All pages',
 'prefixindex'   => 'Prefix index',