Refactor redundant attrib dropping into new method
[lhc/web/wiklou.git] / includes / api / ApiUnblock.php
index a09c19a..b36b3b4 100644 (file)
@@ -31,7 +31,7 @@ if (!defined('MEDIAWIKI')) {
  * API module that facilitates the unblocking of users. Requires API write mode
  * to be enabled.
  *
- * @addtogroup API
+ * @ingroup API
  */
 class ApiUnblock extends ApiBase {
 
@@ -44,7 +44,6 @@ class ApiUnblock extends ApiBase {
         */
        public function execute() {
                global $wgUser;
-               $this->getMain()->requestWriteMode();
                $params = $this->extractRequestParams();
 
                if($params['gettoken'])
@@ -55,49 +54,36 @@ class ApiUnblock extends ApiBase {
                }
 
                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,
@@ -107,17 +93,17 @@ class ApiUnblock extends ApiBase {
                );
        }
 
-       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.'
                );