if ( !ContentHandler::getForModelID( $params['contentmodel'] )
->isSupportedFormat( $params['contentformat'] )
) {
- $this->dieUsage( "Unsupported content model/format", 'badmodelformat' );
+ $this->dieUsage( 'Unsupported content model/format', 'badmodelformat' );
}
// Trim and fix newlines so the key SHA1's match (see RequestContext::getText())
$baseRev->getId()
);
if ( !$editContent ) {
- $this->dieUsage( "Could not merge updated section.", 'replacefailed' );
+ $this->dieUsage( 'Could not merge updated section.', 'replacefailed' );
}
if ( $currentRev->getId() == $baseRev->getId() ) {
// Base revision was still the latest; nothing to merge
if ( !$content ) { // merge3() failed
$this->getResult()->addValue( null,
- $this->getModuleName(), array( 'status' => 'editconflict' ) );
+ $this->getModuleName(), [ 'status' => 'editconflict' ] );
return;
}
$status = 'busy';
}
- $this->getResult()->addValue( null, $this->getModuleName(), array( 'status' => $status ) );
+ $this->getResult()->addValue( null, $this->getModuleName(), [ 'status' => $status ] );
}
/**
if ( $editInfo && $editInfo->output ) {
$key = self::getStashKey( $page->getTitle(), $content, $user );
+ // Let extensions add ParserOutput metadata or warm other caches
+ Hooks::run( 'ParserOutputStashForEdit', [ $page, $content, $editInfo->output ] );
+
list( $stashInfo, $ttl ) = self::buildStashValue(
$editInfo->pstContent, $editInfo->output, $editInfo->timestamp
);
if ( $stashInfo ) {
$ok = $cache->set( $key, $stashInfo, $ttl );
if ( $ok ) {
+
$logger->debug( "Cached parser output for key '$key'." );
return self::ERROR_NONE;
} else {
$dbr = wfGetDB( DB_SLAVE );
- $templates = array(); // conditions to find changes/creations
+ $templates = []; // conditions to find changes/creations
$templateUses = 0; // expected existing templates
foreach ( $editInfo->output->getTemplateIds() as $ns => $stuff ) {
foreach ( $stuff as $dbkey => $revId ) {
if ( count( $templates ) ) {
$res = $dbr->select(
'page',
- array( 'ns' => 'page_namespace', 'dbk' => 'page_title', 'page_latest' ),
+ [ 'ns' => 'page_namespace', 'dbk' => 'page_title', 'page_latest' ],
$dbr->makeWhereFrom2d( $templates, 'page_namespace', 'page_title' ),
__METHOD__
);
}
}
- $files = array(); // conditions to find changes/creations
+ $files = []; // conditions to find changes/creations
foreach ( $editInfo->output->getFileSearchOptions() as $name => $options ) {
$files[$name] = (string)$options['sha1'];
}
if ( count( $files ) ) {
$res = $dbr->select(
'image',
- array( 'name' => 'img_name', 'img_sha1' ),
- array( 'img_name' => array_keys( $files ) ),
+ [ 'name' => 'img_name', 'img_sha1' ],
+ [ 'img_name' => array_keys( $files ) ],
__METHOD__
);
$changed = false;
* @return string
*/
protected static function getStashKey( Title $title, Content $content, User $user ) {
- $hash = sha1( implode( ':', array(
+ $hash = sha1( implode( ':', [
$content->getModel(),
$content->getDefaultFormat(),
sha1( $content->serialize( $content->getDefaultFormat() ) ),
$user->getId() ?: md5( $user->getName() ), // account for user parser options
$user->getId() ? $user->getDBTouched() : '-' // handle preference change races
- ) ) );
+ ] ) );
return wfMemcKey( 'prepared-edit', md5( $title->getPrefixedDBkey() ), $hash );
}
if ( $ttl > 0 && !$parserOutput->getFlag( 'vary-revision' ) ) {
// Only store what is actually needed
- $stashInfo = (object)array(
+ $stashInfo = (object)[
'pstContent' => $pstContent,
'output' => $parserOutput,
'timestamp' => $timestamp
- );
- return array( $stashInfo, $ttl );
+ ];
+ return [ $stashInfo, $ttl ];
}
- return array( null, 0 );
+ return [ null, 0 ];
}
public function getAllowedParams() {
- return array(
- 'title' => array(
+ return [
+ 'title' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => true
- ),
- 'section' => array(
+ ],
+ 'section' => [
ApiBase::PARAM_TYPE => 'string',
- ),
- 'sectiontitle' => array(
+ ],
+ 'sectiontitle' => [
ApiBase::PARAM_TYPE => 'string'
- ),
- 'text' => array(
+ ],
+ 'text' => [
ApiBase::PARAM_TYPE => 'text',
ApiBase::PARAM_REQUIRED => true
- ),
- 'contentmodel' => array(
+ ],
+ 'contentmodel' => [
ApiBase::PARAM_TYPE => ContentHandler::getContentModels(),
ApiBase::PARAM_REQUIRED => true
- ),
- 'contentformat' => array(
+ ],
+ 'contentformat' => [
ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
ApiBase::PARAM_REQUIRED => true
- ),
- 'baserevid' => array(
+ ],
+ 'baserevid' => [
ApiBase::PARAM_TYPE => 'integer',
ApiBase::PARAM_REQUIRED => true
- )
- );
+ ]
+ ];
}
- function needsToken() {
+ public function needsToken() {
return 'csrf';
}
- function mustBePosted() {
+ public function mustBePosted() {
return true;
}
- function isWriteMode() {
+ public function isWriteMode() {
return true;
}
- function isInternal() {
+ public function isInternal() {
return true;
}
}