MediaWiki REL1_37
TextContentHandler.php
Go to the documentation of this file.
1<?php
27
34
35 public function __construct( $modelId = CONTENT_MODEL_TEXT, $formats = [ CONTENT_FORMAT_TEXT ] ) {
36 parent::__construct( $modelId, $formats );
37 }
38
47 public function serializeContent( Content $content, $format = null ) {
48 $this->checkFormat( $format );
49
50 // @phan-suppress-next-line PhanUndeclaredMethod
51 return $content->getText();
52 }
53
69 public function merge3( Content $oldContent, Content $myContent, Content $yourContent ) {
70 $this->checkModelID( $oldContent->getModel() );
71 $this->checkModelID( $myContent->getModel() );
72 $this->checkModelID( $yourContent->getModel() );
73
74 $format = $this->getDefaultFormat();
75
76 $old = $this->serializeContent( $oldContent, $format );
77 $mine = $this->serializeContent( $myContent, $format );
78 $yours = $this->serializeContent( $yourContent, $format );
79
80 $ok = wfMerge( $old, $mine, $yours, $result );
81
82 if ( !$ok ) {
83 return false;
84 }
85
86 if ( !$result ) {
87 return $this->makeEmptyContent();
88 }
89
90 $mergedContent = $this->unserializeContent( $result, $format );
91
92 return $mergedContent;
93 }
94
104 protected function getContentClass() {
105 return TextContent::class;
106 }
107
118 public function unserializeContent( $text, $format = null ) {
119 $this->checkFormat( $format );
120
121 $class = $this->getContentClass();
122 return new $class( $text );
123 }
124
132 public function makeEmptyContent() {
133 $class = $this->getContentClass();
134 return new $class( '' );
135 }
136
142 public function supportsDirectEditing() {
143 return true;
144 }
145
146 public function getFieldsForSearchIndex( SearchEngine $engine ) {
147 $fields = parent::getFieldsForSearchIndex( $engine );
148 $fields['language'] =
149 $engine->makeSearchFieldMapping( 'language', SearchIndexField::INDEX_TYPE_KEYWORD );
150
151 return $fields;
152 }
153
154 public function getDataForSearchIndex(
155 WikiPage $page,
156 ParserOutput $output,
157 SearchEngine $engine
158 ) {
159 $fields = parent::getDataForSearchIndex( $page, $output, $engine );
160 $fields['language'] =
161 $this->getPageLanguage( $page->getTitle(), $page->getContent() )->getCode();
162 return $fields;
163 }
164
165 public function preSaveTransform(
167 PreSaveTransformParams $pstParams
168 ): Content {
169 $shouldCallDeprecatedMethod = $this->shouldCallDeprecatedContentTransformMethod(
170 $content,
171 $pstParams
172 );
173
174 if ( $shouldCallDeprecatedMethod ) {
175 return $this->callDeprecatedContentPST(
176 $content,
177 $pstParams
178 );
179 }
180
181 '@phan-var TextContent $content';
182
183 $text = $content->getText();
184
185 $pst = TextContent::normalizeLineEndings( $text );
186
187 $contentClass = $this->getContentClass();
188 return ( $text === $pst ) ? $content : new $contentClass( $pst, $content->getModel() );
189 }
190}
const CONTENT_FORMAT_TEXT
For future use, e.g.
Definition Defines.php:230
const CONTENT_MODEL_TEXT
Definition Defines.php:211
wfMerge( $old, $mine, $yours, &$result, &$mergeAttemptResult=null)
wfMerge attempts to merge differences between three texts.
A content handler knows how do deal with a specific type of content on a wiki page.
checkModelID( $model_id)
checkFormat( $format)
Convenient for checking whether a format provided as a parameter is actually supported.
shouldCallDeprecatedContentTransformMethod(Content $content, $params)
Check if we need to provide content overrides deprecated Content method.
getPageLanguage(Title $title, Content $content=null)
Get the language in which the content of the given page is written.
getDefaultFormat()
The format used for serialization/deserialization by default by this ContentHandler.
callDeprecatedContentPST(Content $content, PreSaveTransformParams $params)
Provided content overrides deprecated Content::preSaveTransform, call it and return.
Contain a class for special pages.
makeSearchFieldMapping( $name, $type)
Create a search field definition.
Base content handler implementation for flat text contents.
unserializeContent( $text, $format=null)
Unserializes a Content object of the type supported by this ContentHandler.
getDataForSearchIndex(WikiPage $page, ParserOutput $output, SearchEngine $engine)
Return fields to be indexed by search engine as representation of this document.
serializeContent(Content $content, $format=null)
Returns the content's text as-is.
getContentClass()
Returns the name of the associated Content class, to be used when creating new objects.
__construct( $modelId=CONTENT_MODEL_TEXT, $formats=[CONTENT_FORMAT_TEXT])
Constructor, initializing the ContentHandler instance with its model ID and a list of supported forma...
getFieldsForSearchIndex(SearchEngine $engine)
Get fields definition for search index.
makeEmptyContent()
Creates an empty TextContent object.
merge3(Content $oldContent, Content $myContent, Content $yourContent)
Attempts to merge differences between three versions.
preSaveTransform(Content $content, PreSaveTransformParams $pstParams)
Returns a $content object with pre-save transformations applied (or the same object if no transformat...
Class representing a MediaWiki article and history.
Definition WikiPage.php:60
getContent( $audience=RevisionRecord::FOR_PUBLIC, Authority $performer=null)
Get the content of the current revision.
Definition WikiPage.php:837
getTitle()
Get the title object of the article.
Definition WikiPage.php:311
Base interface for content objects.
Definition Content.php:35
getModel()
Returns the ID of the content model used by this Content object.
$content
Definition router.php:76