From f827d5a261c2960da566fdf2cc86ebbd1e7896bf Mon Sep 17 00:00:00 2001 From: cenarium Date: Sun, 14 Jun 2015 20:00:52 +0200 Subject: [PATCH] Avoid muliple cache calls to explicitly defined tags 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 | 11 +++++++---- includes/logging/LogEventsList.php | 8 +++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/includes/actions/HistoryAction.php b/includes/actions/HistoryAction.php index f4f2a2a18c..a81adf99ce 100644 --- a/includes/actions/HistoryAction.php +++ b/includes/actions/HistoryAction.php @@ -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 { diff --git a/includes/logging/LogEventsList.php b/includes/logging/LogEventsList.php index dfe31365af..1b56584f85 100644 --- a/includes/logging/LogEventsList.php +++ b/includes/logging/LogEventsList.php @@ -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, -- 2.20.1