[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |