From d81f562b712f2387fa02290bf2ca86392ab356f2 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 11 Oct 2006 20:21:25 +0000 Subject: Aktualisierung auf Version 1.8.1 --- includes/SpecialBlockip.php | 70 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 11 deletions(-) (limited to 'includes/SpecialBlockip.php') diff --git a/includes/SpecialBlockip.php b/includes/SpecialBlockip.php index b3f67ab1..4eb4957a 100644 --- a/includes/SpecialBlockip.php +++ b/includes/SpecialBlockip.php @@ -46,6 +46,15 @@ class IPBlockForm { $this->BlockReason = $wgRequest->getText( 'wpBlockReason' ); $this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg('ipbotheroption') ); $this->BlockOther = $wgRequest->getVal( 'wpBlockOther', '' ); + $this->BlockAnonOnly = $wgRequest->getBool( 'wpAnonOnly' ); + + # Unchecked checkboxes are not included in the form data at all, so having one + # that is true by default is a bit tricky + if ( $wgRequest->wasPosted() ) { + $this->BlockCreateAccount = $wgRequest->getBool( 'wpCreateAccount', false ); + } else { + $this->BlockCreateAccount = $wgRequest->getBool( 'wpCreateAccount', true ); + } } function showForm( $err ) { @@ -102,7 +111,7 @@ class IPBlockForm { {$mIpaddress}: - + "); @@ -133,13 +142,36 @@ class IPBlockForm {   - + " . wfCheckLabel( wfMsg( 'ipbanononly' ), + 'wpAnonOnly', 'wpAnonOnly', $this->BlockAnonOnly, + array( 'tabindex' => 4 ) ) . " + + + +   + + " . wfCheckLabel( wfMsg( 'ipbcreateaccount' ), + 'wpCreateAccount', 'wpCreateAccount', $this->BlockCreateAccount, + array( 'tabindex' => 5 ) ) . " + + + +   + + \n" ); + $user = User::newFromName( $this->BlockAddress ); + if( is_object( $user ) ) { + $this->showLogFragment( $wgOut, $user->getUserPage() ); + } elseif( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $this->BlockAddress ) ) { + $this->showLogFragment( $wgOut, Title::makeTitle( NS_USER, $this->BlockAddress ) ); + } + } function doSubmit() { @@ -166,8 +198,12 @@ class IPBlockForm { } else { # Username block if ( $wgSysopUserBans ) { - $userId = User::idFromName( $this->BlockAddress ); - if ( $userId == 0 ) { + $user = User::newFromName( $this->BlockAddress ); + if( !is_null( $user ) && $user->getID() ) { + # Use canonical name + $this->BlockAddress = $user->getName(); + $userId = $user->getID(); + } else { $this->showForm( wfMsg( 'nosuchusershort', htmlspecialchars( $this->BlockAddress ) ) ); return; } @@ -188,7 +224,7 @@ class IPBlockForm { } if ( $expirestr == 'infinite' || $expirestr == 'indefinite' ) { - $expiry = ''; + $expiry = Block::infinity(); } else { # Convert GNU-style date, on error returns -1 for PHP <5.1 and false for PHP >=5.1 $expiry = strtotime( $expirestr ); @@ -199,20 +235,24 @@ class IPBlockForm { } $expiry = wfTimestamp( TS_MW, $expiry ); - } # 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 ); + $block = new Block( $this->BlockAddress, $userId, $wgUser->getID(), + $this->BlockReason, wfTimestampNow(), 0, $expiry, $this->BlockAnonOnly, + $this->BlockCreateAccount ); - if (wfRunHooks('BlockIp', array(&$ban, &$wgUser))) { + if (wfRunHooks('BlockIp', array(&$block, &$wgUser))) { - $ban->insert(); + if ( !$block->insert() ) { + $this->showForm( wfMsg( 'ipb_already_blocked', + htmlspecialchars( $this->BlockAddress ) ) ); + return; + } - wfRunHooks('BlockIpComplete', array($ban, $wgUser)); + wfRunHooks('BlockIpComplete', array($block, $wgUser)); # Make log entry $log = new LogPage( 'block' ); @@ -234,6 +274,14 @@ class IPBlockForm { $text = wfMsg( 'blockipsuccesstext', $this->BlockAddress ); $wgOut->addWikiText( $text ); } + + function showLogFragment( &$out, &$title ) { + $out->addHtml( wfElement( 'h2', NULL, LogPage::logName( 'block' ) ) ); + $request = new FauxRequest( array( 'page' => $title->getPrefixedText(), 'type' => 'block' ) ); + $viewer = new LogViewer( new LogReader( $request ) ); + $viewer->showList( $out ); + } + } ?> -- cgit v1.2.3-54-g00ecf