$modelId = $title->getContentModel();
}
- $handler = ContentHandler::getForModelID( $modelId );
+ $handler = self::getForModelID( $modelId );
return $handler->unserializeContent( $text, $format );
}
$ext = $m[1];
}
- // Hook can force JS/CSS
- Hooks::run( 'TitleIsCssOrJsPage', [ $title, &$isCodePage ], '1.21' );
-
// Is this a user subpage containing code?
$isCodeSubpage = NS_USER == $ns
&& !$isCodePage
$isWikitext = is_null( $model ) || $model == CONTENT_MODEL_WIKITEXT;
$isWikitext = $isWikitext && !$isCodePage && !$isCodeSubpage;
- // Hook can override $isWikitext
- Hooks::run( 'TitleIsWikitextPage', [ $title, &$isWikitext ], '1.21' );
-
if ( !$isWikitext ) {
switch ( $ext ) {
case 'js':
public static function getForTitle( Title $title ) {
$modelId = $title->getContentModel();
- return ContentHandler::getForModelID( $modelId );
+ return self::getForModelID( $modelId );
}
/**
public static function getForContent( Content $content ) {
$modelId = $content->getModel();
- return ContentHandler::getForModelID( $modelId );
+ return self::getForModelID( $modelId );
}
/**
public static function getForModelID( $modelId ) {
global $wgContentHandlers;
- if ( isset( ContentHandler::$handlers[$modelId] ) ) {
- return ContentHandler::$handlers[$modelId];
+ if ( isset( self::$handlers[$modelId] ) ) {
+ return self::$handlers[$modelId];
}
if ( empty( $wgContentHandlers[$modelId] ) ) {
wfDebugLog( 'ContentHandler', 'Created handler for ' . $modelId
. ': ' . get_class( $handler ) );
- ContentHandler::$handlers[$modelId] = $handler;
+ self::$handlers[$modelId] = $handler;
- return ContentHandler::$handlers[$modelId];
+ return self::$handlers[$modelId];
}
/**
public static function getContentModels() {
global $wgContentHandlers;
- return array_keys( $wgContentHandlers );
+ $models = array_keys( $wgContentHandlers );
+ Hooks::run( 'GetContentModels', [ &$models ] );
+ return $models;
}
public static function getAllContentFormats() {
$formats = [];
foreach ( $wgContentHandlers as $model => $class ) {
- $handler = ContentHandler::getForModelID( $model );
+ $handler = self::getForModelID( $model );
$formats = array_merge( $formats, $handler->getSupportedFormats() );
}
*/
public function createDifferenceEngine( IContextSource $context, $old = 0, $new = 0,
$rcid = 0, // FIXME: Deprecated, no longer used
- $refreshCache = false, $unhide = false ) {
-
+ $refreshCache = false, $unhide = false
+ ) {
// hook: get difference engine
$differenceEngine = null;
if ( !Hooks::run( 'GetDifferenceEngine',
$onlyAuthor = $row->rev_user_text;
// Try to find a second contributor
foreach ( $res as $row ) {
- if ( $row->rev_user_text != $onlyAuthor ) { // Bug 22999
+ if ( $row->rev_user_text != $onlyAuthor ) { // T24999
$onlyAuthor = false;
break;
}
* @return ParserOptions
*/
public function makeParserOptions( $context ) {
- global $wgContLang, $wgEnableParserLimitReporting;
+ global $wgContLang;
if ( $context instanceof IContextSource ) {
- $options = ParserOptions::newFromContext( $context );
+ $user = $context->getUser();
+ $lang = $context->getLanguage();
} elseif ( $context instanceof User ) { // settings per user (even anons)
- $options = ParserOptions::newFromUser( $context );
+ $user = $context;
+ $lang = null;
} elseif ( $context === 'canonical' ) { // canonical settings
- $options = ParserOptions::newFromUserAndLang( new User, $wgContLang );
+ $user = new User;
+ $lang = $wgContLang;
} else {
throw new MWException( "Bad context for parser options: $context" );
}
- $options->enableLimitReport( $wgEnableParserLimitReporting ); // show inclusion/loop reports
- $options->setTidy( true ); // fix bad HTML
-
- return $options;
+ return ParserOptions::newCanonical( $user, $lang );
}
/**
return $this->supportsDirectEditing();
}
- /**
- * Call a legacy hook that uses text instead of Content objects.
- * Will log a warning when a matching hook function is registered.
- * If the textual representation of the content is changed by the
- * hook function, a new Content object is constructed from the new
- * text.
- *
- * @param string $event Event name
- * @param array $args Parameters passed to hook functions
- * @param string|null $deprecatedVersion Emit a deprecation notice
- * when the hook is run for the provided version
- *
- * @return bool True if no handler aborted the hook
- */
- public static function runLegacyHooks( $event, $args = [],
- $deprecatedVersion = null
- ) {
-
- if ( !Hooks::isRegistered( $event ) ) {
- return true; // nothing to do here
- }
-
- // convert Content objects to text
- $contentObjects = [];
- $contentTexts = [];
-
- foreach ( $args as $k => $v ) {
- if ( $v instanceof Content ) {
- /* @var Content $v */
-
- $contentObjects[$k] = $v;
-
- $v = $v->serialize();
- $contentTexts[$k] = $v;
- $args[$k] = $v;
- }
- }
-
- // call the hook functions
- $ok = Hooks::run( $event, $args, $deprecatedVersion );
-
- // see if the hook changed the text
- foreach ( $contentTexts as $k => $orig ) {
- /* @var Content $content */
-
- $modified = $args[$k];
- $content = $contentObjects[$k];
-
- if ( $modified !== $orig ) {
- // text was changed, create updated Content object
- $content = $content->getContentHandler()->unserializeContent( $modified );
- }
-
- $args[$k] = $content;
- }
-
- return $ok;
- }
-
/**
* Get fields definition for search index
*
'category',
SearchIndexField::INDEX_TYPE_TEXT
);
-
$fields['category']->setFlag( SearchIndexField::FLAG_CASEFOLD );
$fields['external_link'] = $engine->makeSearchFieldMapping(
'template',
SearchIndexField::INDEX_TYPE_KEYWORD
);
-
$fields['template']->setFlag( SearchIndexField::FLAG_CASEFOLD );
+ $fields['content_model'] = $engine->makeSearchFieldMapping(
+ 'content_model',
+ SearchIndexField::INDEX_TYPE_KEYWORD
+ );
+
return $fields;
}
/**
* Add new field definition to array.
- * @param SearchIndexField[] $fields
- * @param SearchEngine $engine
- * @param string $name
- * @param int $type
+ * @param SearchIndexField[] &$fields
+ * @param SearchEngine $engine
+ * @param string $name
+ * @param int $type
* @return SearchIndexField[] new field defs
* @since 1.28
*/
* as representation of this document.
* Overriding class should call parent function or take care of calling
* the SearchDataForIndex hook.
- * @param WikiPage $page Page to index
+ * @param WikiPage $page Page to index
* @param ParserOutput $output
* @param SearchEngine $engine Search engine for which we are indexing
* @return array Map of name=>value for fields
* @since 1.28
*/
- public function getDataForSearchIndex( WikiPage $page, ParserOutput $output,
- SearchEngine $engine ) {
+ public function getDataForSearchIndex(
+ WikiPage $page,
+ ParserOutput $output,
+ SearchEngine $engine
+ ) {
$fieldData = [];
$content = $page->getContent();
$fieldData['text'] = $text;
$fieldData['source_text'] = $text;
$fieldData['text_bytes'] = $content->getSize();
+ $fieldData['content_model'] = $content->getModel();
}
Hooks::run( 'SearchDataForIndex', [ &$fieldData, $this, $page, $output, $engine ] );
*
* Specific content handlers may override it if they need different content handling.
*
- * @param WikiPage $page
+ * @param WikiPage $page
* @param ParserCache $cache
* @return ParserOutput
*/