File: Hooks.php

package info (click to toggle)
mediawiki 1%3A1.35.13-1%2Bdeb11u2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 274,932 kB
  • sloc: php: 677,563; javascript: 572,709; sql: 11,565; python: 4,447; xml: 3,145; sh: 892; perl: 788; ruby: 496; pascal: 365; makefile: 128
file content (71 lines) | stat: -rw-r--r-- 2,587 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php

namespace MediaWiki\Extensions\ParserFunctions;

use Parser;

class Hooks {

	/**
	 * Enables string functions during parser tests.
	 *
	 * @see https://www.mediawiki.org/wiki/Manual:Hooks/ParserTestGlobals
	 *
	 * @param array &$globals
	 */
	public static function onParserTestGlobals( array &$globals ) {
		$globals['wgPFEnableStringFunctions'] = true;
	}

	/**
	 * Registers our parser functions with a fresh parser.
	 *
	 * @see https://www.mediawiki.org/wiki/Manual:Hooks/ParserFirstCallInit
	 *
	 * @param Parser $parser
	 */
	public static function onParserFirstCallInit( Parser $parser ) {
		global $wgPFEnableStringFunctions;

		// These functions accept DOM-style arguments
		$class = ParserFunctions::class;
		$parser->setFunctionHook( 'if', "$class::if", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'ifeq', "$class::ifeq", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'switch', "$class::switch", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'ifexist', "$class::ifexist", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'ifexpr', "$class::ifexpr", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'iferror', "$class::iferror", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'time', "$class::time", Parser::SFH_OBJECT_ARGS );
		$parser->setFunctionHook( 'timel', "$class::localTime", Parser::SFH_OBJECT_ARGS );

		$parser->setFunctionHook( 'expr', "$class::expr" );
		$parser->setFunctionHook( 'rel2abs', "$class::rel2abs" );
		$parser->setFunctionHook( 'titleparts', "$class::titleparts" );

		// String Functions: enable if configured
		if ( $wgPFEnableStringFunctions ) {
			$parser->setFunctionHook( 'len',       "$class::runLen" );
			$parser->setFunctionHook( 'pos',       "$class::runPos" );
			$parser->setFunctionHook( 'rpos',      "$class::runRPos" );
			$parser->setFunctionHook( 'sub',       "$class::runSub" );
			$parser->setFunctionHook( 'count',     "$class::runCount" );
			$parser->setFunctionHook( 'replace',   "$class::runReplace" );
			$parser->setFunctionHook( 'explode',   "$class::runExplode" );
			$parser->setFunctionHook( 'urldecode', "$class::runUrlDecode" );
		}
	}

	/**
	 * Registers ParserFunctions' lua function with Scribunto
	 *
	 * @see https://www.mediawiki.org/wiki/Extension:Scribunto/ScribuntoExternalLibraries
	 *
	 * @param string $engine
	 * @param string[] &$extraLibraries
	 */
	public static function onScribuntoExternalLibraries( $engine, array &$extraLibraries ) {
		if ( $engine === 'lua' ) {
			$extraLibraries['mw.ext.ParserFunctions'] = LuaLibrary::class;
		}
	}
}