MediaWiki REL1_31
TextContent.php
Go to the documentation of this file.
1<?php
36
40 protected $mText;
41
47 public function __construct( $text, $model_id = CONTENT_MODEL_TEXT ) {
48 parent::__construct( $model_id );
49
50 if ( $text === null || $text === false ) {
51 wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
52 . "This may indicate an error in the caller's scope.", 2 );
53
54 $text = '';
55 }
56
57 if ( !is_string( $text ) ) {
58 throw new MWException( "TextContent expects a string in the constructor." );
59 }
60
61 $this->mText = $text;
62 }
63
69 public function copy() {
70 return $this; # NOTE: this is ok since TextContent are immutable.
71 }
72
73 public function getTextForSummary( $maxlength = 250 ) {
74 global $wgContLang;
75
76 $text = $this->getNativeData();
77
78 $truncatedtext = $wgContLang->truncate(
79 preg_replace( "/[\n\r]/", ' ', $text ),
80 max( 0, $maxlength ) );
81
82 return $truncatedtext;
83 }
84
90 public function getSize() {
91 $text = $this->getNativeData();
92
93 return strlen( $text );
94 }
95
105 public function isCountable( $hasLinks = null ) {
107
108 if ( $this->isRedirect() ) {
109 return false;
110 }
111
112 if ( $wgArticleCountMethod === 'any' ) {
113 return true;
114 }
115
116 return false;
117 }
118
124 public function getNativeData() {
125 return $this->mText;
126 }
127
133 public function getTextForSearchIndex() {
134 return $this->getNativeData();
135 }
136
145 public function getWikitextForTransclusion() {
146 $wikitext = $this->convert( CONTENT_MODEL_WIKITEXT, 'lossy' );
147
148 if ( $wikitext ) {
149 return $wikitext->getNativeData();
150 } else {
151 return false;
152 }
153 }
154
168 public static function normalizeLineEndings( $text ) {
169 return str_replace( [ "\r\n", "\r" ], "\n", rtrim( $text ) );
170 }
171
184 public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
185 $text = $this->getNativeData();
186 $pst = self::normalizeLineEndings( $text );
187
188 return ( $text === $pst ) ? $this : new static( $pst, $this->getModel() );
189 }
190
203 public function diff( Content $that, Language $lang = null ) {
204 global $wgContLang;
205
206 $this->checkModelID( $that->getModel() );
207
208 // @todo could implement this in DifferenceEngine and just delegate here?
209
210 if ( !$lang ) {
212 }
213
214 $otext = $this->getNativeData();
215 $ntext = $that->getNativeData();
216
217 # Note: Use native PHP diff, external engines don't give us abstract output
218 $ota = explode( "\n", $lang->segmentForDiff( $otext ) );
219 $nta = explode( "\n", $lang->segmentForDiff( $ntext ) );
220
221 $diff = new Diff( $ota, $nta );
222
223 return $diff;
224 }
225
243 protected function fillParserOutput( Title $title, $revId,
245 ) {
247
248 if ( in_array( $this->getModel(), $wgTextModelsToParse ) ) {
249 // parse just to get links etc into the database, HTML is replaced below.
250 $output = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
251 }
252
253 if ( $generateHtml ) {
254 $html = $this->getHtml();
255 } else {
256 $html = '';
257 }
258
259 $output->setText( $html );
260 }
261
275 protected function getHtml() {
276 return $this->getHighlightHtml();
277 }
278
295 protected function getHighlightHtml() {
296 return htmlspecialchars( $this->getNativeData() );
297 }
298
312 public function convert( $toModel, $lossy = '' ) {
313 $converted = parent::convert( $toModel, $lossy );
314
315 if ( $converted !== false ) {
316 return $converted;
317 }
318
319 $toHandler = ContentHandler::getForModelID( $toModel );
320
321 if ( $toHandler instanceof TextContentHandler ) {
322 // NOTE: ignore content serialization format - it's just text anyway.
323 $text = $this->getNativeData();
324 $converted = $toHandler->unserializeContent( $text );
325 }
326
327 return $converted;
328 }
329
330}
$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.
$wgParser
Definition Setup.php:917
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.
Internationalisation code.
Definition Language.php:35
MediaWiki exception.
Set options of the Parser.
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
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:39
The User object encapsulates all of the user-specific settings (user_id, name, rights,...
Definition User.php:53
this class mediates it Skin Encapsulates a look and feel for the wiki All of the functions that render HTML and make choices about how to render it are here and are called from various other places when and is meant to be subclassed with other skins that may override some of its functions The User object contains a reference to a and so rather than having a global skin object we just rely on the global User and get the skin with $wgUser and also has some character encoding functions and other locale stuff The current user interface language is instantiated as and the local content language as $wgContLang
Definition design.txt:57
static configuration should be added through ResourceLoaderGetConfigVars instead can be used to get the real title after the basic globals have been set but before ordinary actions take place $output
Definition hooks.txt:2255
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
Definition hooks.txt:2001
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses just before the function returns a value If you return an< a > element with HTML attributes $attribs and contents $html will be returned If you return $ret will be returned and may include noclasses & $html
Definition hooks.txt:2013
const CONTENT_MODEL_WIKITEXT
Definition Defines.php:245
const CONTENT_MODEL_TEXT
Definition Defines.php:248
Base interface for content objects.
Definition Content.php:34
if(!isset( $args[0])) $lang