$ipb = new IPBlockForm();
$action = $wgRequest->getVal( 'action' );
- if ( 'success' == $action ) { $ipb->showSuccess(); }
- else if ( $wgRequest->wasPosted() && 'submit' == $action ) { $ipb->doSubmit(); }
- else { $ipb->showForm( '' ); }
+ if ( 'success' == $action ) {
+ $ipb->showSuccess();
+ } else if ( $wgRequest->wasPosted() && 'submit' == $action &&
+ $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
+ $ipb->doSubmit();
+ } else {
+ $ipb->showForm( '' );
+ }
}
/**
global $wgRequest;
$this->BlockAddress = $wgRequest->getVal( 'wpBlockAddress', $wgRequest->getVal( 'ip' ) );
$this->BlockReason = $wgRequest->getText( 'wpBlockReason' );
- $this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry' );
+ $this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg('ipbotheroption') );
+ $this->BlockOther = $wgRequest->getVal( 'wpBlockOther', '' );
}
function showForm( $err ) {
- global $wgOut, $wgUser, $wgLang, $wgDefaultBlockExpiry;
- global $wgRequest;
+ global $wgOut, $wgUser, $wgLang;
+ global $wgRequest, $wgSysopUserBans;
$wgOut->setPagetitle( htmlspecialchars( wfMsg( 'blockip' ) ) );
- $wgOut->addWikiText( htmlspecialchars( wfMsg( 'blockiptext' ) ) );
+ $wgOut->addWikiText( wfMsg( 'blockiptext' ) );
- if ( is_null( $this->BlockExpiry ) || $this->BlockExpiry === '' ) {
- $this->BlockExpiry = $wgDefaultBlockExpiry;
+ if($wgSysopUserBans) {
+ $mIpaddress = htmlspecialchars( wfMsg( 'ipadressorusername' ) );
+ } else {
+ $mIpaddress = htmlspecialchars( wfMsg( 'ipaddress' ) );
}
-
- $mIpaddress = htmlspecialchars( wfMsg( 'ipaddress' ) );
$mIpbexpiry = htmlspecialchars( wfMsg( 'ipbexpiry' ) );
+ $mIpbother = htmlspecialchars( wfMsg( 'ipbother' ) );
+ $mIpbothertime = htmlspecialchars( wfMsg( 'ipbotheroption' ) );
$mIpbreason = htmlspecialchars( wfMsg( 'ipbreason' ) );
$mIpbsubmit = htmlspecialchars( wfMsg( 'ipbsubmit' ) );
$titleObj = Title::makeTitle( NS_SPECIAL, 'Blockip' );
$action = $titleObj->escapeLocalURL( "action=submit" );
if ( "" != $err ) {
- $wgOut->setSubtitle( htmlspecialchars( wfMsg( 'formerror' ) ) );
+ $wgOut->setSubtitle( wfMsg( 'formerror' ) );
$wgOut->addHTML( "<p class='error'>{$err}</p>\n" );
}
$scBlockAddress = htmlspecialchars( $this->BlockAddress );
$scBlockExpiry = htmlspecialchars( $this->BlockExpiry );
$scBlockReason = htmlspecialchars( $this->BlockReason );
+ $scBlockOtherTime = htmlspecialchars( $this->BlockOther );
+ $scBlockExpiryOptions = htmlspecialchars( wfMsgForContent( 'ipboptions' ) );
+
+ $showblockoptions = $scBlockExpiryOptions != '-';
+ if (!$showblockoptions)
+ $mIpbother = $mIpbexpiry;
+
+ $blockExpiryFormOptions = "<option value=\"other\">$mIpbothertime</option>";
+ foreach (explode(',', $scBlockExpiryOptions) as $option) {
+ if ( strpos($option, ":") === false ) $option = "$option:$option";
+ list($show, $value) = explode(":", $option);
+ $show = htmlspecialchars($show);
+ $value = htmlspecialchars($value);
+ $selected = "";
+ if ($this->BlockExpiry === $value)
+ $selected = ' selected="selected"';
+ $blockExpiryFormOptions .= "<option value=\"$value\"$selected>$show</option>";
+ }
+
+ $token = htmlspecialchars( $wgUser->editToken() );
$wgOut->addHTML( "
<form id=\"blockip\" method=\"post\" action=\"{$action}\">
<input tabindex='1' type='text' size='20' name=\"wpBlockAddress\" value=\"{$scBlockAddress}\" />
</td>
</tr>
- <tr>
+ <tr>");
+ if ($showblockoptions) {
+ $wgOut->addHTML("
<td align=\"right\">{$mIpbexpiry}:</td>
<td align=\"left\">
- <select name=\"wpBlockExpiry\"/>
- <option>2 hours</option>
- <option>1 day</option>
- <option>3 days</option>
- <option>1 week</option>
- <option>2 weeks</option>
- <option>1 month</option>
- <option>3 months</option>
- <option>6 months</option>
- <option>1 year</option>
- <option>indefinite</option>
+ <select tabindex='2' id='wpBlockExpiry' name=\"wpBlockExpiry\" onchange=\"considerChangingExpiryFocus()\">
+ $blockExpiryFormOptions
</select>
</td>
+ ");
+ }
+ $wgOut->addHTML("
+ </tr>
+ <tr id='wpBlockOther'>
+ <td align=\"right\">{$mIpbother}:</td>
+ <td align=\"left\">
+ <input tabindex='3' type='text' size='40' name=\"wpBlockOther\" value=\"{$scBlockOtherTime}\" />
+ </td>
</tr>
<tr>
<td align=\"right\">{$mIpbreason}:</td>
</td>
</tr>
</table>
+ <input type='hidden' name='wpEditToken' value=\"{$token}\" />
</form>\n" );
}
}
}
- if ( $this->BlockExpiry == 'infinite' || $this->BlockExpiry == 'indefinite' ) {
+ $expirestr = $this->BlockExpiry;
+ if ($expirestr == wfMsg('ipbotheroption'))
+ $expirestr = $this->BlockOther;
+
+ if (strlen($expirestr) == 0) {
+ $this->showForm( wfMsg( 'ipb_expiry_invalid' ) );
+ return;
+ }
+
+ if ( $expirestr == 'infinite' || $expirestr == 'indefinite' ) {
$expiry = '';
} else {
# Convert GNU-style date, returns -1 on error
- $expiry = strtotime( $this->BlockExpiry );
+ $expiry = strtotime( $expirestr );
if ( $expiry < 0 ) {
$this->showForm( wfMsg( 'ipb_expiry_invalid' ) );
}
- if ( $this->BlockReason == '') {
- $this->showForm( wfMsg( 'noblockreason' ) );
- return;
- }
-
# Create block
# Note: for a user block, ipb_address is only for display purposes
$ban = new Block( $this->BlockAddress, $userId, $wgUser->getID(),
$this->BlockReason, wfTimestampNow(), 0, $expiry );
- if (wfRunHooks('BlockIp', $ban, $wgUser)) {
+ if (wfRunHooks('BlockIp', array(&$ban, &$wgUser))) {
$ban->insert();
- wfRunHooks('BlockIpComplete', $ban, $wgUser);
+ wfRunHooks('BlockIpComplete', array($ban, $wgUser));
# Make log entry
$log = new LogPage( 'block' );
$log->addEntry( 'block', Title::makeTitle( NS_USER, $this->BlockAddress ),
- $this->BlockReason, $this->BlockExpiry );
+ $this->BlockReason, $expirestr );
# Report to the user
$titleObj = Title::makeTitle( NS_SPECIAL, 'Blockip' );