(bug 17104) Remove [Mark as patrolled] link for already patrolled revisions
authorAaron Schulz <aaron@users.mediawiki.org>
Sat, 24 Jan 2009 22:50:28 +0000 (22:50 +0000)
committerAaron Schulz <aaron@users.mediawiki.org>
Sat, 24 Jan 2009 22:50:28 +0000 (22:50 +0000)
includes/Article.php
includes/diff/DifferenceEngine.php

index 6b2c497..f37538d 100644 (file)
@@ -974,9 +974,15 @@ class Article {
                # Only diffs and new page links from RC give rcid params, so if
                # we are just viewing the page normally with no rcid, try to find it. 
                # This is more convenient for users.
-               if( empty($rcid) && $this->mTitle->exists() && $this->mTitle->userCan('patrol') ) {
-                       $firstRev = $this->mTitle->getFirstRevision();
-                       $rcid = $firstRev ? $firstRev->isUnpatrolled() : 0;
+               if( $this->mTitle->exists() && $this->mTitle->userCan('patrol') ) {
+                       if( empty($rcid) ) {
+                               $firstRev = $this->mTitle->getFirstRevision();
+                               $rcid = $firstRev ? $firstRev->isUnpatrolled() : 0;
+                       } else {
+                               $rc = RecentChange::newFromId( $rcid );
+                               // Already patrolled?
+                               $rcid = is_object($rc) && !$rc->getAttribute('rc_patrolled') ? $rcid : 0;
+                       }
                }
                # If we have been passed an &rcid= parameter, we want to give the user a
                # chance to mark this new article as patrolled.
index 05e69ff..a0848d0 100644 (file)
@@ -168,6 +168,9 @@ CONTROL;
                        // If we've been given an explicit change identifier, use it; saves time
                        if( $this->mRcidMarkPatrolled ) {
                                $rcid = $this->mRcidMarkPatrolled;
+                               $rc = RecentChange::newFromId( $rcid );
+                               // Already patrolled?
+                               $rcid = is_object($rc) && !$rc->getAttribute('rc_patrolled') ? $rcid : 0;
                        } else {
                                // Look for an unpatrolled change corresponding to this diff
                                $db = wfGetDB( DB_SLAVE );