Create ParserFetchTemplateData hook
This is moved from TemplateData, but the interface isn't quite right. Filed T304899 to improve it in the future. Bug: T304740 Change-Id: Iadd1ed70b72fc282bd5addfc1654aa73322ea470
This commit is contained in:
parent
3cd693aed6
commit
1c3216bf92
4 changed files with 49 additions and 3 deletions
|
|
@ -967,6 +967,7 @@ $wgAutoloadLocalClasses = [
|
|||
'MediaWiki\\Hook\\ParserCacheSaveCompleteHook' => __DIR__ . '/includes/parser/Hook/ParserCacheSaveCompleteHook.php',
|
||||
'MediaWiki\\Hook\\ParserClearStateHook' => __DIR__ . '/includes/parser/Hook/ParserClearStateHook.php',
|
||||
'MediaWiki\\Hook\\ParserClonedHook' => __DIR__ . '/includes/parser/Hook/ParserClonedHook.php',
|
||||
'MediaWiki\\Hook\\ParserFetchTemplateDataHook' => __DIR__ . '/includes/parser/Hook/ParserFetchTemplateDataHook.php',
|
||||
'MediaWiki\\Hook\\ParserFirstCallInitHook' => __DIR__ . '/includes/parser/Hook/ParserFirstCallInitHook.php',
|
||||
'MediaWiki\\Hook\\ParserGetVariableValueSwitchHook' => __DIR__ . '/includes/parser/Hook/ParserGetVariableValueSwitchHook.php',
|
||||
'MediaWiki\\Hook\\ParserGetVariableValueTsHook' => __DIR__ . '/includes/parser/Hook/ParserGetVariableValueTsHook.php',
|
||||
|
|
|
|||
|
|
@ -282,6 +282,7 @@ class HookRunner implements
|
|||
\MediaWiki\Hook\ParserCacheSaveCompleteHook,
|
||||
\MediaWiki\Hook\ParserClearStateHook,
|
||||
\MediaWiki\Hook\ParserClonedHook,
|
||||
\MediaWiki\Hook\ParserFetchTemplateDataHook,
|
||||
\MediaWiki\Hook\ParserFirstCallInitHook,
|
||||
\MediaWiki\Hook\ParserGetVariableValueSwitchHook,
|
||||
\MediaWiki\Hook\ParserGetVariableValueTsHook,
|
||||
|
|
@ -2867,6 +2868,13 @@ class HookRunner implements
|
|||
);
|
||||
}
|
||||
|
||||
public function onParserFetchTemplateData( array $titles, array &$tplData ): bool {
|
||||
return $this->container->run(
|
||||
'ParserFetchTemplateData',
|
||||
[ $titles, &$tplData ]
|
||||
);
|
||||
}
|
||||
|
||||
public function onParserFirstCallInit( $parser ) {
|
||||
return $this->container->run(
|
||||
'ParserFirstCallInit',
|
||||
|
|
|
|||
36
includes/parser/Hook/ParserFetchTemplateDataHook.php
Normal file
36
includes/parser/Hook/ParserFetchTemplateDataHook.php
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace MediaWiki\Hook;
|
||||
|
||||
/**
|
||||
* This is a hook handler interface, see docs/Hooks.md.
|
||||
* Use the hook name "ParserFetchTemplateData" to register handlers
|
||||
* implementing this interface.
|
||||
*
|
||||
* @unstable
|
||||
* @ingroup Hooks
|
||||
*/
|
||||
interface ParserFetchTemplateDataHook {
|
||||
/**
|
||||
* This hook allows Parsoid to fetch additional serialization information
|
||||
* about a Template, including the type of its arguments, whether they
|
||||
* should be serialized as inline or block style wikitext, etc.
|
||||
* See [[Extension:TemplateData]] for more information.
|
||||
*
|
||||
* @param string[] $titles An array of template names
|
||||
* @param array<string,object> &$tplData The hook will create an
|
||||
* associative array, mapping each given
|
||||
* template name to an object representing the TemplateData for that
|
||||
* template, or special objects if the title doesn't exist, is missing
|
||||
* TemplateData, or has malformed TemplateData.
|
||||
* @return bool Typically returns true, to allow all registered hooks a
|
||||
* chance to fill in template data.
|
||||
*
|
||||
* @unstable temporary hook; will be cleaned up before it is made stable
|
||||
* @since 1.39
|
||||
*/
|
||||
public function onParserFetchTemplateData(
|
||||
array $titles,
|
||||
array &$tplData
|
||||
): bool;
|
||||
}
|
||||
|
|
@ -408,9 +408,10 @@ class DataAccess extends IDataAccess {
|
|||
/** @inheritDoc */
|
||||
public function fetchTemplateData( IPageConfig $pageConfig, string $title ): ?array {
|
||||
$ret = [];
|
||||
// @todo: Document this hook in MediaWiki / Extension:TemplateData
|
||||
$this->hookContainer->run(
|
||||
'ParserFetchTemplateData', [ [ $title ], &$ret ]
|
||||
// @todo: This hook needs some clean up: T304899
|
||||
$this->hookRunner->onParserFetchTemplateData(
|
||||
[ $title ],
|
||||
$ret # value returned by reference
|
||||
);
|
||||
|
||||
// Cast value to array since the hook returns this as a stdclass
|
||||
|
|
|
|||
Loading…
Reference in a new issue