MediaWiki  1.34.0
GadgetDefinitionContent.php
Go to the documentation of this file.
1 <?php
24 
25  public function __construct( $text ) {
26  parent::__construct( $text, 'GadgetDefinition' );
27  }
28 
29  public function isValid() {
30  // parent::isValid() is called in validate()
31  return $this->validate()->isOK();
32  }
33 
41  public function beautifyJSON() {
42  // @todo we should normalize entries in module.scripts and module.styles
43  return FormatJson::encode( $this->getAssocArray(), "\t", FormatJson::UTF8_OK );
44  }
45 
55  protected function fillParserOutput( Title $title, $revId,
56  ParserOptions $options, $generateHtml, ParserOutput &$output
57  ) {
58  parent::fillParserOutput( $title, $revId, $options, $generateHtml, $output );
59  $assoc = $this->getAssocArray();
60  foreach ( [ 'scripts', 'styles' ] as $type ) {
61  foreach ( $assoc['module'][$type] as $page ) {
62  $title = Title::makeTitleSafe( NS_GADGET, $page );
63  if ( $title ) {
64  $output->addLink( $title );
65  }
66  }
67  }
68  }
69 
73  public function validate() {
74  if ( !parent::isValid() ) {
75  return $this->getData();
76  }
77 
78  $validator = new GadgetDefinitionValidator();
79  return $validator->validate( $this->getAssocArray() );
80  }
81 
89  public function getAssocArray() {
90  $info = wfObjectToArray( $this->getData()->getValue() );
92  $handler = $this->getContentHandler();
93  $info = wfArrayPlus2d( $info, $handler->getDefaultMetadata() );
94 
95  return $info;
96  }
97 
103  public function getDeletionUpdates( WikiPage $page, ParserOutput $parserOutput = null ) {
104  return array_merge(
105  parent::getDeletionUpdates( $page, $parserOutput ),
106  [ new GadgetDefinitionDeletionUpdate( $page->getTitle() ) ]
107  );
108  }
109 
117  public function getSecondaryDataUpdates( Title $title, Content $old = null,
118  $recursive = true, ParserOutput $parserOutput = null
119  ) {
120  return array_merge(
121  parent::getSecondaryDataUpdates( $title, $old, $recursive, $parserOutput ),
123  );
124  }
125 }
ParserOptions
Set options of the Parser.
Definition: ParserOptions.php:42
ParserOutput
Definition: ParserOutput.php:25
GadgetDefinitionContent\beautifyJSON
beautifyJSON()
Pretty-print JSON.
Definition: GadgetDefinitionContent.php:41
GadgetDefinitionContent\__construct
__construct( $text)
Definition: GadgetDefinitionContent.php:25
wfArrayPlus2d
wfArrayPlus2d(array $baseArray, array $newValues)
Merges two (possibly) 2 dimensional arrays into the target array ($baseArray).
Definition: GlobalFunctions.php:3066
wfObjectToArray
wfObjectToArray( $objOrArray, $recursive=true)
Recursively converts the parameter (an object) to an array with the same data.
Definition: GlobalFunctions.php:230
WikiPage
Class representing a MediaWiki article and history.
Definition: WikiPage.php:47
GadgetDefinitionContent\validate
validate()
Definition: GadgetDefinitionContent.php:73
GadgetDefinitionContent\getDeletionUpdates
getDeletionUpdates(WikiPage $page, ParserOutput $parserOutput=null)
Definition: GadgetDefinitionContent.php:103
FormatJson\UTF8_OK
const UTF8_OK
Skip escaping most characters above U+007F for readability and compactness.
Definition: FormatJson.php:34
GadgetDefinitionContent\getSecondaryDataUpdates
getSecondaryDataUpdates(Title $title, Content $old=null, $recursive=true, ParserOutput $parserOutput=null)
Definition: GadgetDefinitionContent.php:117
FormatJson\encode
static encode( $value, $pretty=false, $escaping=0)
Returns the JSON representation of a value.
Definition: FormatJson.php:115
JsonContent
Represents the content of a JSON content.
Definition: JsonContent.php:15
AbstractContent\getContentHandler
getContentHandler()
Definition: AbstractContent.php:88
GadgetDefinitionDeletionUpdate
DataUpdate to run whenever a page in the Gadget definition is deleted.
Definition: GadgetDefinitionDeletionUpdate.php:29
GadgetDefinitionContent\getAssocArray
getAssocArray()
Get the JSON content as an associative array with all fields filled out, populating defaults as neces...
Definition: GadgetDefinitionContent.php:89
WikiPage\getTitle
getTitle()
Get the title object of the article.
Definition: WikiPage.php:298
$title
$title
Definition: testCompression.php:34
$output
$output
Definition: SyntaxHighlight.php:335
Title\makeTitleSafe
static makeTitleSafe( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:613
GadgetDefinitionContent\fillParserOutput
fillParserOutput(Title $title, $revId, ParserOptions $options, $generateHtml, ParserOutput &$output)
Register some links.
Definition: GadgetDefinitionContent.php:55
GadgetDefinitionContent
Definition: GadgetDefinitionContent.php:23
GadgetDefinitionContent\isValid
isValid()
Definition: GadgetDefinitionContent.php:29
GadgetDefinitionValidator
Class responsible for validating Gadget definition contents.
Definition: GadgetDefinitionValidator.php:8
GadgetDefinitionSecondaryDataUpdate
Definition: GadgetDefinitionSecondaryDataUpdate.php:26
JsonContent\getData
getData()
Decodes the JSON string.
Definition: JsonContent.php:39
Content
Base interface for content objects.
Definition: Content.php:34
Title
Represents a title within MediaWiki.
Definition: Title.php:42
$type
$type
Definition: testCompression.php:48