Index: SpecialNewpages.php =================================================================== --- SpecialNewpages.php (revision 26372) +++ SpecialNewpages.php (working copy) @@ -12,10 +12,18 @@ var $namespace; var $username = ''; + var $hidebots = false; + var $hidemine = false; + var $hidepatrolled = false; + var $hideregistered = false; - function NewPagesPage( $namespace = NS_MAIN, $username = '' ) { + function NewPagesPage( $namespace = NS_MAIN, $username = '', $hidebots = false, $hidemine = false, $hidepatrolled = false, $hideregistered = false ) { $this->namespace = $namespace; $this->username = $username; + $this->hidebots = $hidebots; + $this->hidemine = $hidemine; + $this->hidepatrolled = $hidepatrolled; + $this->hideregistered = $hideregistered; } function getName() { @@ -41,6 +49,35 @@ ? ' AND rc_namespace = ' . intval( $this->namespace ) : ''; } + + private function makeHidebotsWhere() { + return $this->hidebots + ? ' AND rc_bot = 0' + : ''; + } + + private function makeHidemineWhere( &$dbo ) { + if (!$this->hidemine) return ''; + global $wgUser; + $uid = $wgUser->getID(); + if( $uid ) + return 'AND rc_user <> ' . $uid; + else + return 'AND rc_user_text <> ' . $dbo->addQuotes( $wgUser->getName() ); + } + + private function makeHidepatrolledWhere() { + global $wgUseRCPatrol; + return $this->hidepatrolled && $wgUseRCPatrol + ? ' AND rc_patrolled = 0' + : ''; + } + + private function makeHideregisteredWhere() { + return $this->hideregistered + ? ' AND rc_user = 0' + : ''; + } function getSQL() { global $wgUser, $wgUseRCPatrol; @@ -50,6 +87,10 @@ $nsfilter = $this->makeNamespaceWhere(); $uwhere = $this->makeUserWhere( $dbr ); + $hidebots = $this->makeHidebotsWhere(); + $hidemine = $this->makeHidemineWhere( $dbr ); + $hidepatrolled = $this->makeHidepatrolledWhere(); + $hideregistered = $this->makeHideregisteredWhere(); # FIXME: text will break with compression return @@ -71,7 +112,8 @@ WHERE rc_cur_id=page_id AND rc_new=1 {$nsfilter} AND page_is_redirect = 0 - {$uwhere}"; + {$uwhere} {$hidebots} {$hidemine} + {$hidepatrolled} {$hideregistered}"; } function preprocessResults( &$dbo, &$res ) { @@ -138,7 +180,7 @@ * @return string */ function getPageHeader() { - global $wgScript, $wgContLang; + global $wgScript, $wgContLang, $wgUseRCPatrol; $align = $wgContLang->isRTL() ? 'left' : 'right'; $self = SpecialPage::getTitleFor( $this->getName() ); $form = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . @@ -162,6 +204,35 @@