mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-12-01 00:56:26 +00:00
ad4ea2c79c
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
86 lines
2.1 KiB
PHP
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$';
|
|
}
|
|
}
|