MediaWiki  master
DifferenceEngineSlotDiffRenderer.php
Go to the documentation of this file.
1 <?php
32 
35 
37  $this->differenceEngine = clone $differenceEngine;
38 
39  // Set state to loaded. This should not matter to any of the methods invoked by
40  // the adapter, but just in case a load does get triggered somehow, make sure it's a no-op.
41  $fakeContent = ContentHandler::getForModelID( CONTENT_MODEL_WIKITEXT )->makeEmptyContent();
42  $this->differenceEngine->setContent( $fakeContent, $fakeContent );
43 
44  $this->differenceEngine->markAsSlotDiffRenderer();
45  }
46 
48  public function getDiff( Content $oldContent = null, Content $newContent = null ) {
49  $this->normalizeContents( $oldContent, $newContent );
50  return $this->differenceEngine->generateContentDiffBody( $oldContent, $newContent );
51  }
52 
53  public function addModules( OutputPage $output ) {
54  $oldContext = null;
55  if ( $output !== $this->differenceEngine->getOutput() ) {
56  $oldContext = $this->differenceEngine->getContext();
57  $newContext = new DerivativeContext( $oldContext );
58  $newContext->setOutput( $output );
59  $this->differenceEngine->setContext( $newContext );
60  }
61  $this->differenceEngine->showDiffStyle();
62  if ( $oldContext ) {
63  $this->differenceEngine->setContext( $oldContext );
64  }
65  }
66 
67  public function getExtraCacheKeys() {
68  return $this->differenceEngine->getExtraCacheKeys();
69  }
70 
71 }
DifferenceEngine is responsible for rendering the difference between two revisions as HTML...
const CONTENT_MODEL_WIKITEXT
Definition: Defines.php:215
getDiff(Content $oldContent=null, Content $newContent=null)
An IContextSource implementation which will inherit context from another source but allow individual ...
normalizeContents(Content &$oldContent=null, Content &$newContent=null, $allowedClasses=null)
Helper method to normalize the input of getDiff().
B/C adapter for turning a DifferenceEngine into a SlotDiffRenderer.
static getForModelID( $modelId)
Returns the ContentHandler singleton for the given model ID.
Renders a diff for a single slot (that is, a diff between two content objects).
__construct(DifferenceEngine $differenceEngine)