MediaWiki  master
SlotDiffRenderer.php
Go to the documentation of this file.
1 <?php
23 use Wikimedia\Assert\Assert;
24 
40 abstract class SlotDiffRenderer {
41 
50  abstract public function getDiff( Content $oldContent = null, Content $newContent = null );
51 
57  public function addModules( OutputPage $output ) {
58  }
59 
65  public function getExtraCacheKeys() {
66  return [];
67  }
68 
78  protected function normalizeContents(
79  Content &$oldContent = null, Content &$newContent = null, $allowedClasses = null
80  ) {
81  if ( !$oldContent && !$newContent ) {
82  throw new InvalidArgumentException( '$oldContent and $newContent cannot both be null' );
83  }
84 
85  if ( $allowedClasses ) {
86  if ( is_array( $allowedClasses ) ) {
87  $allowedClasses = implode( '|', $allowedClasses );
88  }
89  Assert::parameterType( $allowedClasses . '|null', $oldContent, '$oldContent' );
90  Assert::parameterType( $allowedClasses . '|null', $newContent, '$newContent' );
91  }
92 
93  if ( !$oldContent ) {
94  $oldContent = $newContent->getContentHandler()->makeEmptyContent();
95  } elseif ( !$newContent ) {
96  $newContent = $oldContent->getContentHandler()->makeEmptyContent();
97  }
98  }
99 
100 }
SlotDiffRenderer\getExtraCacheKeys
getExtraCacheKeys()
Return any extra keys to split the diff cache by.
Definition: SlotDiffRenderer.php:65
SlotDiffRenderer\addModules
addModules(OutputPage $output)
Add modules needed for correct styling/behavior of the diff.
Definition: SlotDiffRenderer.php:57
SlotDiffRenderer\normalizeContents
normalizeContents(Content &$oldContent=null, Content &$newContent=null, $allowedClasses=null)
Helper method to normalize the input of getDiff().
Definition: SlotDiffRenderer.php:78
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:35
SlotDiffRenderer
Renders a diff for a single slot (that is, a diff between two content objects).
Definition: SlotDiffRenderer.php:40