* @param string $tags Comma-separated list of tags
* @param string $page A label for the type of action which is being displayed,
* for example: 'history', 'contributions' or 'newpages'
+ * @param IContextSource|null $context
+ * @note Even though it takes null as a valid argument, an IContextSource is preferred
+ * in a new code, as the null value is subject to change in the future
* @return array Array with two items: (html, classes)
* - html: String: HTML for displaying the tags (empty string when param $tags is empty)
* - classes: Array of strings: CSS classes used in the generated html, one class for each tag
*/
- public static function formatSummaryRow( $tags, $page ) {
- global $wgLang;
-
+ public static function formatSummaryRow( $tags, $page, IContextSource $context = null ) {
if ( !$tags ) {
return array( '', array() );
}
+ if ( !$context ) {
+ $context = RequestContext::getMain();
+ }
$classes = array();
return array( '', array() );
}
- $markers = wfMessage( 'tag-list-wrapper' )
+ $markers = $context->msg( 'tag-list-wrapper' )
->numParams( count( $displayTags ) )
- ->rawParams( $wgLang->commaList( $displayTags ) )
+ ->rawParams( $context->getLanguage()->commaList( $displayTags ) )
->parse();
$markers = Xml::tags( 'span', array( 'class' => 'mw-tag-markers' ), $markers );
);
}
+ if ( $log_id && !$rev_id ) {
+ $rev_id = $dbw->selectField(
+ 'log_search',
+ 'ls_value',
+ array( 'ls_field' => 'associated_rev_id', 'ls_log_id' => $log_id ),
+ __METHOD__
+ );
+ } elseif ( !$log_id && $rev_id ) {
+ $log_id = $dbw->selectField(
+ 'log_search',
+ 'ls_log_id',
+ array( 'ls_field' => 'associated_rev_id', 'ls_value' => $rev_id ),
+ __METHOD__
+ );
+ }
+
// update the tag_summary row
$prevTags = array();
if ( !self::updateTagSummaryRow( $tagsToAdd, $tagsToRemove, $rc_id, $rev_id,
public static function canAddTagsAccompanyingChange( array $tags,
User $user = null ) {
- if ( !is_null( $user ) && !$user->isAllowed( 'applychangetags' ) ) {
- return Status::newFatal( 'tags-apply-no-permission' );
+ if ( !is_null( $user ) ) {
+ if ( !$user->isAllowed( 'applychangetags' ) ) {
+ return Status::newFatal( 'tags-apply-no-permission' );
+ } elseif ( $user->isBlocked() ) {
+ return Status::newFatal( 'tags-apply-blocked' );
+ }
}
// to be applied, a tag has to be explicitly defined
public static function canUpdateTags( array $tagsToAdd, array $tagsToRemove,
User $user = null ) {
- if ( !is_null( $user ) && !$user->isAllowed( 'changetags' ) ) {
- return Status::newFatal( 'tags-update-no-permission' );
+ if ( !is_null( $user ) ) {
+ if ( !$user->isAllowed( 'changetags' ) ) {
+ return Status::newFatal( 'tags-update-no-permission' );
+ } elseif ( $user->isBlocked() ) {
+ return Status::newFatal( 'tags-update-blocked' );
+ }
}
if ( $tagsToAdd ) {
* @since 1.25
*/
public static function canActivateTag( $tag, User $user = null ) {
- if ( !is_null( $user ) && !$user->isAllowed( 'managechangetags' ) ) {
- return Status::newFatal( 'tags-manage-no-permission' );
+ if ( !is_null( $user ) ) {
+ if ( !$user->isAllowed( 'managechangetags' ) ) {
+ return Status::newFatal( 'tags-manage-no-permission' );
+ } elseif ( $user->isBlocked() ) {
+ return Status::newFatal( 'tags-manage-blocked' );
+ }
}
// defined tags cannot be activated (a defined tag is either extension-
* @since 1.25
*/
public static function canDeactivateTag( $tag, User $user = null ) {
- if ( !is_null( $user ) && !$user->isAllowed( 'managechangetags' ) ) {
- return Status::newFatal( 'tags-manage-no-permission' );
+ if ( !is_null( $user ) ) {
+ if ( !$user->isAllowed( 'managechangetags' ) ) {
+ return Status::newFatal( 'tags-manage-no-permission' );
+ } elseif ( $user->isBlocked() ) {
+ return Status::newFatal( 'tags-manage-blocked' );
+ }
}
// only explicitly-defined tags can be deactivated
* @since 1.25
*/
public static function canCreateTag( $tag, User $user = null ) {
- if ( !is_null( $user ) && !$user->isAllowed( 'managechangetags' ) ) {
- return Status::newFatal( 'tags-manage-no-permission' );
+ if ( !is_null( $user ) ) {
+ if ( !$user->isAllowed( 'managechangetags' ) ) {
+ return Status::newFatal( 'tags-manage-no-permission' );
+ } elseif ( $user->isBlocked() ) {
+ return Status::newFatal( 'tags-manage-blocked' );
+ }
}
// no empty tags
public static function canDeleteTag( $tag, User $user = null ) {
$tagUsage = self::tagUsageStatistics();
- if ( !is_null( $user ) && !$user->isAllowed( 'managechangetags' ) ) {
- return Status::newFatal( 'tags-manage-no-permission' );
+ if ( !is_null( $user ) ) {
+ if ( !$user->isAllowed( 'managechangetags' ) ) {
+ return Status::newFatal( 'tags-manage-no-permission' );
+ } elseif ( $user->isBlocked() ) {
+ return Status::newFatal( 'tags-manage-blocked' );
+ }
}
if ( !isset( $tagUsage[$tag] ) && !in_array( $tag, self::listDefinedTags() ) ) {
},
array(
'checkKeys' => array( wfMemcKey( 'active-tags' ) ),
- 'lockTSE' => INF,
+ 'lockTSE' => 300,
'pcTTL' => 30
)
);
},
array(
'checkKeys' => array( wfMemcKey( 'valid-tags-db' ) ),
- 'lockTSE' => INF,
+ 'lockTSE' => 300,
'pcTTL' => 30
)
);
},
array(
'checkKeys' => array( wfMemcKey( 'valid-tags-hook' ) ),
- 'lockTSE' => INF,
+ 'lockTSE' => 300,
'pcTTL' => 30
)
);
},
array(
'checkKeys' => array( wfMemcKey( 'change-tag-statistics' ) ),
- 'lockTSE' => INF,
+ 'lockTSE' => 300,
'pcTTL' => 30
)
);