MediaWiki  REL1_31
ContentHandler Class Reference

A content handler knows how do deal with a specific type of content on a wiki page. More...

Inheritance diagram for ContentHandler:
Collaboration diagram for ContentHandler:

Public Member Functions

 __construct ( $modelId, $formats)
 Constructor, initializing the ContentHandler instance with its model ID and a list of supported formats. More...
 
 canBeUsedOn (Title $title)
 Determines whether the content type handled by this ContentHandler can be used on the given page. More...
 
 createDifferenceEngine (IContextSource $context, $old=0, $new=0, $rcid=0, $refreshCache=false, $unhide=false)
 Factory for creating an appropriate DifferenceEngine for this content model. More...
 
 exportTransform ( $blob, $format=null)
 Applies transformations on export (returns the blob unchanged per default). More...
 
 getActionOverrides ()
 Returns overrides for action handlers. More...
 
 getAutoDeleteReason (Title $title, &$hasHistory)
 Auto-generates a deletion reason. More...
 
 getAutosummary (Content $oldContent=null, Content $newContent=null, $flags=0)
 Return an applicable auto-summary if one exists for the given edit. More...
 
 getChangeTag (Content $oldContent=null, Content $newContent=null, $flags=0)
 Return an applicable tag if one exists for the given edit or return null. More...
 
 getDataForSearchIndex (WikiPage $page, ParserOutput $output, SearchEngine $engine)
 Return fields to be indexed by search engine as representation of this document. More...
 
 getDefaultFormat ()
 The format used for serialization/deserialization by default by this ContentHandler. More...
 
 getFieldsForSearchIndex (SearchEngine $engine)
 Get fields definition for search index. More...
 
 getModelID ()
 Returns the model id that identifies the content model this ContentHandler can handle. More...
 
 getPageLanguage (Title $title, Content $content=null)
 Get the language in which the content of the given page is written. More...
 
 getPageViewLanguage (Title $title, Content $content=null)
 Get the language in which the content of this page is written when viewed by user. More...
 
 getParserOutputForIndexing (WikiPage $page, ParserCache $cache=null)
 Produce page output suitable for indexing. More...
 
 getSupportedFormats ()
 Returns a list of serialization formats supported by the serializeContent() and unserializeContent() methods of this ContentHandler. More...
 
 getUndoContent (Revision $current, Revision $undo, Revision $undoafter)
 Get the Content object that needs to be saved in order to undo all revisions between $undo and $undoafter. More...
 
 importTransform ( $blob, $format=null)
 Apply import transformation (per default, returns $blob unchanged). More...
 
 isParserCacheSupported ()
 Returns true for content models that support caching using the ParserCache mechanism. More...
 
 isSupportedFormat ( $format)
 Returns true if $format is a serialization format supported by this ContentHandler, and false otherwise. More...
 
 makeEmptyContent ()
 Creates an empty Content object of the type supported by this ContentHandler. More...
 
 makeParserOptions ( $context)
 Get parser options suitable for rendering and caching the article. More...
 
 makeRedirectContent (Title $destination, $text='')
 Creates a new Content object that acts as a redirect to the given page, or null if redirects are not supported by this content model. More...
 
 merge3 (Content $oldContent, Content $myContent, Content $yourContent)
 Attempts to merge differences between three versions. More...
 
 serializeContent (Content $content, $format=null)
 Serializes a Content object of the type supported by this ContentHandler. More...
 
 supportsCategories ()
 Returns true if this content model supports categories. More...
 
 supportsDirectApiEditing ()
 Whether or not this content model supports direct editing via ApiEditPage. More...
 
 supportsDirectEditing ()
 Return true if this content model supports direct editing, such as via EditPage. More...
 
 supportsRedirects ()
 Returns true if this content model supports redirects. More...
 
 supportsSections ()
 Returns true if this content model supports sections. More...
 
 unserializeContent ( $blob, $format=null)
 Unserializes a Content object of the type supported by this ContentHandler. More...
 

Static Public Member Functions

static cleanupHandlersCache ()
 Clean up handlers cache. More...
 
static getAllContentFormats ()
 
static getContentModels ()
 
static getContentText (Content $content=null)
 Convenience function for getting flat text from a Content object. More...
 
static getDefaultModelFor (Title $title)
 Returns the name of the default content model to be used for the page with the given title. More...
 
static getForContent (Content $content)
 Returns the appropriate ContentHandler singleton for the given Content object. More...
 
static getForModelID ( $modelId)
 Returns the ContentHandler singleton for the given model ID. More...
 
static getForTitle (Title $title)
 Returns the appropriate ContentHandler singleton for the given title. More...
 
static getLocalizedName ( $name, Language $lang=null)
 Returns the localized name for a given content model. More...
 
static makeContent ( $text, Title $title=null, $modelId=null, $format=null)
 Convenience function for creating a Content object from a given textual representation. More...
 

Protected Member Functions

 addSearchField (&$fields, SearchEngine $engine, $name, $type)
 Add new field definition to array. More...
 
 checkFormat ( $format)
 Convenient for checking whether a format provided as a parameter is actually supported. More...
 
 checkModelID ( $model_id)
 
 getDiffEngineClass ()
 Returns the name of the diff engine to use. More...
 

Protected Attributes

string $mModelID
 
string[] $mSupportedFormats
 

Static Protected Attributes

static array $handlers
 A Cache of ContentHandler instances by model id. More...
 

Private Member Functions

 getChangeType (Content $oldContent=null, Content $newContent=null, $flags=0)
 Return type of change if one exists for the given edit. More...
 

Detailed Description

A content handler knows how do deal with a specific type of content on a wiki page.

Content is stored in the database in a serialized form (using a serialization format a.k.a. MIME type) and is unserialized into its native PHP representation (the content model), which is wrapped in an instance of the appropriate subclass of Content.

ContentHandler instances are stateless singletons that serve, among other things, as a factory for Content objects. Generally, there is one subclass of ContentHandler and one subclass of Content for every type of content model.

Some content types have a flat model, that is, their native representation is the same as their serialized form. Examples would be JavaScript and CSS code. As of now, this also applies to wikitext (MediaWiki's default content type), but wikitext content may be represented by a DOM or AST structure in the future.

Definition at line 49 of file ContentHandler.php.

Constructor & Destructor Documentation

◆ __construct()

ContentHandler::__construct (   $modelId,
  $formats 
)

Constructor, initializing the ContentHandler instance with its model ID and a list of supported formats.

Values for the parameters are typically provided as literals by subclass's constructors.

Parameters
string$modelId(use CONTENT_MODEL_XXX constants).
string[]$formatsList for supported serialization formats (typically as MIME types)

Reimplemented in TextContentHandler, and DummyContentHandlerForTesting.

Definition at line 412 of file ContentHandler.php.

Member Function Documentation

◆ addSearchField()

ContentHandler::addSearchField ( $fields,
SearchEngine  $engine,
  $name,
  $type 
)
protected

Add new field definition to array.

Parameters
SearchIndexField[]&$fields
SearchEngine$engine
string$name
int$type
Returns
SearchIndexField[] new field defs
Since
1.28

Definition at line 1263 of file ContentHandler.php.

References $engine, $name, and $type.

◆ canBeUsedOn()

ContentHandler::canBeUsedOn ( Title  $title)

Determines whether the content type handled by this ContentHandler can be used on the given page.

This default implementation always returns true. Subclasses may override this to restrict the use of this content model to specific locations, typically based on the namespace or some other aspect of the title, such as a special suffix (e.g. ".svg" for SVG content).

Note
this calls the ContentHandlerCanBeUsedOn hook which may be used to override which content model can be used where.
Parameters
Title$titleThe page's title.
Returns
bool True if content of this kind can be used on the given page, false otherwise.

Definition at line 727 of file ContentHandler.php.

References getModelID(), and Hooks\run().

◆ checkFormat()

ContentHandler::checkFormat (   $format)
protected

Convenient for checking whether a format provided as a parameter is actually supported.

Parameters
string$formatThe serialization format to check
Exceptions
MWExceptionIf the format is not supported by this content handler.

Definition at line 585 of file ContentHandler.php.

References getModelID(), and isSupportedFormat().

Referenced by TextContentHandler\serializeContent(), TextContentHandler\unserializeContent(), and RevisionTestModifyableContentHandler\unserializeContent().

◆ checkModelID()

ContentHandler::checkModelID (   $model_id)
protected
Since
1.21
Parameters
string$model_idThe model to check
Exceptions
MWExceptionIf the model ID is not the ID of the content model supported by this ContentHandler.

Definition at line 521 of file ContentHandler.php.

Referenced by getAutoDeleteReason(), getUndoContent(), and TextContentHandler\merge3().

◆ cleanupHandlersCache()

static ContentHandler::cleanupHandlersCache ( )
static

Clean up handlers cache.

Definition at line 338 of file ContentHandler.php.

◆ createDifferenceEngine()

ContentHandler::createDifferenceEngine ( IContextSource  $context,
  $old = 0,
  $new = 0,
  $rcid = 0,
  $refreshCache = false,
  $unhide = false 
)

Factory for creating an appropriate DifferenceEngine for this content model.

Since
1.21
Parameters
IContextSource$contextContext to use, anything else will be ignored.
int$oldRevision ID we want to show and diff with.
int | string$newEither a revision ID or one of the strings 'cur', 'prev' or 'next'.
int$rcidFIXME: Deprecated, no longer used. Defaults to 0.
bool$refreshCacheIf set, refreshes the diff cache. Defaults to false.
bool$unhideIf set, allow viewing deleted revs. Defaults to false.
Returns
DifferenceEngine

Definition at line 627 of file ContentHandler.php.

References $context, $differenceEngine, $refreshCache, $unhide, getDiffEngineClass(), and Hooks\run().

◆ exportTransform()

ContentHandler::exportTransform (   $blob,
  $format = null 
)

Applies transformations on export (returns the blob unchanged per default).

Subclasses may override this to perform transformations such as conversion of legacy formats or filtering of internal meta-data.

Parameters
string$blobThe blob to be exported
string | null$formatThe blob's serialization format
Returns
string

Reimplemented in MediaWiki\Tests\Maintenance\BackupTextPassTestModelHandler.

Definition at line 439 of file ContentHandler.php.

References $blob.

◆ getActionOverrides()

ContentHandler::getActionOverrides ( )

Returns overrides for action handlers.

Classes listed here will be used instead of the default one when (and only when) $wgActions[$action] === true. This allows subclasses to override the default action handlers.

Since
1.21
Returns
array An array mapping action names (typically "view", "edit", "history" etc.) to either the full qualified class name of an Action class, a callable taking ( Page $page, IContextSource $context = null ) as parameters and returning an Action object, or an actual Action object. An empty array in this default implementation.
See also
Action::factory

Definition at line 609 of file ContentHandler.php.

◆ getAllContentFormats()

◆ getAutoDeleteReason()

ContentHandler::getAutoDeleteReason ( Title  $title,
$hasHistory 
)

Auto-generates a deletion reason.

Since
1.21
Parameters
Title$titleThe page's title
bool&$hasHistoryWhether the page has a history
Returns
mixed String containing deletion reason or empty string, or boolean false if no revision occurred
Todo:
&$hasHistory is extremely ugly, it's here because WikiPage::getAutoDeleteReason() and Article::generateReason() have it / want it.

Definition at line 965 of file ContentHandler.php.

References $dbr, $res, $rev, $revQuery, $title, as, checkModelID(), DB_REPLICA, Revision\DELETED_USER, Title\getArticleID(), Revision\getQueryInfo(), Revision\newFromTitle(), wfGetDB(), and wfMessage().

◆ getAutosummary()

ContentHandler::getAutosummary ( Content  $oldContent = null,
Content  $newContent = null,
  $flags = 0 
)

Return an applicable auto-summary if one exists for the given edit.

Since
1.21
Parameters
Content | null$oldContentThe previous text of the page.
Content | null$newContentThe submitted text of the page.
int$flagsBit mask: a bit mask of flags submitted for the edit.
Returns
string An appropriate auto-summary, or an empty string.

Definition at line 842 of file ContentHandler.php.

References getChangeType(), text, and wfMessage().

◆ getChangeTag()

ContentHandler::getChangeTag ( Content  $oldContent = null,
Content  $newContent = null,
  $flags = 0 
)

Return an applicable tag if one exists for the given edit or return null.

Since
1.31
Parameters
Content | null$oldContentThe previous text of the page.
Content | null$newContentThe submitted text of the page.
int$flagsBit mask: a bit mask of flags submitted for the edit.
Returns
string|null An appropriate tag, or null.

Definition at line 925 of file ContentHandler.php.

References getChangeType(), and ChangeTags\getSoftwareTags().

◆ getChangeType()

ContentHandler::getChangeType ( Content  $oldContent = null,
Content  $newContent = null,
  $flags = 0 
)
private

Return type of change if one exists for the given edit.

Since
1.31
Parameters
Content | null$oldContentThe previous text of the page.
Content | null$newContentThe submitted text of the page.
int$flagsBit mask: a bit mask of flags submitted for the edit.
Returns
string|null String key representing type of change, or null.

Definition at line 775 of file ContentHandler.php.

References EDIT_NEW.

Referenced by getAutosummary(), and getChangeTag().

◆ getContentModels()

◆ getContentText()

static ContentHandler::getContentText ( Content  $content = null)
static

Convenience function for getting flat text from a Content object.

This should only be used in the context of backwards compatibility with code that is not yet able to handle Content objects!

If $content is null, this method returns the empty string.

If $content is an instance of TextContent, this method returns the flat text as returned by $content->getNativeData().

If $content is not a TextContent object, the behavior of this method depends on the global $wgContentHandlerTextFallback:

  • If $wgContentHandlerTextFallback is 'fail' and $content is not a TextContent object, an MWException is thrown.
  • If $wgContentHandlerTextFallback is 'serialize' and $content is not a TextContent object, $content->serialize() is called to get a string form of the content.
  • If $wgContentHandlerTextFallback is 'ignore' and $content is not a TextContent object, this method returns null.
  • otherwise, the behavior is undefined.
Since
1.21
Parameters
Content$content
Exceptions
MWExceptionIf the content is not an instance of TextContent and wgContentHandlerTextFallback was set to 'fail'.
Returns
string|null Textual form of the content, if available.

Definition at line 79 of file ContentHandler.php.

References $wgContentHandlerTextFallback, global, and wfDebugLog().

Referenced by EditPageTest\assertEdit(), EditPage\internalAttemptSave(), ContentHandlerTest\testGetContentText_NonTextContent_fail(), ContentHandlerTest\testGetContentText_NonTextContent_ignore(), ContentHandlerTest\testGetContentText_NonTextContent_serialize(), ContentHandlerTest\testGetContentText_Null(), and ContentHandlerTest\testGetContentText_TextContent().

◆ getDataForSearchIndex()

ContentHandler::getDataForSearchIndex ( WikiPage  $page,
ParserOutput  $output,
SearchEngine  $engine 
)

Return fields to be indexed by search engine as representation of this document.

Overriding class should call parent function or take care of calling the SearchDataForIndex hook.

Parameters
WikiPage$pagePage to index
ParserOutput$output
SearchEngine$engineSearch engine for which we are indexing
Returns
array Map of name=>value for fields
Since
1.28

Reimplemented in WikitextContentHandler, FileContentHandler, and TextContentHandler.

Definition at line 1279 of file ContentHandler.php.

References $engine, $output, WikiPage\getContent(), and Hooks\run().

Referenced by WikitextContentHandlerTest\testDataIndexFieldsFile().

◆ getDefaultFormat()

ContentHandler::getDefaultFormat ( )

The format used for serialization/deserialization by default by this ContentHandler.

This default implementation will return the first element of the array of formats that was passed to the constructor.

Since
1.21
Returns
string The name of the default serialization format as a MIME type

Definition at line 553 of file ContentHandler.php.

Referenced by TextContentHandler\merge3().

◆ getDefaultModelFor()

static ContentHandler::getDefaultModelFor ( Title  $title)
static

Returns the name of the default content model to be used for the page with the given title.

Note: There should rarely be need to call this method directly. To determine the actual content model for a given page, use Title::getContentModel().

Which model is to be used by default for the page is determined based on several factors:

  • The global setting $wgNamespaceContentModels specifies a content model per namespace.
  • The hook ContentHandlerDefaultModelFor may be used to override the page's default model.
  • Pages in NS_MEDIAWIKI and NS_USER default to the CSS or JavaScript model if they end in .js or .css, respectively.
  • Pages in NS_MEDIAWIKI default to the wikitext model otherwise.
  • The hook TitleIsCssOrJsPage may be used to force a page to use the CSS or JavaScript model. This is a compatibility feature. The ContentHandlerDefaultModelFor hook should be used instead if possible.
  • The hook TitleIsWikitextPage may be used to force a page to use the wikitext model. This is a compatibility feature. The ContentHandlerDefaultModelFor hook should be used instead if possible.

If none of the above applies, the wikitext model is used.

Note: this is used by, and may thus not use, Title::getContentModel()

Since
1.21
Parameters
Title$title
Returns
string Default model name for the page given by $title

Definition at line 178 of file ContentHandler.php.

References $ext, $title, CONTENT_MODEL_CSS, CONTENT_MODEL_JAVASCRIPT, CONTENT_MODEL_JSON, CONTENT_MODEL_TEXT, CONTENT_MODEL_WIKITEXT, MWNamespace\getNamespaceContentModel(), NS_MEDIAWIKI, NS_USER, and Hooks\run().

Referenced by MediaWiki\Storage\RevisionStore\checkContentModel(), MediaWiki\Storage\RevisionStore\emulateMainSlot_1_29(), Title\getContentModel(), MediaWiki\Storage\RevisionStore\insertRevisionOn(), MovePage\moveToInternal(), PopulateContentModel\populatePage(), ContentHandlerTest\testGetDefaultModelFor(), WikiPageDbTestBase\testIsCountable(), and XmlDumpWriter\writeRevision().

◆ getDiffEngineClass()

ContentHandler::getDiffEngineClass ( )
protected

Returns the name of the diff engine to use.

Since
1.21
Returns
string

Definition at line 742 of file ContentHandler.php.

References class.

Referenced by createDifferenceEngine().

◆ getFieldsForSearchIndex()

ContentHandler::getFieldsForSearchIndex ( SearchEngine  $engine)

Get fields definition for search index.

Todo:
Expose title, redirect, namespace, text, source_text, text_bytes field mappings here. (see T142670 and T143409)
Parameters
SearchEngine$engine
Returns
SearchIndexField[] List of fields this content handler can provide.
Since
1.28

Reimplemented in WikitextContentHandler, TextContentHandler, and FileContentHandler.

Definition at line 1223 of file ContentHandler.php.

References $engine, SearchIndexField\FLAG_CASEFOLD, SearchIndexField\INDEX_TYPE_KEYWORD, and SearchIndexField\INDEX_TYPE_TEXT.

◆ getForContent()

static ContentHandler::getForContent ( Content  $content)
static

Returns the appropriate ContentHandler singleton for the given Content object.

Since
1.21
Parameters
Content$content
Returns
ContentHandler

Definition at line 256 of file ContentHandler.php.

References getForModelID(), and Content\getModel().

Referenced by AbstractContent\getContentHandler().

◆ getForModelID()

static ContentHandler::getForModelID (   $modelId)
static

Returns the ContentHandler singleton for the given model ID.

Use the CONTENT_MODEL_XXX constants to identify the desired content model.

ContentHandler singletons are taken from the global $wgContentHandlers array. Keys in that array are model names, the values are either ContentHandler singleton objects, or strings specifying the appropriate subclass of ContentHandler.

If a class name is encountered when looking up the singleton for a given model name, the class is instantiated and the class name is replaced by the resulting singleton in $wgContentHandlers.

If no ContentHandler is defined for the desired $modelId, the ContentHandler may be provided by the ContentHandlerForModelID hook. If no ContentHandler can be determined, an MWException is raised.

Since
1.21
Parameters
string$modelIdThe ID of the content model for which to get a handler. Use CONTENT_MODEL_XXX constants.
Exceptions
MWExceptionFor internal errors and problems in the configuration.
MWUnknownContentModelExceptionIf no handler is known for the model ID.
Returns
ContentHandler The ContentHandler singleton for handling the model given by the ID.

Definition at line 293 of file ContentHandler.php.

References $handler, $wgContentHandlers, global, Hooks\run(), and wfDebugLog().

Referenced by EditPage\__construct(), MediaWiki\EditPage\TextConflictHelper\__construct(), MediaWiki\Storage\RevisionStore\checkContentModel(), TextContent\convert(), ApiEditPage\execute(), ApiStashEdit\execute(), TextPassDumper\exportTransform(), ApiQueryRevisionsBase\extractRevisionInfo(), getAllContentFormats(), WikiRevision\getContentHandler(), WikiPage\getContentHandler(), Revision\getContentHandler(), EditPage\getCurrentContent(), getForContent(), getForTitle(), SpecialChangeContentModel\getOptionsForTitle(), EditPage\getOriginalContent(), EditPage\getPreloadedContent(), SearchEngine\getSearchIndexFields(), EditPage\importFormData(), MediaWiki\Storage\RevisionStore\insertRevisionOn(), EditPage\isSupportedContentModel(), MediaWiki\Storage\RevisionStore\loadSlotContent(), makeContent(), EditPage\mergeChangesIntoContent(), SpecialChangeContentModel\onSubmit(), ContentHandlerSanityTest\provideHandlers(), WikitextContentHandlerTest\setUp(), MediaWiki\EditPage\TextConflictHelper\showEditFormTextAfterFooters(), ContentHandlerTest\testGetFieldsForSearchIndex(), ContentHandlerTest\testGetModelForID(), PopulateContentModel\updateRevisionOrArchiveRows(), and XmlDumpWriter\writeRevision().

◆ getForTitle()

◆ getLocalizedName()

static ContentHandler::getLocalizedName (   $name,
Language  $lang = null 
)
static

Returns the localized name for a given content model.

Model names are localized using system messages. Message keys have the form content-model-$name, where $name is getContentModelName( $id ).

Parameters
string$nameThe content model ID, as given by a CONTENT_MODEL_XXX constant or returned by Revision::getContentModel().
Language | null$langThe language to parse the message in (since 1.26)
Exceptions
MWExceptionIf the model ID isn't known.
Returns
string The content model's localized name.

Definition at line 355 of file ContentHandler.php.

References $lang, $name, and wfMessage().

Referenced by WikiPage\doEditContent(), ContentModelLogFormatter\getMessageParameters(), SpecialChangeContentModel\getOptionsForTitle(), EditPage\importFormData(), MovePage\isValidMove(), SpecialChangeContentModel\onSubmit(), InfoAction\pageInfo(), ContentHandlerTest\testGetLocalizedName(), and SpecialChangeContentModel\validateTitle().

◆ getModelID()

ContentHandler::getModelID ( )

Returns the model id that identifies the content model this ContentHandler can handle.

Use with the CONTENT_MODEL_XXX constants.

Since
1.21
Returns
string The model ID

Definition at line 509 of file ContentHandler.php.

References $mModelID.

Referenced by canBeUsedOn(), and checkFormat().

◆ getPageLanguage()

ContentHandler::getPageLanguage ( Title  $title,
Content  $content = null 
)

Get the language in which the content of the given page is written.

This default implementation just returns $wgContLang (except for pages in the MediaWiki namespace)

Note that the pages language is not cacheable, since it may in some cases depend on user settings.

Also note that the page language may or may not depend on the actual content of the page, that is, this method may load the content in order to determine the language.

Since
1.21
Parameters
Title$titleThe page to determine the language for.
Content$contentThe page's content, if you have it handy, to avoid reloading it.
Returns
Language The page's language

Reimplemented in CodeContentHandler.

Definition at line 661 of file ContentHandler.php.

References $lang, $title, $wgContLang, $wgLang, Language\factory(), global, list, NS_MEDIAWIKI, Hooks\run(), MessageCache\singleton(), and wfGetLangObj().

Referenced by TextContentHandler\getDataForSearchIndex(), and getPageViewLanguage().

◆ getPageViewLanguage()

ContentHandler::getPageViewLanguage ( Title  $title,
Content  $content = null 
)

Get the language in which the content of this page is written when viewed by user.

Defaults to $this->getPageLanguage(), but if the user specified a preferred variant, the variant will be used.

This default implementation just returns $this->getPageLanguage( $title, $content ) unless the user specified a preferred variant.

Note that the pages view language is not cacheable, since it depends on user settings.

Also note that the page language may or may not depend on the actual content of the page, that is, this method may load the content in order to determine the language.

Since
1.21
Parameters
Title$titleThe page to determine the language for.
Content$contentThe page's content, if you have it handy, to avoid reloading it.
Returns
Language The page's language for viewing

Reimplemented in CodeContentHandler.

Definition at line 696 of file ContentHandler.php.

References $title, Language\factory(), getPageLanguage(), and NS_MEDIAWIKI.

◆ getParserOutputForIndexing()

ContentHandler::getParserOutputForIndexing ( WikiPage  $page,
ParserCache  $cache = null 
)

Produce page output suitable for indexing.

Specific content handlers may override it if they need different content handling.

Parameters
WikiPage$page
ParserCache$cache
Returns
ParserOutput

Definition at line 1316 of file ContentHandler.php.

References $cache, WikiPage\getContent(), WikiPage\getRevision(), WikiPage\getTitle(), and WikiPage\makeParserOptions().

◆ getSupportedFormats()

ContentHandler::getSupportedFormats ( )

Returns a list of serialization formats supported by the serializeContent() and unserializeContent() methods of this ContentHandler.

Since
1.21
Returns
string[] List of serialization formats as MIME type like strings

Definition at line 538 of file ContentHandler.php.

References $mSupportedFormats.

◆ getUndoContent()

ContentHandler::getUndoContent ( Revision  $current,
Revision  $undo,
Revision  $undoafter 
)

Get the Content object that needs to be saved in order to undo all revisions between $undo and $undoafter.

Revisions must belong to the same page, must exist and must not be deleted.

Since
1.21
Parameters
Revision$currentThe current text
Revision$undoThe revision to undo
Revision$undoafterMust be an earlier revision than $undo
Returns
mixed String on success, false on failure

Definition at line 1074 of file ContentHandler.php.

References $e, checkModelID(), Revision\getContent(), Revision\getId(), and merge3().

◆ importTransform()

ContentHandler::importTransform (   $blob,
  $format = null 
)

Apply import transformation (per default, returns $blob unchanged).

This gives subclasses an opportunity to transform data blobs on import.

Since
1.24
Parameters
string$blob
string | null$format
Returns
string

Definition at line 466 of file ContentHandler.php.

References $blob.

◆ isParserCacheSupported()

ContentHandler::isParserCacheSupported ( )

Returns true for content models that support caching using the ParserCache mechanism.

See WikiPage::shouldCheckParserCache().

Since
1.21
Returns
bool Always false.

Reimplemented in WikitextContentHandler.

Definition at line 1155 of file ContentHandler.php.

◆ isSupportedFormat()

ContentHandler::isSupportedFormat (   $format)

Returns true if $format is a serialization format supported by this ContentHandler, and false otherwise.

Note that if $format is null, this method always returns true, because null means "use the default format".

Since
1.21
Parameters
string$formatThe serialization format to check
Returns
bool

Definition at line 570 of file ContentHandler.php.

Referenced by checkFormat().

◆ makeContent()

static ContentHandler::makeContent (   $text,
Title  $title = null,
  $modelId = null,
  $format = null 
)
static

Convenience function for creating a Content object from a given textual representation.

$text will be deserialized into a Content object of the model specified by $modelId (or, if that is not given, $title->getContentModel()) using the given format.

Since
1.21
Parameters
string$textThe textual representation, will be unserialized to create the Content object
Title$titleThe title of the page this text belongs to. Required if $modelId is not provided.
string$modelIdThe model to deserialize to. If not provided, $title->getContentModel() is used.
string$formatThe format to use for deserialization. If not given, the model's default format is used.
Exceptions
MWExceptionIf model ID or format is not supported or if the text can not be unserialized using the format.
Returns
Content A Content object representing the text.

Definition at line 129 of file ContentHandler.php.

References $handler, $title, and getForModelID().

Referenced by PoolWorkArticleView\__construct(), ParserTestRunner\addArticle(), ApiQueryContributionsTest\addDBDataOnce(), ApiComparePagesTest\addPage(), MediaWiki\Tests\Maintenance\FetchTextTest\addRevision(), MediaWiki\Tests\Maintenance\DumpTestCase\addRevision(), EditPageTest\assertEdit(), WikiPageDbTestBase\createPage(), PagePropsTest\createPage(), RevisionDbTestBase\createPage(), ApiQueryWatchlistIntegrationTest\doAnonPageEdit(), ApiQueryRecentChangesIntegrationTest\doAnonPageEdit(), ApiQueryWatchlistIntegrationTest\doBotPageEdit(), ApiQueryRecentChangesIntegrationTest\doBotPageEdit(), DifferenceEngineTest\doEdits(), ApiQueryWatchlistIntegrationTest\doMinorPageEdit(), ApiQueryRecentChangesIntegrationTest\doMinorPageEdit(), ApiQueryWatchlistIntegrationTest\doPageEdit(), ApiQueryRecentChangesIntegrationTest\doPageEdit(), ApiQueryWatchlistIntegrationTest\doPatrolledPageEdit(), ApiTestCase\editPage(), CategoryMembershipChangeJobTest\editPageText(), ApiEditPage\execute(), ApiParse\execute(), ApiStashEdit\execute(), EditCLI\execute(), ImportSiteScripts\execute(), MakeTestEdits\execute(), ApiQueryRevisionsBase\extractRevisionInfo(), Article\getContentObject(), ApiComparePages\getDiffContent(), MediaWikiTestCase\insertPage(), MessageCacheTest\makePage(), RevisionDbTestBase\newTestRevision(), SpecialChangeContentModel\onSubmit(), LocalFile\recordUpload2(), PageArchiveTest\setUp(), ApiQueryRevisionsTest\testContentComesWithContentModelAndFormat(), TextContentTest\testDeletionUpdates(), WikiPageDbTestBase\testDoEditContent(), ApiEditPageTest\testEditSection(), ContentHandlerTest\testGetAutosummary(), ContentHandlerTest\testGetChangeTag(), UserTest\testGetEditCount(), TextContentTest\testGetParserOutput(), WikitextContentTest\testGetSecondaryDataUpdates(), ContentHandlerTest\testMakeContent(), ApiQueryAllPagesTest\testPrefixNormalizationSearchBug(), RefreshLinksPartitionTest\testRefreshLinks(), EditPage\toEditContent(), and MediaWiki\EditPage\TextConflictHelper\toEditContent().

◆ makeEmptyContent()

ContentHandler::makeEmptyContent ( )
abstract

Creates an empty Content object of the type supported by this ContentHandler.

Since
1.21
Returns
Content

Reimplemented in DummyNonTextContentHandler, DummyContentHandlerForTesting, RevisionTestModifyableContentHandler, TextContentHandler, and JsonContentHandler.

◆ makeParserOptions()

ContentHandler::makeParserOptions (   $context)

Get parser options suitable for rendering and caching the article.

Parameters
IContextSource | User | string$contextOne of the following:
  • IContextSource: Use the User and the Language of the provided context
  • User: Use the provided User object and $wgLang for the language, so use an IContextSource object if possible.
  • 'canonical': Canonical options (anonymous user with default preferences and content language).
Exceptions
MWException
Returns
ParserOptions

Definition at line 1128 of file ContentHandler.php.

References $context, $lang, $user, $wgContLang, global, ParserOptions\newCanonical(), and User.

◆ makeRedirectContent()

ContentHandler::makeRedirectContent ( Title  $destination,
  $text = '' 
)

Creates a new Content object that acts as a redirect to the given page, or null if redirects are not supported by this content model.

This default implementation always returns null. Subclasses supporting redirects must override this method.

Note that subclasses that override this method to return a Content object should also override supportsRedirects() to return true.

Since
1.21
Parameters
Title$destinationThe page to redirect to.
string$textText to include in the redirect, if possible.
Returns
Content Always null.

Reimplemented in WikitextContentHandler, JavaScriptContentHandler, and CssContentHandler.

Definition at line 497 of file ContentHandler.php.

◆ merge3()

ContentHandler::merge3 ( Content  $oldContent,
Content  $myContent,
Content  $yourContent 
)

Attempts to merge differences between three versions.

Returns a new Content object for a clean merge and false for failure or a conflict.

This default implementation always returns false.

Since
1.21
Parameters
Content$oldContentThe page's previous content.
Content$myContentOne of the page's conflicting contents.
Content$yourContentOne of the page's conflicting contents.
Returns
Content|bool Always false.

Reimplemented in TextContentHandler.

Definition at line 760 of file ContentHandler.php.

Referenced by getUndoContent().

◆ serializeContent()

ContentHandler::serializeContent ( Content  $content,
  $format = null 
)
abstract

Serializes a Content object of the type supported by this ContentHandler.

Since
1.21
Parameters
Content$contentThe Content object to serialize
string$formatThe desired serialization format
Returns
string Serialized form of the content

Reimplemented in DummyNonTextContentHandler, DummyContentHandlerForTesting, and TextContentHandler.

◆ supportsCategories()

ContentHandler::supportsCategories ( )

Returns true if this content model supports categories.

The default implementation returns true.

Returns
bool Always true.

Definition at line 1178 of file ContentHandler.php.

◆ supportsDirectApiEditing()

ContentHandler::supportsDirectApiEditing ( )

Whether or not this content model supports direct editing via ApiEditPage.

Returns
bool Default is false, and true for TextContent and derivatives.

Reimplemented in DummySerializeErrorContentHandler, and DummyNonTextContentHandler.

Definition at line 1209 of file ContentHandler.php.

References supportsDirectEditing().

◆ supportsDirectEditing()

ContentHandler::supportsDirectEditing ( )

Return true if this content model supports direct editing, such as via EditPage.

Returns
bool Default is false, and true for TextContent and it's derivatives.

Reimplemented in TextContentHandler.

Definition at line 1200 of file ContentHandler.php.

Referenced by supportsDirectApiEditing(), and WikitextContentHandlerTest\testSupportsDirectEditing().

◆ supportsRedirects()

ContentHandler::supportsRedirects ( )

Returns true if this content model supports redirects.

This default implementation returns false.

Content models that return true here should also implement ContentHandler::makeRedirectContent to return a Content object.

Returns
bool Always false.

Reimplemented in WikitextContentHandler, JavaScriptContentHandler, and CssContentHandler.

Definition at line 1191 of file ContentHandler.php.

◆ supportsSections()

ContentHandler::supportsSections ( )

Returns true if this content model supports sections.

This default implementation returns false.

Content models that return true here should also implement Content::getSection, Content::replaceSection, etc. to handle sections..

Returns
bool Always false.

Reimplemented in WikitextContentHandler.

Definition at line 1168 of file ContentHandler.php.

◆ unserializeContent()

ContentHandler::unserializeContent (   $blob,
  $format = null 
)
abstract

Unserializes a Content object of the type supported by this ContentHandler.

Since
1.21
Parameters
string$blobSerialized form of the content
string$formatThe format used for serialization
Returns
Content The Content object created by deserializing $blob

Reimplemented in RevisionTestModifyableContentHandler, TextContentHandler, DummySerializeErrorContentHandler, DummyNonTextContentHandler, and DummyContentHandlerForTesting.

Member Data Documentation

◆ $handlers

array ContentHandler::$handlers
staticprotected

A Cache of ContentHandler instances by model id.

Definition at line 265 of file ContentHandler.php.

◆ $mModelID

string ContentHandler::$mModelID
protected

Definition at line 396 of file ContentHandler.php.

Referenced by getModelID().

◆ $mSupportedFormats

string [] ContentHandler::$mSupportedFormats
protected

Definition at line 401 of file ContentHandler.php.

Referenced by getSupportedFormats().


The documentation for this class was generated from the following file: