# 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.
// 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 );