* A new specialpage to list pages not watched by anyone
authorÆvar Arnfjörð Bjarmason <avar@users.mediawiki.org>
Thu, 22 Sep 2005 18:16:48 +0000 (18:16 +0000)
committerÆvar Arnfjörð Bjarmason <avar@users.mediawiki.org>
Thu, 22 Sep 2005 18:16:48 +0000 (18:16 +0000)
includes/DefaultSettings.php
includes/SpecialPage.php
includes/SpecialUnwatchedpages.php [new file with mode: 0644]
languages/Language.php

index 11fa324..6648142 100644 (file)
@@ -1318,6 +1318,13 @@ $wgUseSiteCss = true;
 /** Filter for Special:Randompage. Part of a WHERE clause */
 $wgExtraRandompageSQL = false;
 
+/**
+ * Enable the Special:Unwatchedpages special page, turned off by default  since
+ * most would consider this privelaged information as it could be used as a
+ * list of pages to vandalize.
+ */
+$wgEnableUnwatchedpages = false;
+
 /** Allow the "info" action, very inefficient at the moment */
 $wgAllowPageInfo = false;
 
index 9133f8e..b379a60 100644 (file)
@@ -71,6 +71,7 @@ $wgSpecialPages = array(
        'Unlockdb'              => new SpecialPage( 'Unlockdb', 'siteadmin' ),
        'Userrights'    => new SpecialPage( 'Userrights', 'userrights' ),
        'MIMEsearch'    => new SpecialPage( 'MIMEsearch' ),
+       'Unwatchedpages' => new SpecialPage( 'Unwatchedpages' )
 );
 
 if ( $wgUseValidation )
@@ -88,6 +89,9 @@ if( $wgEmailAuthentication ) {
        $wgSpecialPages['Confirmemail'] = new UnlistedSpecialPage( 'Confirmemail' );
 }
 
+if ( $wgEnableUnwatchedpages )
+        $wgSpecialPages['Unwatchedpages'] = new SpecialPage( 'Unwatchedpages' );
+
 /**
  * Parent special page class, also static functions for handling the special
  * page list
diff --git a/includes/SpecialUnwatchedpages.php b/includes/SpecialUnwatchedpages.php
new file mode 100644 (file)
index 0000000..f34df4f
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+ * A special page that displays a list of pages that are not on anyones watchlist
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @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 UnwatchedpagesPage extends QueryPage {
+
+       function getName() { return 'Unwatchedpages'; }
+       function isExpensive() { return true; }
+       function isSyndicated() { return false; }
+
+       function getSQL() {
+               $dbr =& wfGetDB( DB_SLAVE );
+               extract( $dbr->tableNames( 'page', 'watchlist' ) );
+               return
+                       "
+                       SELECT
+                               'Unwatchedpages' as type,
+                               page_namespace as namespace,
+                               page_title as title,
+                               page_namespace as value
+                       FROM $page
+                       LEFT JOIN $watchlist ON wl_namespace = page_namespace AND page_title = wl_title
+                       WHERE wl_title IS NULL
+                       ";
+       }
+       
+       function sortDescending() { return false; }
+
+       function formatResult( $skin, $result ) {
+               global $wgContLang;
+
+               $nt = Title::makeTitle( $result->namespace, $result->title );
+               $text = $wgContLang->convert( $nt->getPrefixedText() );
+               
+               $plink = $skin->makeKnownLink( $nt->getPrefixedText(), htmlspecialchars( $text ) );
+               
+               return $plink;
+       }
+}
+
+/**
+ * constructor
+ */
+function wfSpecialUnwatchedpages() {
+       list( $limit, $offset ) = wfCheckLimits();
+
+       $wpp = new UnwatchedpagesPage();
+
+       $wpp->doQuery( $offset, $limit );
+}
+
+?>
index c7dd029..84be38c 100644 (file)
@@ -1076,6 +1076,10 @@ this old version, (rev) = revert to this old version.
 'mimetype' => 'MIME type: ',
 'download' => 'download',
 
+# Unwatchedpages
+#
+'unwatchedpages' => 'Unwatched pages',
+
 # Statistics
 #
 'statistics'   => 'Statistics',