/** * Blocks the user specified in the parameters for the given expiry, with the * given reason, and with all other settings provided in the params. If the block * succeeds, produces a result containing the details of the block and notice * of success. If it fails, the result will specify the nature of the error. */ public function execute() { global $wgUser, $wgBlockAllowsUTEdit; $params = $this->extractRequestParams(); if ($params['gettoken']) { $res['blocktoken'] = $wgUser->editToken(); $this->getResult()->addValue(null, $this->getModuleName(), $res); return; } if (is_null($params['user'])) { $this->dieUsageMsg(array('missingparam', 'user')); } if (is_null($params['token'])) { $this->dieUsageMsg(array('missingparam', 'token')); } if (!$wgUser->matchEditToken($params['token'])) { $this->dieUsageMsg(array('sessionfailure')); } if (!$wgUser->isAllowed('block')) { $this->dieUsageMsg(array('cantblock')); } if ($params['hidename'] && !$wgUser->isAllowed('hideuser')) { $this->dieUsageMsg(array('canthide')); } if ($params['noemail'] && !$wgUser->isAllowed('blockemail')) { $this->dieUsageMsg(array('cantblock-email')); } $form = new IPBlockForm(''); $form->BlockAddress = $params['user']; $form->BlockReason = is_null($params['reason']) ? '' : $params['reason']; $form->BlockReasonList = 'other'; $form->BlockExpiry = $params['expiry'] == 'never' ? 'infinite' : $params['expiry']; $form->BlockOther = ''; $form->BlockAnonOnly = $params['anononly']; $form->BlockCreateAccount = $params['nocreate']; $form->BlockEnableAutoblock = $params['autoblock']; $form->BlockEmail = $params['noemail']; $form->BlockHideName = $params['hidename']; $form->BlockAllowUsertalk = $params['allowusertalk'] && $wgBlockAllowsUTEdit; $form->BlockReblock = $params['reblock']; $userID = $expiry = null; $retval = $form->doBlock($userID, $expiry); if (count($retval)) { // We don't care about multiple errors, just report one of them $this->dieUsageMsg($retval); } $res['user'] = $params['user']; $res['userID'] = intval($userID); $res['expiry'] = $expiry == Block::infinity() ? 'infinite' : wfTimestamp(TS_ISO_8601, $expiry); $res['reason'] = $params['reason']; if ($params['anononly']) { $res['anononly'] = ''; } if ($params['nocreate']) { $res['nocreate'] = ''; } if ($params['autoblock']) { $res['autoblock'] = ''; } if ($params['noemail']) { $res['noemail'] = ''; } if ($params['hidename']) { $res['hidename'] = ''; } if ($params['allowusertalk']) { $res['allowusertalk'] = ''; } $this->getResult()->addValue(null, $this->getModuleName(), $res); }
/** * Blocks the user specified in the parameters for the given expiry, with the * given reason, and with all other settings provided in the params. If the block * succeeds, produces a result containing the details of the block and notice * of success. If it fails, the result will specify the nature of the error. */ public function execute() { global $wgUser; $this->getMain()->requestWriteMode(); $params = $this->extractRequestParams(); if ($params['gettoken']) { $res['blocktoken'] = $wgUser->editToken(); $this->getResult()->addValue(null, $this->getModuleName(), $res); return; } if (is_null($params['user'])) { $this->dieUsageMsg(array('missingparam', 'user')); } if (is_null($params['token'])) { $this->dieUsageMsg(array('missingparam', 'token')); } if (!$wgUser->matchEditToken($params['token'])) { $this->dieUsageMsg(array('sessionfailure')); } if (!$wgUser->isAllowed('block')) { $this->dieUsageMsg(array('cantblock')); } if ($params['hidename'] && !$wgUser->isAllowed('hideuser')) { $this->dieUsageMsg(array('canthide')); } if ($params['noemail'] && !$wgUser->isAllowed('blockemail')) { $this->dieUsageMsg(array('cantblock-email')); } if (wfReadOnly()) { $this->dieUsageMsg(array('readonlytext')); } $form = new IPBlockForm(''); $form->BlockAddress = $params['user']; $form->BlockReason = is_null($params['reason']) ? '' : $params['reason']; $form->BlockReasonList = 'other'; $form->BlockExpiry = $params['expiry'] == 'never' ? 'infinite' : $params['expiry']; $form->BlockOther = ''; $form->BlockAnonOnly = $params['anononly']; $form->BlockCreateAccount = $params['nocreate']; $form->BlockEnableAutoBlock = $params['autoblock']; $form->BlockEmail = $params['noemail']; $form->BlockHideName = $params['hidename']; $dbw = wfGetDb(DB_MASTER); $dbw->begin(); $retval = $form->doBlock($userID, $expiry); if (!empty($retval)) { // We don't care about multiple errors, just report one of them $this->dieUsageMsg($retval); } $dbw->commit(); $res['user'] = $params['user']; $res['userID'] = $userID; $res['expiry'] = $expiry == Block::infinity() ? 'infinite' : $expiry; $res['reason'] = $params['reason']; if ($params['anononly']) { $res['anononly'] = ''; } if ($params['nocreate']) { $res['nocreate'] = ''; } if ($params['autoblock']) { $res['autoblock'] = ''; } if ($params['noemail']) { $res['noemail'] = ''; } if ($params['hidename']) { $res['hidename'] = ''; } $this->getResult()->addValue(null, $this->getModuleName(), $res); }