X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fspecials%2FSpecialPasswordPolicies.php;h=cc8753ceae7d5246a2a68bf4fe227397ddfc1955;hp=573dcb52aaf4dedc3488d8a34e9e7563a65aeae3;hb=dfec83932fd38a9086eb5a2e212889ad00f35b0e;hpb=f374b21f62aa36ce238c485eaa36d728e84e9954 diff --git a/includes/specials/SpecialPasswordPolicies.php b/includes/specials/SpecialPasswordPolicies.php index 573dcb52aa..cc8753ceae 100644 --- a/includes/specials/SpecialPasswordPolicies.php +++ b/includes/specials/SpecialPasswordPolicies.php @@ -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, + '' . $gp . '', + $this->getLanguage()->commaList( $flagMsgs ) + )->parse(); } else { - $msg = $this->msg( 'passwordpolicies-policy-' . strtolower( $gp ) )->numParams( $val ); + $ret[] = $this->msg( + 'passwordpolicies-policy-display', + $msg, + '' . $gp . '' + )->parse(); } - $ret[] = $this->msg( - 'passwordpolicies-policy-display', - $msg, - '' . $gp . '' - )->parse(); } if ( $ret === [] ) { return '';