New special page, Special:Protectedpages, which shows all protected pages and their...
authorAndrew Garrett <werdna@users.mediawiki.org>
Mon, 22 Jan 2007 05:01:37 +0000 (05:01 +0000)
committerAndrew Garrett <werdna@users.mediawiki.org>
Mon, 22 Jan 2007 05:01:37 +0000 (05:01 +0000)
includes/SpecialPage.php
includes/SpecialProtectedpages.php [new file with mode: 0644]
languages/messages/MessagesEn.php

index 37e9a8d..ce57a5b 100644 (file)
@@ -107,6 +107,7 @@ class SpecialPage
                'Newpages'                  => array( 'IncludableSpecialPage', 'Newpages' ),
                'Ancientpages'              => array( 'SpecialPage', 'Ancientpages' ),
                'Deadendpages'              => array( 'SpecialPage', 'Deadendpages' ),
+               'Protectedpages'            => array( 'SpecialPage', 'Protectedpages' ),
                'Allpages'                  => array( 'IncludableSpecialPage', 'Allpages' ),
                'Prefixindex'               => array( 'IncludableSpecialPage', 'Prefixindex' ) ,
                'Ipblocklist'               => array( 'SpecialPage', 'Ipblocklist' ),
diff --git a/includes/SpecialProtectedpages.php b/includes/SpecialProtectedpages.php
new file mode 100644 (file)
index 0000000..a3674c0
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+/**
+ *
+ * @addtogroup SpecialPage
+ */
+
+/**
+ *
+ * @addtogroup SpecialPage
+ */
+class ProtectedPagesPage extends PageQueryPage {
+
+       function getName( ) {
+               return "Protectedpages";
+       }
+
+       function getPageHeader() {
+               return '<p>' . wfMsg('protectedpagestext') . '</p>';
+       }
+
+       /**
+        * LEFT JOIN is expensive
+        *
+        * @return true
+        */
+       function isExpensive( ) {
+               return 1;
+       }
+
+       function isSyndicated() { return false; }
+
+       /**
+        * @return false
+        */
+       function sortDescending() {
+               return false;
+       }
+
+    /**
+        * @return string an sqlquery
+        */
+       function getSQL() {
+               $dbr =& wfGetDB( DB_SLAVE );
+               list( $page, $page_restrictions ) = $dbr->tableNamesN( 'page', 'page_restrictions' );
+               return "SELECT DISTINCT page_id, 'Protectedpages' as type, page_namespace AS namespace, page_title as title, " .
+                       "page_title AS value, pr_level " .
+                       "FROM $page LEFT JOIN $page_restrictions ON page_id = pr_page WHERE pr_level IS NOT NULL ";
+    }
+
+       /**
+        * Make link to the page, and add the protection levels.
+        *
+        * @param $skin Skin to be used
+        * @param $result Result row
+        * @return string
+        */
+       function formatResult( $skin, $result ) {
+               global $wgLang;
+               $title = Title::makeTitleSafe( $result->namespace, $result->title );
+               $link = $skin->makeLinkObj( $title );
+
+               $protType = wfMsg( 'restriction-level-' . $result->pr_level );
+
+               return wfSpecialList( $link, $protType );
+       }
+}
+
+/**
+ * Constructor
+ */
+function wfSpecialProtectedpages() {
+
+    list( $limit, $offset ) = wfCheckLimits();
+
+    $depp = new ProtectedPagesPage();
+
+    return $depp->doQuery( $offset, $limit );
+}
+
+?>
index 9e18d0e..4f8b70d 100644 (file)
@@ -378,6 +378,7 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Newpages' ),
        'Ancientpages'              => array( 'Ancientpages' ),
        'Deadendpages'              => array( 'Deadendpages' ),
+       'Protectedpages'            => array( 'Protectedpages' ),
        'Allpages'                  => array( 'Allpages' ),
        'Prefixindex'               => array( 'Prefixindex' ) ,
        'Ipblocklist'               => array( 'Ipblocklist' ),
@@ -1515,6 +1516,9 @@ The [http://meta.wikimedia.org/wiki/Help:Job_queue job queue] length is '''$7'''
 'deadendpages'  => 'Dead-end pages',
 'deadendpages-summary' => '',
 'deadendpagestext'     => 'The following pages do not link to other pages in this wiki.',
+'protectedpages' => 'Protected pages',
+'protectedpages-summary' => '',
+'protectedpagestext' => 'The following pages are protected from moving or editing',
 'listusers'            => 'User list',
 'listusers-summary'    => '',
 'specialpages' => 'Special pages',
@@ -1761,6 +1765,10 @@ page protection levels. Here are the current settings for the page <strong>$1</s
 'restriction-edit' => 'Edit',
 'restriction-move' => 'Move',
 
+# restriction levels
+'restriction-level-sysop' => 'full protected',
+'restriction-level-autoconfirmed' => 'semi protected',
+
 
 # Undelete
 'undelete' => 'View deleted pages',