X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FProtectionForm.php;h=d6cc8a38354a699c0720169833c9dfe26a07b620;hb=008c561245742cdff111d4821839c9242f75ecb0;hp=061ed2cdbe2019fcd170b0e62a8f8e2314199d95;hpb=7e256f3d38a1c177fd0030648d82901711bf7998;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php index 061ed2cdbe..d6cc8a3835 100644 --- a/includes/ProtectionForm.php +++ b/includes/ProtectionForm.php @@ -83,8 +83,8 @@ class ProtectionForm { */ function loadData() { global $wgRequest, $wgUser; - global $wgRestrictionLevels; + $levels = MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace(), $wgUser ); $this->mCascade = $this->mTitle->areRestrictionsCascading(); $this->mReason = $wgRequest->getText( 'mwProtect-reason' ); @@ -132,21 +132,7 @@ class ProtectionForm { } $val = $wgRequest->getVal( "mwProtect-level-$action" ); - if ( isset( $val ) && in_array( $val, $wgRestrictionLevels ) ) { - // Prevent users from setting levels that they cannot later unset - if ( $val == 'sysop' ) { - // Special case, rewrite sysop to editprotected - if ( !$wgUser->isAllowed( 'editprotected' ) ) { - continue; - } - } elseif ( $val == 'autoconfirmed' ) { - // Special case, rewrite autoconfirmed to editsemiprotected - if ( !$wgUser->isAllowed( 'editsemiprotected' ) ) { - continue; - } - } elseif ( !$wgUser->isAllowed( $val ) ) { - continue; - } + if ( isset( $val ) && in_array( $val, $levels ) ) { $this->mRestrictions[$action] = $val; } } @@ -189,7 +175,7 @@ class ProtectionForm { function execute() { global $wgRequest, $wgOut; - if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if ( MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) === array( '' ) ) { throw new ErrorPageError( 'protect-badnamespace-title', 'protect-badnamespace-text' ); } @@ -556,28 +542,13 @@ class ProtectionForm { * @return String: HTML fragment */ function buildSelector( $action, $selected ) { - global $wgRestrictionLevels, $wgUser; - - $levels = array(); - foreach ( $wgRestrictionLevels as $key ) { - //don't let them choose levels above their own (aka so they can still unprotect and edit the page). but only when the form isn't disabled - if ( $key == 'sysop' ) { - //special case, rewrite sysop to editprotected - if ( !$wgUser->isAllowed( 'editprotected' ) && !$this->disabled ) { - continue; - } - } elseif ( $key == 'autoconfirmed' ) { - //special case, rewrite autoconfirmed to editsemiprotected - if ( !$wgUser->isAllowed( 'editsemiprotected' ) && !$this->disabled ) { - continue; - } - } else { - if ( !$wgUser->isAllowed( $key ) && !$this->disabled ) { - continue; - } - } - $levels[] = $key; - } + global $wgUser; + + // If the form is disabled, display all relevant levels. Otherwise, + // just show the ones this user can use. + $levels = MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace(), + $this->disabled ? null : $wgUser + ); $id = 'mwProtect-level-' . $action; $attribs = array( @@ -605,6 +576,7 @@ class ProtectionForm { if ( $permission == '' ) { return wfMessage( 'protect-default' )->text(); } else { + // Messages: protect-level-autoconfirmed, protect-level-sysop $msg = wfMessage( "protect-level-{$permission}" ); if ( $msg->exists() ) { return $msg->text();