X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FProtectionForm.php;h=d6cc8a38354a699c0720169833c9dfe26a07b620;hb=008c561245742cdff111d4821839c9242f75ecb0;hp=f10317a9e561855b0fd6bb35387c2ff0d00bda3d;hpb=898a0b6a4a0dc2623f1f230829845357d9661481;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php index f10317a9e5..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(