MediaWiki REL1_34
TextContent.php
Go to the documentation of this file.
1<?php
29
38
42 protected $mText;
43
49 public function __construct( $text, $model_id = CONTENT_MODEL_TEXT ) {
50 parent::__construct( $model_id );
51
52 if ( $text === null || $text === false ) {
53 wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
54 . "This may indicate an error in the caller's scope.", 2 );
55
56 $text = '';
57 }
58
59 if ( !is_string( $text ) ) {
60 throw new MWException( "TextContent expects a string in the constructor." );
61 }
62
63 $this->mText = $text;
64 }
65
71 public function copy() {
72 return $this; # NOTE: this is ok since TextContent are immutable.
73 }
74
75 public function getTextForSummary( $maxlength = 250 ) {
76 $text = $this->getText();
77
78 $truncatedtext = MediaWikiServices::getInstance()->getContentLanguage()->
79 truncateForDatabase( preg_replace( "/[\n\r]/", ' ', $text ), max( 0, $maxlength ) );
80
81 return $truncatedtext;
82 }
83
89 public function getSize() {
90 $text = $this->getText();
91
92 return strlen( $text );
93 }
94
104 public function isCountable( $hasLinks = null ) {
106
107 if ( $this->isRedirect() ) {
108 return false;
109 }
110
111 if ( $wgArticleCountMethod === 'any' ) {
112 return true;
113 }
114
115 return false;
116 }
117
125 public function getNativeData() {
126 return $this->getText();
127 }
128
136 public function getText() {
137 return $this->mText;
138 }
139
145 public function getTextForSearchIndex() {
146 return $this->getText();
147 }
148
157 public function getWikitextForTransclusion() {
159 $wikitext = $this->convert( CONTENT_MODEL_WIKITEXT, 'lossy' );
160 '@phan-var WikitextContent $wikitext';
161
162 if ( $wikitext ) {
163 return $wikitext->getText();
164 } else {
165 return false;
166 }
167 }
168
182 public static function normalizeLineEndings( $text ) {
183 return str_replace( [ "\r\n", "\r" ], "\n", rtrim( $text ) );
184 }
185
198 public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
199 $text = $this->getText();
200 $pst = self::normalizeLineEndings( $text );
201
202 return ( $text === $pst ) ? $this : new static( $pst, $this->getModel() );
203 }
204
217 public function diff( Content $that, Language $lang = null ) {
218 $this->checkModelID( $that->getModel() );
220 '@phan-var self $that';
221 // @todo could implement this in DifferenceEngine and just delegate here?
222
223 if ( !$lang ) {
224 $lang = MediaWikiServices::getInstance()->getContentLanguage();
225 }
226
227 $otext = $this->getText();
228 $ntext = $that->getText();
229
230 # Note: Use native PHP diff, external engines don't give us abstract output
231 $ota = explode( "\n", $lang->segmentForDiff( $otext ) );
232 $nta = explode( "\n", $lang->segmentForDiff( $ntext ) );
233
234 $diff = new Diff( $ota, $nta );
235
236 return $diff;
237 }
238
256 protected function fillParserOutput( Title $title, $revId,
257 ParserOptions $options, $generateHtml, ParserOutput &$output
258 ) {
260
261 if ( in_array( $this->getModel(), $wgTextModelsToParse ) ) {
262 // parse just to get links etc into the database, HTML is replaced below.
263 $output = MediaWikiServices::getInstance()->getParser()
264 ->parse( $this->getText(), $title, $options, true, true, $revId );
265 }
266
267 if ( $generateHtml ) {
268 $html = $this->getHtml();
269 } else {
270 $html = '';
271 }
272
273 $output->clearWrapperDivClass();
274 $output->setText( $html );
275 }
276
290 protected function getHtml() {
291 return $this->getHighlightHtml();
292 }
293
310 protected function getHighlightHtml() {
311 return htmlspecialchars( $this->getText() );
312 }
313
327 public function convert( $toModel, $lossy = '' ) {
328 $converted = parent::convert( $toModel, $lossy );
329
330 if ( $converted !== false ) {
331 return $converted;
332 }
333
334 $toHandler = ContentHandler::getForModelID( $toModel );
335
336 if ( $toHandler instanceof TextContentHandler ) {
337 // NOTE: ignore content serialization format - it's just text anyway.
338 $text = $this->getText();
339 $converted = $toHandler->unserializeContent( $text );
340 }
341
342 return $converted;
343 }
344
345}
$wgArticleCountMethod
Method used to determine if a page in a content namespace should be counted as a valid article.
$wgTextModelsToParse
Determines which types of text are parsed as wikitext.
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
Base implementation for content objects.
checkModelID( $modelId)
$model_id
Name of the content model this Content object represents.
Class representing a 'diff' between two sequences of strings.
Definition Diff.php:32
Internationalisation code.
Definition Language.php:37
MediaWiki exception.
MediaWikiServices is the service locator for the application scope of MediaWiki.
Set options of the Parser.
clearWrapperDivClass()
Clears the CSS class to use for the wrapping div, effectively disabling the wrapper div until addWrap...
Base content handler implementation for flat text contents.
Content object implementation for representing flat text.
fillParserOutput(Title $title, $revId, ParserOptions $options, $generateHtml, ParserOutput &$output)
Fills the provided ParserOutput object with information derived from the content.
isCountable( $hasLinks=null)
Returns true if this content is not a redirect, and $wgArticleCountMethod is "any".
getSize()
Returns the text's size in bytes.
__construct( $text, $model_id=CONTENT_MODEL_TEXT)
preSaveTransform(Title $title, User $user, ParserOptions $popts)
Returns a Content object with pre-save transformations applied.
getWikitextForTransclusion()
Returns attempts to convert this content object to wikitext, and then returns the text string.
convert( $toModel, $lossy='')
This implementation provides lossless conversion between content models based on TextContent.
getHighlightHtml()
Generates an HTML version of the content, for display.
string $mText
getText()
Returns the text represented by this Content object, as a string.
getHtml()
Generates an HTML version of the content, for display.
getNativeData()
Returns the text represented by this Content object, as a string.
diff(Content $that, Language $lang=null)
Diff this content object with another content object.
getTextForSearchIndex()
Returns the text represented by this Content object, as a string.
getTextForSummary( $maxlength=250)
Returns a textual representation of the content suitable for use in edit summaries and log messages.
static normalizeLineEndings( $text)
Do a "\\r\\n" -> "\\n" and "\\r" -> "\\n" transformation as well as trim trailing whitespace.
Represents a title within MediaWiki.
Definition Title.php:42
The User object encapsulates all of the user-specific settings (user_id, name, rights,...
Definition User.php:51
const CONTENT_MODEL_WIKITEXT
Definition Defines.php:224
const CONTENT_MODEL_TEXT
Definition Defines.php:227
Base interface for content objects.
Definition Content.php:34
getModel()
Returns the ID of the content model used by this Content object.
if(!isset( $args[0])) $lang