$this->mCascade = $wgRequest->getBool( 'mwProtect-cascade', $this->mCascade );
foreach( $this->mApplicableTypes as $action ) {
- // Fixme: this form currently requires individual selections,
+ // @todo FIXME: This form currently requires individual selections,
// but the db allows multiples separated by commas.
// Pull the actual restriction from the DB
// Prevent users from setting levels that they cannot later unset
if( $val == 'sysop' ) {
// Special case, rewrite sysop to either protect and editprotected
- if( !$wgUser->isAllowed('protect') && !$wgUser->isAllowed('editprotected') )
+ if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) )
continue;
} else {
if( !$wgUser->isAllowed($val) )
/**
* Get the expiry time for a given action, by combining the relevant inputs.
*
- * @return 14-char timestamp or "infinity", or false if the input was invalid
+ * @param $action string
+ *
+ * @return string 14-char timestamp or "infinity", or false if the input was invalid
*/
function getExpiry( $action ) {
if ( $this->mExpirySelection[$action] == 'existing' ) {
$value = $this->mExpirySelection[$action];
}
if ( $value == 'infinite' || $value == 'indefinite' || $value == 'infinity' ) {
- $time = Block::infinity();
+ $time = wfGetDB( DB_SLAVE )->getInfinity();
} else {
$unix = strtotime( $value );
return false;
}
- // Fixme: non-qualified absolute times are not in users specified timezone
+ // @todo FIXME: Non-qualified absolute times are not in users specified timezone
// and there isn't notice about it in the ui
$time = wfTimestamp( TS_MW, $unix );
}
if( wfReadOnly() ) {
$wgOut->readOnlyPage();
} elseif( $this->mPermErrors ) {
- $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $this->mPermErrors ) );
+ $wgOut->showPermissionsErrorPage( $this->mPermErrors );
}
} else {
$wgOut->addWikiMsg( 'protect-text', $this->mTitle->getPrefixedText() );
return false;
}
- if( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) {
- $this->mArticle->doWatch();
- } elseif( $this->mTitle->userIsWatching() ) {
- $this->mArticle->doUnwatch();
+ if ( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) {
+ WatchAction::doWatch( $this->mTitle, $wgUser );
+ } elseif ( $this->mTitle->userIsWatching() ) {
+ WatchAction::doUnwatch( $this->mTitle, $wgUser );
}
return $ok;
}
$out .= Xml::openElement( 'form', array( 'method' => 'post',
'action' => $this->mTitle->getLocalUrl( 'action=protect' ),
'id' => 'mw-Protect-Form', 'onsubmit' => 'ProtectionForm.enableUnchainedInputs(true)' ) );
- $out .= Xml::hidden( 'wpEditToken',$wgUser->editToken() );
+ $out .= Html::hidden( 'wpEditToken',$wgUser->editToken() );
}
$out .= Xml::openElement( 'fieldset' ) .
foreach( $this->mRestrictions as $action => $selected ) {
/* Not all languages have V_x <-> N_x relation */
- $msg = wfMsg( 'restriction-' . $action );
- if( wfEmptyMsg( 'restriction-' . $action, $msg ) ) {
- $msg = $action;
- }
+ $msg = wfMessage( 'restriction-' . $action );
$out .= "<tr><td>".
Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, $msg ) .
+ Xml::element( 'legend', null, $msg->exists() ? $action : $msg->text() ) .
Xml::openElement( 'table', array( 'id' => "mw-protect-table-$action" ) ) .
"<tr><td>" . $this->buildSelector( $action, $selected ) . "</td></tr><tr><td>";
</td>
<td class='mw-input'>" .
Xml::input( 'mwProtect-reason', 60, $this->mReason, array( 'type' => 'text',
- 'id' => 'mwProtect-reason', 'maxlength' => 255 ) ) .
+ 'id' => 'mwProtect-reason', 'maxlength' => 180 ) ) .
+ // Limited maxlength as the database trims at 255 bytes and other texts
+ // chosen by dropdown menus on this page are also included in this database field.
+ // The byte limit of 180 bytes is enforced in javascript
"</td>
</tr>";
# Disallow watching is user is not logged in
//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->isAllowed('protect') && !$wgUser->isAllowed('editprotected') && !$this->disabled )
+ if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) && !$this->disabled )
continue;
} else {
if( !$wgUser->isAllowed($key) && !$this->disabled )
if( $permission == '' ) {
return wfMsg( 'protect-default' );
} else {
- $key = "protect-level-{$permission}";
- $msg = wfMsg( $key );
- if( wfEmptyMsg( $key, $msg ) )
- $msg = wfMsg( 'protect-fallback', $permission );
- return $msg;
+ $msg = wfMessage( "protect-level-{$permission}" );
+ if( !$msg->exists() ) {
+ return $msg->text();
+ }
+ return wfMsg( 'protect-fallback', $permission );
}
}
$encOptions = Xml::encodeJsVar( $options );
$script .= "ProtectionForm.init($encOptions)";
- return Html::inlineScript( "if ( mediaWiki !== undefined ) { mediaWiki.loader.using( 'mediawiki.legacy.protect', function() { {$script} } ); }" );
+ return Html::inlineScript( "if ( window.mediaWiki ) { $script }" );
}
/**