Don't show patrol links if RCP/NPP are disabled, but file patrol isn't
authorKunal Mehta <legoktm@member.fsf.org>
Tue, 16 Feb 2016 23:28:22 +0000 (15:28 -0800)
committerKunal Mehta <legoktm@member.fsf.org>
Wed, 17 Feb 2016 09:53:36 +0000 (01:53 -0800)
$wgUseFilePatrol only matters for pages in the File namespace, so limit
it to that. Otherwise wikis with RC and NP patrol disabled will have
patrol links show up, but always have the API request fail.

Bug: T125288
Change-Id: Ia91f6ae7ed54627e3e722f41637b1d11626d9806

includes/page/Article.php

index 4e4b2d7..6ce8cc1 100644 (file)
@@ -1065,10 +1065,12 @@ class Article implements Page {
 
                $outputPage = $this->getContext()->getOutput();
                $user = $this->getContext()->getUser();
+               $title = $this->getTitle();
                $rc = false;
 
-               if ( !$this->getTitle()->quickUserCan( 'patrol', $user )
-                       || !( $wgUseRCPatrol || $wgUseNPPatrol || $wgUseFilePatrol )
+               if ( !$title->quickUserCan( 'patrol', $user )
+                       || !( $wgUseRCPatrol || $wgUseNPPatrol
+                               || ( $wgUseFilePatrol && $title->inNamespace( NS_FILE ) ) )
                ) {
                        // Patrolling is disabled or the user isn't allowed to
                        return false;
@@ -1083,7 +1085,7 @@ class Article implements Page {
                }
 
                // Check for cached results
-               $key = wfMemcKey( 'unpatrollable-page', $this->getTitle()->getArticleID() );
+               $key = wfMemcKey( 'unpatrollable-page', $title->getArticleID() );
                $cache = ObjectCache::getMainWANInstance();
                if ( $cache->get( $key ) ) {
                        return false;
@@ -1093,7 +1095,7 @@ class Article implements Page {
                $oldestRevisionTimestamp = $dbr->selectField(
                        'revision',
                        'MIN( rev_timestamp )',
-                       [ 'rev_page' => $this->getTitle()->getArticleID() ],
+                       [ 'rev_page' => $title->getArticleID() ],
                        __METHOD__
                );
 
@@ -1112,8 +1114,8 @@ class Article implements Page {
                                [
                                        'rc_new' => 1,
                                        'rc_timestamp' => $oldestRevisionTimestamp,
-                                       'rc_namespace' => $this->getTitle()->getNamespace(),
-                                       'rc_cur_id' => $this->getTitle()->getArticleID()
+                                       'rc_namespace' => $title->getNamespace(),
+                                       'rc_cur_id' => $title->getArticleID()
                                ],
                                __METHOD__
                        );
@@ -1129,12 +1131,12 @@ class Article implements Page {
                // (with rc_type = RC_LOG, rc_log_type = upload).
                $recentFileUpload = false;
                if ( ( !$rc || $rc->getAttribute( 'rc_patrolled' ) ) && $wgUseFilePatrol
-                       && $this->getTitle()->getNamespace() === NS_FILE ) {
+                       && $title->getNamespace() === NS_FILE ) {
                        // Retrieve timestamp of most recent upload
                        $newestUploadTimestamp = $dbr->selectField(
                                'image',
                                'MAX( img_timestamp )',
-                               [ 'img_name' => $this->getTitle()->getDBkey() ],
+                               [ 'img_name' => $title->getDBkey() ],
                                __METHOD__
                        );
                        if ( $newestUploadTimestamp
@@ -1148,7 +1150,7 @@ class Article implements Page {
                                                'rc_log_type' => 'upload',
                                                'rc_timestamp' => $newestUploadTimestamp,
                                                'rc_namespace' => NS_FILE,
-                                               'rc_cur_id' => $this->getTitle()->getArticleID()
+                                               'rc_cur_id' => $title->getArticleID()
                                        ],
                                        __METHOD__,
                                        [ 'USE INDEX' => 'rc_timestamp' ]
@@ -1203,7 +1205,7 @@ class Article implements Page {
                }
 
                $link = Linker::linkKnown(
-                       $this->getTitle(),
+                       $title,
                        $markPatrolledMsg->escaped(),
                        [],
                        [