00001 <?php
00016 class UnwatchedpagesPage extends QueryPage {
00017
00018 function getName() { return 'Unwatchedpages'; }
00019 function isExpensive() { return true; }
00020 function isSyndicated() { return false; }
00021
00022 function getSQL() {
00023 $dbr = wfGetDB( DB_SLAVE );
00024 list( $page, $watchlist ) = $dbr->tableNamesN( 'page', 'watchlist' );
00025 $mwns = NS_MEDIAWIKI;
00026 return
00027 "
00028 SELECT
00029 'Unwatchedpages' as type,
00030 page_namespace as namespace,
00031 page_title as title,
00032 page_namespace as value
00033 FROM $page
00034 LEFT JOIN $watchlist ON wl_namespace = page_namespace AND page_title = wl_title
00035 WHERE wl_title IS NULL AND page_is_redirect = 0 AND page_namespace<>$mwns
00036 ";
00037 }
00038
00039 function sortDescending() { return false; }
00040
00041 function formatResult( $skin, $result ) {
00042 global $wgContLang;
00043
00044 $nt = Title::makeTitle( $result->namespace, $result->title );
00045 $text = $wgContLang->convert( $nt->getPrefixedText() );
00046
00047 $plink = $skin->linkKnown(
00048 $nt,
00049 htmlspecialchars( $text )
00050 );
00051 $wlink = $skin->linkKnown(
00052 $nt,
00053 wfMsgHtml( 'watch' ),
00054 array(),
00055 array( 'action' => 'watch' )
00056 );
00057
00058 return wfSpecialList( $plink, $wlink );
00059 }
00060 }
00061
00065 function wfSpecialUnwatchedpages() {
00066 global $wgUser, $wgOut;
00067
00068 if ( ! $wgUser->isAllowed( 'unwatchedpages' ) )
00069 return $wgOut->permissionRequired( 'unwatchedpages' );
00070
00071 list( $limit, $offset ) = wfCheckLimits();
00072
00073 $wpp = new UnwatchedpagesPage();
00074
00075 $wpp->doQuery( $offset, $limit );
00076 }