From f8bdc491b012cc8ca000c209a690154c03ac9294 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=86var=20Arnfj=C3=B6r=C3=B0=20Bjarmason?= Date: Thu, 22 Sep 2005 18:16:48 +0000 Subject: [PATCH] * A new specialpage to list pages not watched by anyone --- includes/DefaultSettings.php | 7 ++++ includes/SpecialPage.php | 4 ++ includes/SpecialUnwatchedpages.php | 66 ++++++++++++++++++++++++++++++ languages/Language.php | 4 ++ 4 files changed, 81 insertions(+) create mode 100644 includes/SpecialUnwatchedpages.php diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 11fa324fb6..6648142c2b 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -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; diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index 9133f8e5b7..b379a608cc 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -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 index 0000000000..f34df4f77f --- /dev/null +++ b/includes/SpecialUnwatchedpages.php @@ -0,0 +1,66 @@ + + * @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 ); +} + +?> diff --git a/languages/Language.php b/languages/Language.php index c7dd029fa5..84be38c2a7 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -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', -- 2.20.1