Merge "Selenium: replace UserLoginPage with BlankPage where possible"
[lhc/web/wiklou.git] / includes / specials / SpecialPasswordPolicies.php
index 573dcb5..cc8753c 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * This special page lists the defined password policies for user groups.
  * See also @ref $wgPasswordPolicy.
@@ -84,7 +86,8 @@ class SpecialPasswordPolicies extends SpecialPage {
                        $groupnameLocalized = UserGroupMembership::getGroupName( $group );
 
                        $grouppageLocalizedTitle = UserGroupMembership::getGroupPage( $group )
-                               ?: Title::newFromText( MWNamespace::getCanonicalName( NS_PROJECT ) . ':' . $group );
+                               ?: Title::newFromText( MediaWikiServices::getInstance()->getNamespaceInfo()->
+                                       getCanonicalName( NS_PROJECT ) . ':' . $group );
 
                        $grouppage = $linkRenderer->makeLink(
                                $grouppageLocalizedTitle,
@@ -124,7 +127,7 @@ class SpecialPasswordPolicies extends SpecialPage {
         * Create a HTML list of password policies for $group
         *
         * @param array $policies Original $wgPasswordPolicy array
-        * @param array $group Group to format password policies for
+        * @param string $group Group to format password policies for
         *
         * @return string HTML list of all applied password policies
         */
@@ -136,20 +139,37 @@ class SpecialPasswordPolicies extends SpecialPage {
                );
 
                $ret = [];
-               foreach ( $groupPolicies as $gp => $val ) {
-                       if ( $val === false ) {
-                               // Policy isn't enabled, so no need to dislpay it
+               foreach ( $groupPolicies as $gp => $settings ) {
+                       if ( !is_array( $settings ) ) {
+                               $settings = [ 'value' => $settings ];
+                       }
+                       $val = $settings['value'];
+                       $flags = array_diff_key( $settings, [ 'value' => true ] );
+                       if ( !$val ) {
+                               // Policy isn't enabled, so no need to display it
                                continue;
-                       } elseif ( $val === true ) {
-                               $msg = $this->msg( 'passwordpolicies-policy-' . strtolower( $gp ) );
+                       }
+                       $msg = $this->msg( 'passwordpolicies-policy-' . strtolower( $gp ) )->numParams( $val );
+                       $flagMsgs = [];
+                       foreach ( array_filter( $flags ) as $flag => $value ) {
+                               $flagMsg = $this->msg( 'passwordpolicies-policyflag-' . strtolower( $flag ) );
+                               $flagMsg->params( $value );
+                               $flagMsgs[] = $flagMsg;
+                       }
+                       if ( $flagMsgs ) {
+                               $ret[] = $this->msg(
+                                       'passwordpolicies-policy-displaywithflags',
+                                       $msg,
+                                       '<span class="mw-passwordpolicies-policy-name">' . $gp . '</span>',
+                                       $this->getLanguage()->commaList( $flagMsgs )
+                               )->parse();
                        } else {
-                               $msg = $this->msg( 'passwordpolicies-policy-' . strtolower( $gp ) )->numParams( $val );
+                               $ret[] = $this->msg(
+                                       'passwordpolicies-policy-display',
+                                       $msg,
+                                       '<span class="mw-passwordpolicies-policy-name">' . $gp . '</span>'
+                               )->parse();
                        }
-                       $ret[] = $this->msg(
-                               'passwordpolicies-policy-display',
-                               $msg,
-                               '<span class="mw-passwordpolicies-policy-name">' . $gp . '</span>'
-                       )->parse();
                }
                if ( $ret === [] ) {
                        return '';