newAnnotatedLanguageParserFunctionDefinition()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 6
cts 6
cp 1
rs 9.8333
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace SIL;
4
5
use SMW\ApplicationFactory;
6
use Parser;
7
8
/**
9
 * @license GNU GPL v2+
10
 * @since 1.0
11
 *
12
 * @author mwjames
13
 */
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 ) {
79
80 4
		$interlanguageListParserFunctionDefinition = function( $parser, $target, $template = '' ) use ( $interlanguageLinksLookup ) {
81
82 1
			$interlanguageListParserFunction = new InterlanguageListParserFunction(
83 1
				$interlanguageLinksLookup
84
			);
85
86 1
			return $interlanguageListParserFunction->parse( $target, $template );
87 4
		};
88
89 4
		return [ 'interlanguagelist', $interlanguageListParserFunctionDefinition, Parser::SFH_NO_HASH ];
90
	}
91
92
	/**
93
	 * @since  1.4
94
	 *
95
	 * @param InterlanguageLinksLookup $interlanguageLinksLookup
96
	 *
97
	 * @return array
98
	 */
99
	public function newAnnotatedLanguageParserFunctionDefinition( InterlanguageLinksLookup $interlanguageLinksLookup ) {
100
101 4
		$annotatedLanguageParserFunctionDefinition = function( $parser, $template = '' ) use ( $interlanguageLinksLookup ) {
102
103 1
			$annotatedLanguageParserFunction = new AnnotatedLanguageParserFunction(
104 1
				$interlanguageLinksLookup
105
			);
106
107 1
			return $annotatedLanguageParserFunction->parse( $parser->getTitle(), $template );
108 4
		};
109
110 4
		return [ 'annotatedlanguage', $annotatedLanguageParserFunctionDefinition, Parser::SFH_NO_HASH ];
111
	}
112
113
}
114