Avoid muliple cache calls to explicitly defined tags
authorcenarium <cenarium.sysop@gmail.com>
Sun, 14 Jun 2015 18:00:52 +0000 (20:00 +0200)
committercenarium <cenarium.sysop@gmail.com>
Sun, 14 Jun 2015 18:02:30 +0000 (20:02 +0200)
This avoids muliple cache calls to explicitly defined tags by
calling the showTagEditUI of ChangeTags only once in logs and
histories.

Change-Id: I2e36dbd96d3fcca06de0bf418bc6dc294d8d18d3

includes/actions/HistoryAction.php
includes/logging/LogEventsList.php

index f4f2a2a..a81adf9 100644 (file)
@@ -368,6 +368,9 @@ class HistoryPager extends ReverseChronologicalPager {
         */
        protected $parentLens;
 
+       /** @var bool Whether to show the tag editing UI */
+       protected $showTagEditUI;
+
        /**
         * @param HistoryAction $historyPage
         * @param string $year
@@ -381,6 +384,7 @@ class HistoryPager extends ReverseChronologicalPager {
                $this->tagFilter = $tagFilter;
                $this->getDateCond( $year, $month );
                $this->conds = $conds;
+               $this->showTagEditUI = ChangeTags::showTagEditingUI( $this->getUser() );
        }
 
        // For hook compatibility...
@@ -504,7 +508,7 @@ class HistoryPager extends ReverseChronologicalPager {
                if ( $user->isAllowed( 'deleterevision' ) ) {
                        $actionButtons .= $this->getRevisionButton( 'revisiondelete', 'showhideselectedversions' );
                }
-               if ( ChangeTags::showTagEditingUI( $user ) ) {
+               if ( $this->showTagEditUI ) {
                        $actionButtons .= $this->getRevisionButton( 'editchangetags', 'history-edit-tags' );
                }
                if ( $actionButtons ) {
@@ -631,14 +635,13 @@ class HistoryPager extends ReverseChronologicalPager {
                $del = '';
                $user = $this->getUser();
                $canRevDelete = $user->isAllowed( 'deleterevision' );
-               $showTagEditUI = ChangeTags::showTagEditingUI( $user );
                // Show checkboxes for each revision, to allow for revision deletion and
                // change tags
-               if ( $canRevDelete || $showTagEditUI ) {
+               if ( $canRevDelete || $this->showTagEditUI ) {
                        $this->preventClickjacking();
                        // If revision was hidden from sysops and we don't need the checkbox
                        // for anything else, disable it
-                       if ( !$showTagEditUI && !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
+                       if ( !$this->showTagEditUI && !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
                                $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
                        // Otherwise, enable the checkbox...
                        } else {
index dfe3136..1b56584 100644 (file)
@@ -35,6 +35,11 @@ class LogEventsList extends ContextSource {
         */
        protected $mDefaultQuery;
 
+       /**
+        * @var bool
+        */
+       protected $showTagEditUI;
+
        /**
         * Constructor.
         * The first two parameters used to be $skin and $out, but now only a context
@@ -55,6 +60,7 @@ class LogEventsList extends ContextSource {
                }
 
                $this->flags = $flags;
+               $this->showTagEditUI = ChangeTags::showTagEditingUI( $this->getUser() );
        }
 
        /**
@@ -348,7 +354,7 @@ class LogEventsList extends ContextSource {
                $user = $this->getUser();
 
                // If change tag editing is available to this user, return the checkbox
-               if ( $this->flags & self::USE_CHECKBOXES && ChangeTags::showTagEditingUI( $user ) ) {
+               if ( $this->flags & self::USE_CHECKBOXES && $this->showTagEditUI ) {
                        return Xml::check(
                                'showhiderevisions',
                                false,