<?php
/**
- * API for MediaWiki 1.14+
- *
- * Created on Sep 2, 2008
- *
- * Copyright © 2008 Chad Horohoe
- *
* 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
* the Free Software Foundation; either version 2 of the License, or
* @file
*/
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
/**
* API interface for page purging
* Purges the cache of a page
*/
public function execute() {
- $main = $this->getMain();
- if ( !$main->isInternalMode() && !$main->getRequest()->wasPosted() ) {
- $this->logFeatureUsage( 'purge-via-GET' );
- $this->setWarning( 'Use of action=purge via GET is deprecated. Use POST instead.' );
- }
-
$params = $this->extractRequestParams();
$continuationManager = new ApiContinuationManager( $this, [], [] );
ApiQueryBase::addTitleInfo( $r, $title );
$page = WikiPage::factory( $title );
if ( !$user->pingLimiter( 'purge' ) ) {
- $flags = WikiPage::PURGE_ALL;
- if ( !$this->getRequest()->wasPosted() ) {
- $flags ^= WikiPage::PURGE_GLOBAL_PCACHE; // skip DB_MASTER write
- }
// Directly purge and skip the UI part of purge()
- $page->doPurge( $flags );
+ $page->doPurge();
$r['purged'] = true;
} else {
- $error = $this->parseMsg( [ 'actionthrottledtext' ] );
- $this->setWarning( $error['info'] );
+ $this->addWarning( 'apierror-ratelimited' );
}
if ( $forceLinkUpdate || $forceRecursiveLinkUpdate ) {
$updates = $content->getSecondaryDataUpdates(
$title, null, $forceRecursiveLinkUpdate, $p_result );
foreach ( $updates as $update ) {
+ $update->setCause( 'api-purge', $this->getUser()->getName() );
DeferredUpdates::addUpdate( $update, DeferredUpdates::PRESEND );
}
$r['linkupdate'] = true;
if ( $enableParserCache ) {
- $pcache = ParserCache::singleton();
+ $pcache = MediaWikiServices::getInstance()->getParserCache();
$pcache->save( $p_result, $page, $popts );
}
}
} else {
- $error = $this->parseMsg( [ 'actionthrottledtext' ] );
- $this->setWarning( $error['info'] );
+ $this->addWarning( 'apierror-ratelimited' );
$forceLinkUpdate = false;
}
}
}
public function mustBePosted() {
- // Anonymous users are not allowed a non-POST request
- return !$this->getUser()->isAllowed( 'purge' );
- }
-
- protected function getHelpFlags() {
- $flags = parent::getHelpFlags();
-
- // Claim that we must be posted for the purposes of help and paraminfo.
- // @todo Remove this when self::mustBePosted() is updated for T145649
- if ( !in_array( 'mustbeposted', $flags, true ) ) {
- $flags[] = 'mustbeposted';
- }
-
- return $flags;
+ return true;
}
public function getAllowedParams( $flags = 0 ) {
}
public function getHelpUrls() {
- return 'https://www.mediawiki.org/wiki/API:Purge';
+ return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Purge';
}
}