https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114848

Revision: 114848
Author:   bsitu
Date:     2012-04-11 18:14:33 +0000 (Wed, 11 Apr 2012)
Log Message:
-----------
adding support for autopatroling

Modified Paths:
--------------
    trunk/extensions/PageTriage/PageTriage.hooks.php
    trunk/extensions/PageTriage/includes/PageTriage.php

Modified: trunk/extensions/PageTriage/PageTriage.hooks.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.hooks.php    2012-04-11 17:21:54 UTC 
(rev 114847)
+++ trunk/extensions/PageTriage/PageTriage.hooks.php    2012-04-11 18:14:33 UTC 
(rev 114848)
@@ -15,7 +15,7 @@
                $pageId = $newTitle->getArticleID();
 
                if ( $newTitle->getNamespace() === NS_MAIN ) {
-                       self::addToPageTriageQueue( $pageId );
+                       self::addToPageTriageQueue( $pageId, $newTitle );
                }
 
                $acp = ArticleCompileProcessor::newFromPageId( array( $pageId ) 
);
@@ -40,7 +40,7 @@
        public static function onNewRevisionFromEditComplete( $article, $rev, 
$baseID, $user ) {
                $prev = $rev->getPrevious();
                if ( $prev && !$article->isRedirect() && $article->isRedirect( 
$prev->getRawText() ) ) {
-                       self::addToPageTriageQueue( $article->getId() );        
+                       self::addToPageTriageQueue( $article->getId(), 
$article->mTitle, $user );       
                }
                return true;
        }
@@ -61,7 +61,7 @@
         * @return bool
         */
        public static function onArticleInsertComplete( $article, $user, $text, 
$summary, $isMinor, $isWatch, $section, $flags, $revision ) {
-               self::addToPageTriageQueue( $article->getId() );        
+               self::addToPageTriageQueue( $article->getId(), 
$article->mTitle, $user );       
 
                return true;
        }
@@ -111,9 +111,23 @@
        /**
         * Add page to page triage queue
         */
-       private static function addToPageTriageQueue( $pageId ) {
+       private static function addToPageTriageQueue( $pageId, $title, $user = 
null ) {
+               global $wgUser, $wgUseRCPatrol, $wgUseNPPatrol;
+               
+               $user = is_null( $user ) ? $wgUser : $user;
+
+               $patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && !count(
+                                       $title->getUserPermissionsErrors( 
'autopatrol', $user ) );
+
                $pageTriage = new PageTriage( $pageId );
-               $pageTriage->addToPageTriageQueue();
+               // Without autopatrol right, we consider the system updates the 
triage status to '0' or adds a brand new
+               // record with '0' triage status to the queue, hence we should 
not pass a user for logging
+               if ( $patrolled ) {
+                       $pageTriage->addToPageTriageQueue( '1', $user );        
+               } else {
+                       $pageTriage->addToPageTriageQueue( '0' );
+               }
+               
        }
 
        /**
@@ -195,9 +209,7 @@
 
                if ( $rc ) {
                        $pt = new PageTriage( $rc->getAttribute( 'rc_cur_id' ) 
);
-                       if ( $pt->addToPageTriageQueue() ) {
-                               $pt->setTriageStatus( '1', $user, true );       
-                       }
+                       $pt->addToPageTriageQueue( '1', $user, true );
                }
 
                return true;

Modified: trunk/extensions/PageTriage/includes/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-11 17:21:54 UTC 
(rev 114847)
+++ trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-11 18:14:33 UTC 
(rev 114848)
@@ -22,12 +22,15 @@
 
        /**
         * Add page to page triage queue
+        * @param $reviewed string '1'/'0'
+        * @param $user User
+        * @param $fromRc bool
         * @return bool
         */
-       public function addToPageTriageQueue() {
+       public function addToPageTriageQueue( $reviewed = '0', User $user = 
null, $fromRc = false ) {
                if ( $this->retrieve() ) {
-                       if ( $this->mReviewed ) {
-                               $this->setTriageStatus( '0' );
+                       if ( $this->mReviewed != $reviewed ) {
+                               $this->setTriageStatus( $reviewed, $user, 
$fromRc );
                        }
                        return true;
                }
@@ -49,12 +52,18 @@
 
                $row = array(
                        'ptrp_page_id' => $this->mPageId,
-                       'ptrp_reviewed' => '0',
+                       'ptrp_reviewed' => $reviewed,
                        'ptrp_timestamp' => $res->creation_date
                );
                
                $dbw->insert( 'pagetriage_page', $row, __METHOD__, array( 
'IGNORE' ) );
 
+               $this->mReviewed = $reviewed;
+
+               if ( !is_null( $user ) && !$user->isAnon() ) {
+                       $this->logUserTriageAction( $user );
+               }
+               
                return true;
        }
        
@@ -95,7 +104,7 @@
                        $this->logUserTriageAction( $user );
                }
                $dbw->commit();
-               // flush the cache so cached triage status is updated
+               // flush the cache so triage status is updated
                $articleMetadata = new ArticleMetadata( array( $this->mPageId ) 
);
                $articleMetadata->flushMetadataFromCache();
        }


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to