From 33c5d1dbcf69a83ab60be3a2c180ae091072c580 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Fri, 18 Oct 2013 10:29:36 -0400 Subject: [PATCH] Use restriction-level-* messages in Linker::formatTemplates The current implementation of Linker::formatTemplates only checks for "sysop" and "autoconfirmed", and completely ignores any other protection levels. That needs fixing. Rather than introducing additional messages "template-protected-*" to match template-protected and template-semiprotected, let's just use the existing restriction-level-foo messages and wrap them in parentheses. The old messages are kept for backwards compatability, but could probably be considered deprecated. Bug: 43462 Change-Id: I0c507f4ecc1921f599acbda834fa55e96388fa7b --- includes/Linker.php | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/includes/Linker.php b/includes/Linker.php index 5bb92308ff..23ece751af 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -1960,6 +1960,7 @@ class Linker { * @return String: HTML output */ public static function formatTemplates( $templates, $preview = false, $section = false, $more = null ) { + global $wgLang; wfProfileIn( __METHOD__ ); $outText = ''; @@ -1987,13 +1988,28 @@ class Linker { usort( $templates, 'Title::compare' ); foreach ( $templates as $titleObj ) { - $r = $titleObj->getRestrictions( 'edit' ); - if ( in_array( 'sysop', $r ) ) { - $protected = wfMessage( 'template-protected' )->parse(); - } elseif ( in_array( 'autoconfirmed', $r ) ) { - $protected = wfMessage( 'template-semiprotected' )->parse(); - } else { - $protected = ''; + $protected = ''; + $restrictions = $titleObj->getRestrictions( 'edit' ); + if ( $restrictions ) { + // Check backwards-compatible messages + $msg = null; + if ( $restrictions === array( 'sysop' ) ) { + $msg = wfMessage( 'template-protected' ); + } elseif ( $restrictions === array( 'autoconfirmed' ) ) { + $msg = wfMessage( 'template-semiprotected' ); + } + if ( $msg && !$msg->isDisabled() ) { + $protected = $msg->parse(); + } else { + // Construct the message from restriction-level-* + // e.g. restriction-level-sysop, restriction-level-autoconfirmed + $msgs = array(); + foreach ( $restrictions as $r ) { + $msgs[] = wfMessage( "restriction-level-$r" )->parse(); + } + $protected = wfMessage( 'parentheses' ) + ->rawParams( $wgLang->commaList( $msgs ) )->escaped(); + } } if ( $titleObj->quickUserCan( 'edit' ) ) { $editLink = self::link( -- 2.20.1