X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FSpecialIpblocklist.php;h=5b16cb16156e1e1e40c6568a72feedaa1ddcc803;hb=0ffaed11ffdff03ef64f96f701974f61ceb46f19;hp=f98098d4011f31ad4c5c3d5116e09d43fae6b5e2;hpb=d5cbc0e43a7c184157fea3191aa33cea68d98aa3;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialIpblocklist.php b/includes/SpecialIpblocklist.php index f98098d401..5b16cb1615 100644 --- a/includes/SpecialIpblocklist.php +++ b/includes/SpecialIpblocklist.php @@ -1,17 +1,19 @@ -getVal( 'wpUnblockAddress', $wgRequest->getVal( 'ip' ) ); + $reason = $wgRequest->getText( 'wpUnblockReason' ); + $action = $wgRequest->getText( 'action' ); + + $ipu = new IPUnblockForm( $ip, $reason ); if ( "success" == $action ) { - $msg = str_replace( "$1", $ip, wfMsg( "ipusuccess" ) ); + $msg = wfMsg( "ipusuccess", $ip ); $ipu->showList( $msg ); - } else if ( "submit" == $action ) { + } else if ( "submit" == $action && $wgRequest->wasPosted() ) { if ( ! $wgUser->isSysop() ) { $wgOut->sysopRequired(); return; @@ -25,50 +27,82 @@ function wfSpecialIpblocklist() } class IPUnblockForm { - + var $ip, $reason; + + function IPUnblockForm( $ip, $reason ) { + $this->ip = $ip; + $this->reason = $reason; + } + function showForm( $err ) { global $wgOut, $wgUser, $wgLang; - global $ip, $wpUnblockAddress; $wgOut->setPagetitle( wfMsg( "unblockip" ) ); $wgOut->addWikiText( wfMsg( "unblockiptext" ) ); - if ( ! $wpUnblockAddress ) { $wpUnblockAddress = $ip; } $ipa = wfMsg( "ipaddress" ); - $ipus = wfMsg( "ipusubmit" ); - $action = wfLocalUrlE( $wgLang->specialPage( "Ipblocklist" ), - "action=submit" ); + $ipr = wfMsg( "ipbreason" ); + $ipus = htmlspecialchars( wfMsg( "ipusubmit" ) ); + $titleObj = Title::makeTitle( NS_SPECIAL, "Ipblocklist" ); + $action = $titleObj->escapeLocalURL( "action=submit" ); if ( "" != $err ) { $wgOut->setSubtitle( wfMsg( "formerror" ) ); - $wgOut->addHTML( "

{$err}\n" ); + $wgOut->addHTML( "

{$err}

\n" ); } - $wgOut->addHTML( "

+ + $wgOut->addHTML( "

- - - -
{$ipa}: - -
  - -
+ + + + + + + + + + + + + +
{$ipa}: + ip ) . "\" /> +
{$ipr}: + reason ) . "\" /> +
  + +
\n" ); } - + function doSubmit() { global $wgOut, $wgUser, $wgLang; - global $ip, $wpUnblockAddress; - $fname = "IPUnblockForm::doSubmit"; - $sql = "DELETE FROM ipblocks WHERE ipb_address='{$wpUnblockAddress}'"; - wfQuery( $sql, $fname ); + $block = new Block(); + $this->ip = trim( $this->ip ); - $success = wfLocalUrl( $wgLang->specialPage( "Ipblocklist" ), - "action=success&ip={$wpUnblockAddress}" ); + if ( $this->ip{0} == "#" ) { + $block->mId = substr( $this->ip, 1 ); + } else { + $block->mAddress = $this->ip; + } + + # Delete block (if it exists) + # We should probably check for errors rather than just declaring success + $block->delete(); + + # Make log entry + $log = new LogPage( wfMsg( "blocklogpage" ), wfMsg( "blocklogtext" ) ); + $action = wfMsg( "unblocklogentry", $this->ip ); + $log->addEntry( $action, $this->reason ); + + # Report to the user + $titleObj = Title::makeTitle( NS_SPECIAL, "Ipblocklist" ); + $success = $titleObj->getFullURL( "action=success&ip=" . urlencode( $this->ip ) ); $wgOut->redirect( $success ); } @@ -86,29 +120,40 @@ class IPUnblockForm { } } -# Callback function +# Callback function to output a block function wfAddRow( $block, $tag ) { - global $wgOut, $wgUser, $wgLang, $ip; + global $wgOut, $wgUser, $wgLang; $sk = $wgUser->getSkin(); - $addr = $block->mAddress; - $name = User::whoIs( $block->mBy ); - $ulink = $sk->makeKnownLink( $wgLang->getNsText( Namespace::getUser() ). ":{$name}", $name ); - $d = $wgLang->timeanddate( $block->mTimestamp, true ); - $line = str_replace( "$1", $d, wfMsg( "blocklistline" ) ); - $line = str_replace( "$2", $ulink, $line ); - $line = str_replace( "$3", $block->mAddress, $line ); + # Hide addresses blocked by User::spreadBlocks, for privacy + $addr = $block->mAuto ? "#{$block->mId}" : $block->mAddress; + $name = User::whoIs( $block->mBy ); + $ulink = $sk->makeKnownLink( $wgLang->getNsText( Namespace::getUser() ). ":{$name}", $name ); + $formattedTime = $wgLang->timeanddate( $block->mTimestamp, true ); + + if ( $block->mExpiry === "" ) { + $formattedExpiry = "indefinite"; + } else { + $formattedExpiry = $wgLang->timeanddate( $block->mExpiry, true ); + } + + $line = wfMsg( "blocklistline", $formattedTime, $ulink, $addr, $formattedExpiry ); + $wgOut->addHTML( "
  • {$line}" ); - $clink = "specialPage( - "Contributions" ), "target={$addr}" ) . "\">" . - wfMsg( "contribslink" ) . ""; - $wgOut->addHTML( " ({$clink})" ); + + if ( !$block->mAuto ) { + $titleObj = Title::makeTitle( NS_SPECIAL, "Contributions" ); + $clink = "escapeLocalURL( "target={$block->mAddress}" ) . "\">" . + wfMsg( "contribslink" ) . ""; + $wgOut->addHTML( " ({$clink})" ); + } if ( $wgUser->isSysop() ) { - $ublink = "specialPage( - "Ipblocklist" ), "action=unblock&ip={$addr}" ) . "\">" . + $titleObj = Title::makeTitle( NS_SPECIAL, "Ipblocklist" ); + $ublink = "escapeLocalURL( "action=unblock&ip=" . urlencode( $addr ) ) . "\">" . wfMsg( "unblocklink" ) . ""; $wgOut->addHTML( " ({$ublink})" ); }