X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FRevision%2FRevisionRenderer.php;h=265ad133a47d58d128193caa4332a1d77e766fa2;hb=8c5cb4b1a76cfef9cf4f62aac54ee537d59de560;hp=f71f9e71d7aa7d6dad6a53e9162253a887f5b00e;hpb=58f810a0dceb346b127fd0030be3922e05d8fdee;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Revision/RevisionRenderer.php b/includes/Revision/RevisionRenderer.php index f71f9e71d7..265ad133a4 100644 --- a/includes/Revision/RevisionRenderer.php +++ b/includes/Revision/RevisionRenderer.php @@ -24,7 +24,6 @@ namespace MediaWiki\Revision; use Html; use InvalidArgumentException; -use MediaWiki\Storage\RevisionRecord; use ParserOptions; use ParserOutput; use Psr\Log\LoggerInterface; @@ -65,6 +64,13 @@ class RevisionRenderer { $this->saveParseLogger = new NullLogger(); } + /** + * @param LoggerInterface $saveParseLogger + */ + public function setLogger( LoggerInterface $saveParseLogger ) { + $this->saveParseLogger = $saveParseLogger; + } + /** * @param RevisionRecord $rev * @param ParserOptions|null $options @@ -76,6 +82,11 @@ class RevisionRenderer { * - 'audience' the audience to use for content access. Default is * RevisionRecord::FOR_PUBLIC if $forUser is not set, RevisionRecord::FOR_THIS_USER * if $forUser is set. Can be set to RevisionRecord::RAW to disable audience checks. + * - 'known-revision-output' a combined ParserOutput for the revision, perhaps from + * some cache. the caller is responsible for ensuring that the ParserOutput indeed + * matched the $rev and $options. This mechanism is intended as a temporary stop-gap, + * for the time until caches have been changed to store RenderedRevision states instead + * of ParserOutput objects. * * @return RenderedRevision|null The rendered revision, or null if the audience checks fails. */ @@ -127,6 +138,10 @@ class RevisionRenderer { $renderedRevision->setSaveParseLogger( $this->saveParseLogger ); + if ( isset( $hints['known-revision-output'] ) ) { + $renderedRevision->setRevisionParserOutput( $hints['known-revision-output'] ); + } + return $renderedRevision; } @@ -165,15 +180,15 @@ class RevisionRenderer { $withHtml = $hints['generate-html'] ?? true; // short circuit if there is only the main slot - if ( array_keys( $slots ) === [ 'main' ] ) { - return $rrev->getSlotParserOutput( 'main' ); + if ( array_keys( $slots ) === [ SlotRecord::MAIN ] ) { + return $rrev->getSlotParserOutput( SlotRecord::MAIN ); } // TODO: put fancy layout logic here, see T200915. // move main slot to front - if ( isset( $slots['main'] ) ) { - $slots = [ 'main' => $slots['main'] ] + $slots; + if ( isset( $slots[SlotRecord::MAIN] ) ) { + $slots = [ SlotRecord::MAIN => $slots[SlotRecord::MAIN] ] + $slots; } $combinedOutput = new ParserOutput( null );