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->makeKnownLinkObj( $nt, htmlspecialchars( $text ) );
00048 $wlink = $skin->makeKnownLinkObj( $nt, wfMsgHtml( 'watch' ), 'action=watch' );
00049
00050 return wfSpecialList( $plink, $wlink );
00051 }
00052 }
00053
00057 function wfSpecialUnwatchedpages() {
00058 global $wgUser, $wgOut;
00059
00060 if ( ! $wgUser->isAllowed( 'unwatchedpages' ) )
00061 return $wgOut->permissionRequired( 'unwatchedpages' );
00062
00063 list( $limit, $offset ) = wfCheckLimits();
00064
00065 $wpp = new UnwatchedpagesPage();
00066
00067 $wpp->doQuery( $offset, $limit );
00068 }