[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/api/ -> ApiUnblock.php (source)

   1  <?php
   2  /**
   3   *
   4   *
   5   * Created on Sep 7, 2007
   6   *
   7   * Copyright © 2007 Roan Kattouw "<Firstname>.<Lastname>@gmail.com"
   8   *
   9   * This program is free software; you can redistribute it and/or modify
  10   * it under the terms of the GNU General Public License as published by
  11   * the Free Software Foundation; either version 2 of the License, or
  12   * (at your option) any later version.
  13   *
  14   * This program is distributed in the hope that it will be useful,
  15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17   * GNU General Public License for more details.
  18   *
  19   * You should have received a copy of the GNU General Public License along
  20   * with this program; if not, write to the Free Software Foundation, Inc.,
  21   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  22   * http://www.gnu.org/copyleft/gpl.html
  23   *
  24   * @file
  25   */
  26  
  27  /**
  28   * API module that facilitates the unblocking of users. Requires API write mode
  29   * to be enabled.
  30   *
  31   * @ingroup API
  32   */
  33  class ApiUnblock extends ApiBase {
  34  
  35      /**
  36       * Unblocks the specified user or provides the reason the unblock failed.
  37       */
  38  	public function execute() {
  39          $user = $this->getUser();
  40          $params = $this->extractRequestParams();
  41  
  42          if ( is_null( $params['id'] ) && is_null( $params['user'] ) ) {
  43              $this->dieUsageMsg( 'unblock-notarget' );
  44          }
  45          if ( !is_null( $params['id'] ) && !is_null( $params['user'] ) ) {
  46              $this->dieUsageMsg( 'unblock-idanduser' );
  47          }
  48  
  49          if ( !$user->isAllowed( 'block' ) ) {
  50              $this->dieUsageMsg( 'cantunblock' );
  51          }
  52          # bug 15810: blocked admins should have limited access here
  53          if ( $user->isBlocked() ) {
  54              $status = SpecialBlock::checkUnblockSelf( $params['user'], $user );
  55              if ( $status !== true ) {
  56                  $this->dieUsageMsg( $status );
  57              }
  58          }
  59  
  60          $data = array(
  61              'Target' => is_null( $params['id'] ) ? $params['user'] : "#{$params['id']}",
  62              'Reason' => $params['reason']
  63          );
  64          $block = Block::newFromTarget( $data['Target'] );
  65          $retval = SpecialUnblock::processUnblock( $data, $this->getContext() );
  66          if ( $retval !== true ) {
  67              $this->dieUsageMsg( $retval[0] );
  68          }
  69  
  70          $res['id'] = $block->getId();
  71          $target = $block->getType() == Block::TYPE_AUTO ? '' : $block->getTarget();
  72          $res['user'] = $target instanceof User ? $target->getName() : $target;
  73          $res['userid'] = $target instanceof User ? $target->getId() : 0;
  74          $res['reason'] = $params['reason'];
  75          $this->getResult()->addValue( null, $this->getModuleName(), $res );
  76      }
  77  
  78  	public function mustBePosted() {
  79          return true;
  80      }
  81  
  82  	public function isWriteMode() {
  83          return true;
  84      }
  85  
  86  	public function getAllowedParams() {
  87          return array(
  88              'id' => array(
  89                  ApiBase::PARAM_TYPE => 'integer',
  90              ),
  91              'user' => null,
  92              'reason' => '',
  93          );
  94      }
  95  
  96  	public function getParamDescription() {
  97          $p = $this->getModulePrefix();
  98  
  99          return array(
 100              'id' => "ID of the block you want to unblock (obtained through list=blocks). " .
 101                  "Cannot be used together with {$p}user",
 102              'user' => "Username, IP address or IP range you want to unblock. " .
 103                  "Cannot be used together with {$p}id",
 104              'reason' => 'Reason for unblock',
 105          );
 106      }
 107  
 108  	public function getDescription() {
 109          return 'Unblock a user.';
 110      }
 111  
 112  	public function needsToken() {
 113          return 'csrf';
 114      }
 115  
 116  	public function getExamples() {
 117          return array(
 118              'api.php?action=unblock&id=105',
 119              'api.php?action=unblock&user=Bob&reason=Sorry%20Bob'
 120          );
 121      }
 122  
 123  	public function getHelpUrls() {
 124          return 'https://www.mediawiki.org/wiki/API:Block';
 125      }
 126  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1