mediawiki-extensions-AbuseF.../api/ApiAbuseFilterUnblockAutopromote.php
Brad Jorsch ad4ea2c79c Update token handling for core API change
Core change I2793a3f2 changes API handling in a way that needs updates
to extensions for proper operation:
* needsToken() now returns a string
* Most custom token types are being replaced with a 'csrf' token (the
  former 'edit' token); any others need a new hook.
* All tokens must use a static salt. Compat with web UI using non-static
  tokens is supported and also serves to handle the now-deprecated token
  fetching.
* Documentation in getParamDescription() should return a string (not
  array) for 'token', as the signal to core that it should be replaced
  with a standardized message.

When compatibility with earlier versions of MediaWiki is no longer
maintained, the entry for 'token' from getAllowedParams() and
getParamDescription() may be removed, as may getTokenSalt(). This patch
leaves them in place.

Note this is intended to be compatible with earlier versions of
MediaWiki, and so should be safe to merge before the core change.

Change-Id: Ie1f483e2d0fd97d6ff5b2b953aa6390c35c75ee7
2014-08-09 16:27:19 +01:00

86 lines
2.1 KiB
PHP

<?php
class ApiAbuseFilterUnblockAutopromote extends ApiBase {
public function execute() {
if ( !$this->getUser()->isAllowed( 'abusefilter-modify' ) ) {
$this->dieUsage( 'You do not have permissions to unblock autopromotion', 'permissiondenied' );
}
$params = $this->extractRequestParams();
$user = User::newFromName( $params['user'] );
if ( $user === false ) {
// Oh god this is so bad but this message uses GENDER
$msg = wfMessage( 'abusefilter-reautoconfirm-none', $params['user'] )->text();
$this->dieUsage( $msg, 'notsuspended' );
}
global $wgMemc;
$key = AbuseFilter::autoPromoteBlockKey( $user );
if ( !$wgMemc->get( $key ) ) {
// Same as above :(
$msg = wfMessage( 'abusefilter-reautoconfirm-none', $params['user'] )->text();
$this->dieUsage( $msg, 'notsuspended' );
}
$wgMemc->delete( $key );
$res = array( 'user' => $params['user'] );
$this->getResult()->addValue( null, $this->getModuleName(), $res );
}
public function mustBePosted() {
return true;
}
public function isWriteMode() {
return true;
}
public function getAllowedParams() {
return array(
'user' => array(
ApiBase::PARAM_REQUIRED => true
),
'token' => null,
);
}
public function getParamDescription() {
return array(
'user' => 'Username of the user you want to unblock',
'token' => 'An edit token',
);
}
public function getDescription() {
return 'Unblocks a user from receiving autopromotions due to an abusefilter consequence';
}
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
array( 'code' => 'notsuspended', 'info' => 'That user has not had their autoconfirmed status suspended'),
array( 'code' => 'permissiondenied', 'info' => 'You do not have permissions to unblock autopromotion' ),
) );
}
public function needsToken() {
return 'csrf';
}
public function getTokenSalt() {
return '';
}
public function getExamples() {
return array(
"api.php?action=abusefilterunblockautopromote&user=Bob&token=%2B\\"
);
}
public function getVersion() {
return __CLASS__ . ': $Id$';
}
}