X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/banques/?a=blobdiff_plain;f=includes%2Fapi%2FApiUndelete.php;h=ffecc0ef7a024a5fe58ba310fb807d6a7fd1a0fd;hb=e6faa2fd76040d1cbadc6e439ecf51f8f4e52bd4;hp=4cdf34743af6f64567565d031c696f1a7c99161c;hpb=e90d1ecd975e5afb097d94fe91eaecc1ff816346;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiUndelete.php b/includes/api/ApiUndelete.php index 4cdf34743a..ffecc0ef7a 100644 --- a/includes/api/ApiUndelete.php +++ b/includes/api/ApiUndelete.php @@ -1,10 +1,10 @@ .@home.nl + * Copyright © 2007 Roan Kattouw ".@gmail.com" * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,15 +18,12 @@ * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html + * + * @file */ -if ( !defined( 'MEDIAWIKI' ) ) { - // Eclipse helper - will be ignored in production - require_once( "ApiBase.php" ); -} - /** * @ingroup API */ @@ -37,20 +34,14 @@ class ApiUndelete extends ApiBase { } public function execute() { - global $wgUser; $params = $this->extractRequestParams(); - $titleObj = null; - if ( !isset( $params['title'] ) ) { - $this->dieUsageMsg( array( 'missingparam', 'title' ) ); + if ( !$this->getUser()->isAllowed( 'undelete' ) ) { + $this->dieUsageMsg( 'permdenied-undelete' ); } - if ( !$wgUser->isAllowed( 'undelete' ) ) { - $this->dieUsageMsg( array( 'permdenied-undelete' ) ); - } - - if ( $wgUser->isBlocked() ) { - $this->dieUsageMsg( array( 'blockedtext' ) ); + if ( $this->getUser()->isBlocked() ) { + $this->dieUsageMsg( 'blockedtext' ); } $titleObj = Title::newFromText( $params['title'] ); @@ -70,16 +61,14 @@ class ApiUndelete extends ApiBase { } $pa = new PageArchive( $titleObj ); - $dbw = wfGetDB( DB_MASTER ); - $dbw->begin(); $retval = $pa->undelete( ( isset( $params['timestamps'] ) ? $params['timestamps'] : array() ), $params['reason'] ); if ( !is_array( $retval ) ) { - $this->dieUsageMsg( array( 'cannotundelete' ) ); + $this->dieUsageMsg( 'cannotundelete' ); } if ( $retval[1] ) { wfRunHooks( 'FileUndeleteComplete', - array( $titleObj, array(), $wgUser, $params['reason'] ) ); + array( $titleObj, array(), $this->getUser(), $params['reason'] ) ); } $this->setWatch( $params['watchlist'], $titleObj ); @@ -87,7 +76,7 @@ class ApiUndelete extends ApiBase { $info['title'] = $titleObj->getPrefixedText(); $info['revisions'] = intval( $retval[0] ); $info['fileversions'] = intval( $retval[1] ); - $info['reason'] = intval( $retval[2] ); + $info['reason'] = $retval[2]; $this->getResult()->addValue( null, $this->getModuleName(), $info ); } @@ -101,11 +90,15 @@ class ApiUndelete extends ApiBase { public function getAllowedParams() { return array( - 'title' => null, + 'title' => array( + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true + ), 'token' => null, 'reason' => '', 'timestamps' => array( - ApiBase::PARAM_ISMULTI => true + ApiBase::PARAM_TYPE => 'timestamp', + ApiBase::PARAM_ISMULTI => true, ), 'watchlist' => array( ApiBase::PARAM_DFLT => 'preferences', @@ -121,14 +114,25 @@ class ApiUndelete extends ApiBase { public function getParamDescription() { return array( - 'title' => 'Title of the page you want to restore.', + 'title' => 'Title of the page you want to restore', 'token' => 'An undelete token previously retrieved through list=deletedrevs', - 'reason' => 'Reason for restoring (optional)', + 'reason' => 'Reason for restoring', 'timestamps' => 'Timestamps of the revisions to restore. If not set, all revisions will be restored.', 'watchlist' => 'Unconditionally add or remove the page from your watchlist, use preferences or do not change watch', ); } + public function getResultProperties() { + return array( + '' => array( + 'title' => 'string', + 'revisions' => 'integer', + 'filerevisions' => 'integer', + 'reason' => 'string' + ) + ); + } + public function getDescription() { return array( 'Restore certain revisions of a deleted page. A list of deleted revisions (including timestamps) can be', @@ -138,7 +142,6 @@ class ApiUndelete extends ApiBase { public function getPossibleErrors() { return array_merge( parent::getPossibleErrors(), array( - array( 'missingparam', 'title' ), array( 'permdenied-undelete' ), array( 'blockedtext' ), array( 'invalidtitle', 'title' ), @@ -146,17 +149,25 @@ class ApiUndelete extends ApiBase { ) ); } + public function needsToken() { + return true; + } + public function getTokenSalt() { return ''; } - protected function getExamples() { + public function getExamples() { return array( 'api.php?action=undelete&title=Main%20Page&token=123ABC&reason=Restoring%20main%20page', 'api.php?action=undelete&title=Main%20Page&token=123ABC×tamps=20070703220045|20070702194856' ); } + public function getHelpUrls() { + return 'https://www.mediawiki.org/wiki/API:Undelete'; + } + public function getVersion() { return __CLASS__ . ': $Id$'; }