* API module that facilitates the unblocking of users. Requires API write mode
* to be enabled.
*
- * @addtogroup API
+ * @ingroup API
*/
class ApiUnblock extends ApiBase {
*/
public function execute() {
global $wgUser;
- $this->getMain()->requestWriteMode();
$params = $this->extractRequestParams();
if($params['gettoken'])
}
if(is_null($params['id']) && is_null($params['user']))
- $this->dieUsage('Either the id or the user parameter must be set', 'notarget');
+ $this->dieUsageMsg(array('unblock-notarget'));
if(!is_null($params['id']) && !is_null($params['user']))
- $this->dieUsage('The id and user parameters can\'t be used together', 'idanduser');
+ $this->dieUsageMsg(array('unblock-idanduser'));
if(is_null($params['token']))
- $this->dieUsage('The token parameter must be set', 'notoken');
+ $this->dieUsageMsg(array('missingparam', 'token'));
if(!$wgUser->matchEditToken($params['token']))
- $this->dieUsage('Invalid token', 'badtoken');
+ $this->dieUsageMsg(array('sessionfailure'));
if(!$wgUser->isAllowed('block'))
- $this->dieUsage('You don\'t have permission to unblock users', 'permissiondenied');
- if(wfReadOnly())
- $this->dieUsage('The wiki is in read-only mode', 'readonly');
+ $this->dieUsageMsg(array('cantunblock'));
$id = $params['id'];
$user = $params['user'];
- $reason = $params['reason'];
- $dbw = wfGetDb(DB_MASTER);
- $dbw->begin();
- $retval = IPUnblockForm::doUnblock(&$id, &$user, &$reason, &$range);
+ $reason = (is_null($params['reason']) ? '' : $params['reason']);
+ $retval = IPUnblockForm::doUnblock($id, $user, $reason, $range);
+ if($retval)
+ $this->dieUsageMsg($retval);
- switch($retval)
- {
- case IPUnblockForm::UNBLOCK_SUCCESS:
- break; // We'll deal with that later
- case IPUnblockForm::UNBLOCK_NO_SUCH_ID:
- $this->dieUsage("There is no block with ID ``$id''", 'nosuchid');
- case IPUnblockForm::UNBLOCK_USER_NOT_BLOCKED:
- $this->dieUsage("User ``$user'' is not blocked", 'notblocked');
- case IPUnblockForm::UNBLOCK_BLOCKED_AS_RANGE:
- $this->dieUsage("IP address ``$user'' was blocked as part of range ``$range''. You can't unblock the IP invidually, but you can unblock the range as a whole.", 'blockedasrange');
- case IPUnblockForm::UNBLOCK_UNKNOWNERR:
- $this->dieUsage("Unknown error", 'unknownerr');
- default:
- $this->dieDebug(__METHOD__, "IPBlockForm::doBlock() returned an unknown error ($retval)");
- }
- $dbw->commit();
-
- $res['id'] = $id;
+ $res['id'] = intval($id);
$res['user'] = $user;
$res['reason'] = $reason;
$this->getResult()->addValue(null, $this->getModuleName(), $res);
}
- protected function getAllowedParams() {
+ public function mustBePosted() { return true; }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getAllowedParams() {
return array (
'id' => null,
'user' => null,
);
}
- protected function getParamDescription() {
+ public function getParamDescription() {
return array (
'id' => 'ID of the block you want to unblock (obtained through list=blocks). Cannot be used together with user',
'user' => 'Username, IP address or IP range you want to unblock. Cannot be used together with id',
- 'token' => 'An unblock token previously obtained through the gettoken parameter',
+ 'token' => 'An unblock token previously obtained through the gettoken parameter or prop=info',
'gettoken' => 'If set, an unblock token will be returned, and no other action will be taken',
'reason' => 'Reason for unblock (optional)',
);
}
- protected function getDescription() {
+ public function getDescription() {
return array(
'Unblock a user.'
);