MediaWiki  master
SlotDiffRenderer.php
Go to the documentation of this file.
1 <?php
23 use Wikimedia\Assert\Assert;
24 
39 abstract class SlotDiffRenderer {
40 
49  abstract public function getDiff( Content $oldContent = null, Content $newContent = null );
50 
55  public function addModules( OutputPage $output ) {
56  }
57 
62  public function getExtraCacheKeys() {
63  return [];
64  }
65 
75  protected function normalizeContents(
76  Content &$oldContent = null, Content &$newContent = null, $allowedClasses = null
77  ) {
78  if ( !$oldContent && !$newContent ) {
79  throw new InvalidArgumentException( '$oldContent and $newContent cannot both be null' );
80  }
81 
82  if ( $allowedClasses ) {
83  if ( is_array( $allowedClasses ) ) {
84  $allowedClasses = implode( '|', $allowedClasses );
85  }
86  Assert::parameterType( $allowedClasses . '|null', $oldContent, '$oldContent' );
87  Assert::parameterType( $allowedClasses . '|null', $newContent, '$newContent' );
88  }
89 
90  if ( !$oldContent ) {
91  $oldContent = $newContent->getContentHandler()->makeEmptyContent();
92  } elseif ( !$newContent ) {
93  $newContent = $oldContent->getContentHandler()->makeEmptyContent();
94  }
95  }
96 
97 }
SlotDiffRenderer\getExtraCacheKeys
getExtraCacheKeys()
Return any extra keys to split the diff cache by.
Definition: SlotDiffRenderer.php:62
SlotDiffRenderer\addModules
addModules(OutputPage $output)
Add modules needed for correct styling/behavior of the diff.
Definition: SlotDiffRenderer.php:55
SlotDiffRenderer\normalizeContents
normalizeContents(Content &$oldContent=null, Content &$newContent=null, $allowedClasses=null)
Helper method to normalize the input of getDiff().
Definition: SlotDiffRenderer.php:75
SlotDiffRenderer\getDiff
getDiff(Content $oldContent=null, Content $newContent=null)
Get a diff between two content objects.
OutputPage
This is one of the Core classes and should be read at least once by any new developers.
Definition: OutputPage.php:47
Content
Base interface for content objects.
Definition: Content.php:34
SlotDiffRenderer
Renders a diff for a single slot (that is, a diff between two content objects).
Definition: SlotDiffRenderer.php:39