* (bug 4298) Include rc_id on enhanced RC singleton diff links for patrolling
[lhc/web/wiklou.git] / includes / SpecialNewpages.php
index 3b24cc2..b388533 100644 (file)
@@ -16,6 +16,11 @@ require_once( 'QueryPage.php' );
  * @subpackage SpecialPage
  */
 class NewPagesPage extends QueryPage {
+       var $namespace;
+       
+       function NewPagesPage( $namespace = NS_MAIN ) {
+               $this->namespace = $namespace;
+       }
 
        function getName() {
                return 'Newpages';
@@ -24,7 +29,6 @@ class NewPagesPage extends QueryPage {
        function isExpensive() {
                # Indexed on RC, and will *not* work with querycache yet.
                return false;
-               #return parent::isExpensive();
        }
 
        function getSQL() {
@@ -39,11 +43,12 @@ class NewPagesPage extends QueryPage {
                        "SELECT 'Newpages' as type,
                                rc_namespace AS namespace,
                                rc_title AS title,
-                               rc_cur_id AS value,
+                               rc_cur_id AS cur_id,
                                rc_user AS user,
                                rc_user_text AS user_text,
                                rc_comment as comment,
                                rc_timestamp AS timestamp,
+                                rc_timestamp AS value,
                                '{$usepatrol}' as usepatrol,
                                rc_patrolled AS patrolled,
                                rc_id AS rcid,
@@ -51,7 +56,7 @@ class NewPagesPage extends QueryPage {
                                page_latest as rev_id
                        FROM $recentchanges,$page
                        WHERE rc_cur_id=page_id AND rc_new=1
-                         AND rc_namespace=".NS_MAIN." AND page_is_redirect=0";
+                       AND rc_namespace=" . $this->namespace . " AND page_is_redirect=0";
        }
 
        function formatResult( $skin, $result ) {
@@ -74,12 +79,13 @@ class NewPagesPage extends QueryPage {
 
                # Since there is no diff link, we need to give users a way to
                # mark the article as patrolled if it isn't already
+               $ns = $wgContLang->getNsText( $result->namespace );
                if ( $wgUseRCPatrol && !is_null ( $result->usepatrol ) && $result->usepatrol &&
                     $result->patrolled == 0 && $wgUser->isLoggedIn() &&
                     ( $wgUser->isAllowed('patrol') || !$wgOnlySysopsCanPatrol ) )
-                       $link = $skin->makeKnownLink( $result->title, '', "rcid={$result->rcid}" );
+                       $link = $skin->makeKnownLink( $ns . ':' . $result->title, '', "rcid={$result->rcid}" );
                else
-                       $link = $skin->makeKnownLink( $result->title, '' );
+                       $link = $skin->makeKnownLink( $ns . ':' . $result->title, '' );
 
                $s = "{$d} {$link} ({$length}) . . {$ul}";
 
@@ -103,35 +109,39 @@ class NewPagesPage extends QueryPage {
 /**
  * constructor
  */
-function wfSpecialNewpages($par, $specialPage)
-{
-       global $wgRequest;
+function wfSpecialNewpages($par, $specialPage) {
+       global $wgRequest, $wgContLang;
+       
        list( $limit, $offset ) = wfCheckLimits();
-       if( $par ) {
+       $namespace = NS_MAIN;
+       
+       if ( $par ) {
                $bits = preg_split( '/\s*,\s*/', trim( $par ) );
                foreach ( $bits as $bit ) {
-                       if ( 'shownav' == $bit ) $shownavigation = 1;
-                       if ( is_numeric( $bit ) ) {
+                       if ( 'shownav' == $bit )
+                               $shownavigation = true;
+                       if ( is_numeric( $bit ) )
                                $limit = $bit;
-                       }
 
-                       if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) {
+                       if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) )
                                $limit = intval($m[1]);
-                       }
-                       if ( preg_match( '/^offset=(\d+)$/', $bit, $m ) ) {
+                       if ( preg_match( '/^offset=(\d+)$/', $bit, $m ) )
                                $offset = intval($m[1]);
+                       if ( preg_match( '/^namespace=(.*)$/', $bit, $m ) ) {
+                               $ns = $wgContLang->getNsIndex( $m[1] );
+                               if( $ns !== false ) {
+                                       $namespace = $ns;
+                               }
                        }
                }
        }
-       if(!isset($shownavigation)) {
-               $shownavigation=!$specialPage->including();
-       }
+       if ( ! isset( $shownavigation ) )
+               $shownavigation = ! $specialPage->including();
 
-       $npp = new NewPagesPage();
+       $npp = new NewPagesPage( $namespace );
 
-       if( !$npp->doFeed( $wgRequest->getVal( 'feed' ) ) ) {
+       if ( ! $npp->doFeed( $wgRequest->getVal( 'feed' ) ) )
                $npp->doQuery( $offset, $limit, $shownavigation );
-       }
 }
 
 ?>