From 4ac9fa081a7c045f6a9f1cfc529d82423f485b2e Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sun, 8 Dec 2013 09:55:49 +0100 Subject: Update to MediaWiki 1.22.0 --- includes/ProtectionForm.php | 110 ++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 56 deletions(-) (limited to 'includes/ProtectionForm.php') diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php index d7b88400..f10317a9 100644 --- a/includes/ProtectionForm.php +++ b/includes/ProtectionForm.php @@ -91,7 +91,7 @@ class ProtectionForm { $this->mReasonSelection = $wgRequest->getText( 'wpProtectReasonSelection' ); $this->mCascade = $wgRequest->getBool( 'mwProtect-cascade', $this->mCascade ); - foreach( $this->mApplicableTypes as $action ) { + foreach ( $this->mApplicableTypes as $action ) { // @todo FIXME: This form currently requires individual selections, // but the db allows multiples separated by commas. @@ -132,15 +132,20 @@ class ProtectionForm { } $val = $wgRequest->getVal( "mwProtect-level-$action" ); - if( isset( $val ) && in_array( $val, $wgRestrictionLevels ) ) { + 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 either protect and editprotected - if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) ) + if ( $val == 'sysop' ) { + // Special case, rewrite sysop to editprotected + if ( !$wgUser->isAllowed( 'editprotected' ) ) { continue; - } else { - if( !$wgUser->isAllowed( $val ) ) + } + } elseif ( $val == 'autoconfirmed' ) { + // Special case, rewrite autoconfirmed to editsemiprotected + if ( !$wgUser->isAllowed( 'editsemiprotected' ) ) { continue; + } + } elseif ( !$wgUser->isAllowed( $val ) ) { + continue; } $this->mRestrictions[$action] = $val; } @@ -188,10 +193,10 @@ class ProtectionForm { throw new ErrorPageError( 'protect-badnamespace-title', 'protect-badnamespace-text' ); } - if( $wgRequest->wasPosted() ) { - if( $this->save() ) { + if ( $wgRequest->wasPosted() ) { + if ( $this->save() ) { $q = $this->mArticle->isRedirect() ? 'redirect=no' : ''; - $wgOut->redirect( $this->mTitle->getFullUrl( $q ) ); + $wgOut->redirect( $this->mTitle->getFullURL( $q ) ); } } else { $this->show(); @@ -282,10 +287,11 @@ class ProtectionForm { $reasonstr = $this->mReason; } $expiry = array(); - foreach( $this->mApplicableTypes as $action ) { + foreach ( $this->mApplicableTypes as $action ) { $expiry[$action] = $this->getExpiry( $action ); - if( empty( $this->mRestrictions[$action] ) ) + if ( empty( $this->mRestrictions[$action] ) ) { continue; // unprotected + } if ( !$expiry[$action] ) { $this->show( array( 'protect_expiry_invalid' ) ); return false; @@ -296,13 +302,7 @@ class ProtectionForm { } } - # They shouldn't be able to do this anyway, but just to make sure, ensure that cascading restrictions aren't being applied - # to a semi-protected page. - $edit_restriction = isset( $this->mRestrictions['edit'] ) ? $this->mRestrictions['edit'] : ''; $this->mCascade = $wgRequest->getBool( 'mwProtect-cascade' ); - if ( $this->mCascade && ($edit_restriction != 'protect') && - !User::groupHasPermission( $edit_restriction, 'protect' ) ) - $this->mCascade = false; $status = $this->mArticle->doUpdateRestrictions( $this->mRestrictions, $expiry, $this->mCascade, $reasonstr, $wgUser ); @@ -318,23 +318,18 @@ class ProtectionForm { * you can also return an array of message name and its parameters */ $errorMsg = ''; - if( !wfRunHooks( 'ProtectionForm::save', array( $this->mArticle, &$errorMsg ) ) ) { + if ( !wfRunHooks( 'ProtectionForm::save', array( $this->mArticle, &$errorMsg, $reasonstr ) ) ) { if ( $errorMsg == '' ) { $errorMsg = array( 'hookaborted' ); } } - if( $errorMsg != '' ) { + if ( $errorMsg != '' ) { $this->show( $errorMsg ); return false; } - if ( $wgUser->isLoggedIn() && $wgRequest->getCheck( 'mwProtectWatch' ) != $wgUser->isWatched( $this->mTitle ) ) { - if ( $wgRequest->getCheck( 'mwProtectWatch' ) ) { - WatchAction::doWatch( $this->mTitle, $wgUser ); - } else { - WatchAction::doUnwatch( $this->mTitle, $wgUser ); - } - } + WatchAction::doWatchOrUnwatch( $wgRequest->getCheck( 'mwProtectWatch' ), $this->mTitle, $wgUser ); + return true; } @@ -356,10 +351,10 @@ class ProtectionForm { ); $out = ''; - if( !$this->disabled ) { + if ( !$this->disabled ) { $wgOut->addModules( 'mediawiki.legacy.protect' ); $out .= Xml::openElement( 'form', array( 'method' => 'post', - 'action' => $this->mTitle->getLocalUrl( 'action=protect' ), + 'action' => $this->mTitle->getLocalURL( 'action=protect' ), 'id' => 'mw-Protect-Form', 'onsubmit' => 'ProtectionForm.enableUnchainedInputs(true)' ) ); } @@ -368,10 +363,12 @@ class ProtectionForm { Xml::openElement( 'table', array( 'id' => 'mwProtectSet' ) ) . Xml::openElement( 'tbody' ); - foreach( $this->mRestrictions as $action => $selected ) { - /* Not all languages have V_x <-> N_x relation */ + // Not all languages have V_x <-> N_x relation + foreach ( $this->mRestrictions as $action => $selected ) { + // Messages: + // restriction-edit, restriction-move, restriction-create, restriction-upload $msg = wfMessage( 'restriction-' . $action ); - $out .= "". + $out .= "" . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', null, $msg->exists() ? $msg->text() : $action ) . Xml::openElement( 'table', array( 'id' => "mw-protect-table-$action" ) ) . @@ -384,7 +381,7 @@ class ProtectionForm { 'mwProtect-reason', 4 ); $scExpiryOptions = wfMessage( 'protect-expiry-options' )->inContentLanguage()->text(); - $showProtectOptions = ($scExpiryOptions !== '-' && !$this->disabled); + $showProtectOptions = $scExpiryOptions !== '-' && !$this->disabled; $mProtectexpiry = Xml::label( wfMessage( 'protectexpiry' )->text(), @@ -412,7 +409,7 @@ class ProtectionForm { wfMessage( 'protect-othertime-op' )->text(), "othertime" ) . "\n"; - foreach( explode( ',', $scExpiryOptions ) as $option ) { + foreach ( explode( ',', $scExpiryOptions ) as $option ) { if ( strpos( $option, ":" ) === false ) { $show = $value = $option; } else { @@ -423,7 +420,7 @@ class ProtectionForm { $expiryFormOptions .= Xml::option( $show, $value, $this->mExpirySelection[$action] === $value ) . "\n"; } # Add expiry dropdown - if( $showProtectOptions && !$this->disabled ) { + if ( $showProtectOptions && !$this->disabled ) { $out .= " @@ -481,7 +478,7 @@ class ProtectionForm { } # Add manual and custom reason field/selects as well as submit - if( !$this->disabled ) { + if ( !$this->disabled ) { $out .= Xml::openElement( 'table', array( 'id' => 'mw-protect-table3' ) ) . Xml::openElement( 'tbody' ); $out .= " @@ -506,7 +503,7 @@ class ProtectionForm { ""; # Disallow watching is user is not logged in - if( $wgUser->isLoggedIn() ) { + if ( $wgUser->isLoggedIn() ) { $out .= " @@ -562,15 +559,22 @@ class ProtectionForm { global $wgRestrictionLevels, $wgUser; $levels = array(); - foreach( $wgRestrictionLevels as $key ) { + 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 protect and editprotected - if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) && !$this->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 ) + if ( !$wgUser->isAllowed( $key ) && !$this->disabled ) { continue; + } } $levels[] = $key; } @@ -584,7 +588,7 @@ class ProtectionForm { ) + $this->disabledAttrib; $out = Xml::openElement( 'select', $attribs ); - foreach( $levels as $key ) { + foreach ( $levels as $key ) { $out .= Xml::option( $this->getOptionLabel( $key ), $key, $key == $selected ); } $out .= Xml::closeElement( 'select' ); @@ -598,11 +602,12 @@ class ProtectionForm { * @return String */ private function getOptionLabel( $permission ) { - if( $permission == '' ) { + if ( $permission == '' ) { return wfMessage( 'protect-default' )->text(); } else { + // Messages: protect-level-autoconfirmed, protect-level-sysop $msg = wfMessage( "protect-level-{$permission}" ); - if( $msg->exists() ) { + if ( $msg->exists() ) { return $msg->text(); } return wfMessage( 'protect-fallback', $permission )->text(); @@ -610,16 +615,9 @@ class ProtectionForm { } function buildCleanupScript() { - global $wgRestrictionLevels, $wgOut; - - $cascadeableLevels = array(); - foreach( $wgRestrictionLevels as $key ) { - if ( User::groupHasPermission( $key, 'protect' ) - || $key == 'protect' - ) { - $cascadeableLevels[] = $key; - } - } + global $wgCascadingRestrictionLevels, $wgOut; + + $cascadeableLevels = $wgCascadingRestrictionLevels; $options = array( 'tableId' => 'mwProtectSet', 'labelText' => wfMessage( 'protect-unchain-permissions' )->plain(), -- cgit v1.2.2
@@ -463,7 +460,7 @@ class ProtectionForm { $out .= Xml::closeElement( 'tbody' ) . Xml::closeElement( 'table' ); // JavaScript will add another row with a value-chaining checkbox - if( $this->mTitle->exists() ) { + if ( $this->mTitle->exists() ) { $out .= Xml::openElement( 'table', array( 'id' => 'mw-protect-table2' ) ) . Xml::openElement( 'tbody' ); $out .= '