1 | <?php |
||
14 | class ParserFunctionFactory { |
||
15 | |||
16 | /** |
||
17 | * @since 1.0 |
||
18 | * |
||
19 | * @param InterlanguageLinksLookup $interlanguageLinksLookup |
||
20 | * @param PageContentLanguageOnTheFlyModifier $pageContentLanguageOnTheFlyModifier |
||
21 | * |
||
22 | * @return array |
||
23 | */ |
||
24 | public function newInterlanguageLinkParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup, PageContentLanguageOnTheFlyModifier $pageContentLanguageOnTheFlyModifier ) { |
||
25 | |||
26 | 4 | $interlanguageLinkParserFunctionDefinition = function( $parser, $languageCode, $linkReference = '' ) use ( $interlanguageLinksLookup, $pageContentLanguageOnTheFlyModifier ) { |
|
27 | |||
28 | 3 | $pageContentLanguageDbModifier = new PageContentLanguageDbModifier( |
|
29 | 3 | $parser->getTitle() |
|
30 | ); |
||
31 | |||
32 | // MW 1.24+ |
||
33 | 3 | $pageContentLanguageDbModifier->markAsPageLanguageByDB( |
|
34 | 3 | isset( $GLOBALS['wgPageLanguageUseDB'] ) ? $GLOBALS['wgPageLanguageUseDB'] : false |
|
35 | ); |
||
36 | |||
37 | 3 | $parserData = ApplicationFactory::getInstance()->newParserData( |
|
38 | 3 | $parser->getTitle(), |
|
39 | 3 | $parser->getOutput() |
|
40 | ); |
||
41 | |||
42 | 3 | $languageLinkAnnotator = new LanguageLinkAnnotator( $parserData ); |
|
43 | |||
44 | 3 | $siteLanguageLinksParserOutputAppender = new SiteLanguageLinksParserOutputAppender( |
|
45 | 3 | $parser->getOutput(), |
|
46 | $interlanguageLinksLookup |
||
47 | ); |
||
48 | |||
49 | 3 | $interlanguageLinkParserFunction = new InterlanguageLinkParserFunction( |
|
50 | 3 | $parser->getTitle(), |
|
51 | $languageLinkAnnotator, |
||
52 | $siteLanguageLinksParserOutputAppender, |
||
53 | $pageContentLanguageOnTheFlyModifier, |
||
54 | $pageContentLanguageDbModifier |
||
55 | ); |
||
56 | |||
57 | 3 | $interlanguageLinkParserFunction->setRevisionModeState( |
|
58 | 3 | $GLOBALS['wgRequest']->getVal( 'action' ) === 'edit' || $GLOBALS['wgRequest']->getCheck( 'wpPreview' ) |
|
59 | ); |
||
60 | |||
61 | 3 | $interlanguageLinkParserFunction->setInterlanguageLinksHideState( |
|
62 | 3 | $GLOBALS['wgHideInterlanguageLinks'] |
|
63 | ); |
||
64 | |||
65 | 3 | return $interlanguageLinkParserFunction->parse( $languageCode, $linkReference ); |
|
66 | 4 | }; |
|
67 | |||
68 | 4 | return [ 'interlanguagelink', $interlanguageLinkParserFunctionDefinition, Parser::SFH_NO_HASH ]; |
|
69 | } |
||
70 | |||
71 | /** |
||
72 | * @since 1.0 |
||
73 | * |
||
74 | * @param InterlanguageLinksLookup $interlanguageLinksLookup |
||
75 | * |
||
76 | * @return array |
||
77 | */ |
||
78 | public function newInterlanguageListParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup ) { |
||
91 | |||
92 | /** |
||
93 | * @since 1.4 |
||
94 | * |
||
95 | * @param InterlanguageLinksLookup $interlanguageLinksLookup |
||
96 | * |
||
97 | * @return array |
||
98 | */ |
||
99 | public function newAnnotatedLanguageParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup ) { |
||
112 | |||
113 | } |
||
114 |