Esempio n. 1
0
 /**
  * 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);
 }