Page MenuHomeWickedGov Phorge

ApiCentralNoticeCdnCacheUpdateBanner.php
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

ApiCentralNoticeCdnCacheUpdateBanner.php

<?php
use MediaWiki\Api\ApiBase;
use MediaWiki\Api\ApiMain;
use MediaWiki\Deferred\DeferredUpdates;
use MediaWiki\Languages\LanguageNameUtils;
/**
* Module for the centralnoticecdncacheupdatebanner Web API. Used by a background call
* via JS from Special:CentralNoticeBanners, to purge banner content from the front-end
* cache, for a user-specified language.
*/
class ApiCentralNoticeCdnCacheUpdateBanner extends ApiBase {
/** @var LanguageNameUtils */
private $languageNameUtils;
/**
* @param ApiMain $mainModule
* @param string $moduleName
* @param LanguageNameUtils $languageNameUtils
*/
public function __construct(
ApiMain $mainModule,
string $moduleName,
LanguageNameUtils $languageNameUtils
) {
parent::__construct( $mainModule, $moduleName );
$this->languageNameUtils = $languageNameUtils;
}
/**
* @inheritDoc
*/
public function execute() {
$params = $this->extractRequestParams();
$langCode = $params[ 'language' ];
$bannerName = $params[ 'banner' ];
if ( !$this->getUser()->isAllowed( 'centralnotice-admin' ) ) {
$this->dieWithError( 'apierror-centralnotice-cdn-permissions-error' );
}
if ( !$this->languageNameUtils->isValidCode( $langCode ) ) {
$this->dieWithError( 'apierror-centralnotice-cdn-lang-code-error' );
}
if ( !Banner::isValidBannerName( $bannerName ) ) {
$this->dieWithError( 'apierror-centralnotice-cdn-banner-name-error' );
}
// Get the banner object
$banner = Banner::fromName( $bannerName );
if ( !$banner->exists() ) {
$this->dieWithError( 'apierror-centralnotice-cdn-banner-not-found' );
}
// Deferred update to purge CDN caches for banner content
DeferredUpdates::addUpdate(
new CdnCacheUpdateBannerLoader( $langCode, $banner ),
DeferredUpdates::PRESEND
);
$this->getResult()->addValue( null, $this->getModuleName(), 'update_requested' );
}
/**
* @inheritDoc
*/
public function getAllowedParams() {
return [
'banner' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => true
],
'language' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => true
]
];
}
/**
* @inheritDoc
*/
public function needsToken() {
return 'csrf';
}
/**
* @inheritDoc
*/
protected function getExamplesMessages() {
return [
'action=centralnoticecdncacheupdatebanner&token=ABC123&banner=Banner1&language=en'
=> 'apihelp-centralnoticecdncacheupdatebanner-example-1'
];
}
}

File Metadata

Mime Type
text/x-php
Expires
Fri, Jul 3, 17:52 (23 h, 26 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
8c/08/9ec5a7e4588b9b448921e7b8ef4b
Default Alt Text
ApiCentralNoticeCdnCacheUpdateBanner.php (2 KB)

Event Timeline