Completed
Push — master ( 6dc7d8...407c40 )
by Karsten
15:45
created

SemanticResultFormats.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 14 and the first side effect is on line 9.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
2
3
/**
4
 * @see https://github.com/SemanticMediaWiki/SemanticResultFormats/
5
 *
6
 * @defgroup SRF Semantic Result Formats
7
 */
8
9
SemanticResultFormats::load();
10
11
/**
12
 * @codeCoverageIgnore
13
 */
14
class SemanticResultFormats {
15
16
	/**
17
	 * @since 2.5
18
	 *
19
	 * @note It is expected that this function is loaded before LocalSettings.php
20
	 * to ensure that settings and global functions are available by the time
21
	 * the extension is activated.
22
	 */
23
	public static function load() {
24
25
		if ( is_readable( __DIR__ . '/vendor/autoload.php' ) ) {
26
			include_once __DIR__ . '/vendor/autoload.php';
27
		}
28
29
		// Load DefaultSettings
30
		require_once __DIR__ . '/DefaultSettings.php';
31
	}
32
33
	/**
34
	 * @since 2.5
35
	 */
36
	public static function initExtension( $credits = [] ) {
37
38
		// See https://phabricator.wikimedia.org/T151136
39
		define( 'SRF_VERSION', isset( $credits['version'] ) ? $credits['version'] : 'UNKNOWN' );
40
41
		// Register message files
42
		$GLOBALS['wgMessagesDirs']['SemanticResultFormats'] = __DIR__ . '/i18n';
43
		$GLOBALS['wgExtensionMessagesFiles']['SemanticResultFormats'] = __DIR__ . '/SemanticResultFormats.i18n.php';
44
		$GLOBALS['wgExtensionMessagesFiles']['SemanticResultFormatsMagic'] = __DIR__ . '/SemanticResultFormats.i18n.magic.php';
45
46
		$GLOBALS['srfgIP'] = __DIR__;
47
		$GLOBALS['wgResourceModules'] = array_merge( $GLOBALS['wgResourceModules'], include( __DIR__ . "/Resources.php" ) );
48
49
		self::registerHooks();
50
	}
51
52
	/**
53
	 * @since 2.5
54
	 */
55
	public static function registerHooks() {
56
		$formatDir = __DIR__ . '/formats/';
57
58
		unset( $formatDir );
59
60
		$GLOBALS['wgHooks']['ParserFirstCallInit'][] = 'SRFParserFunctions::registerFunctions';
61
		$GLOBALS['wgHooks']['UnitTestsList'][] = 'SRFHooks::registerUnitTests';
62
63
		$GLOBALS['wgHooks']['ResourceLoaderTestModules'][] = 'SRFHooks::registerQUnitTests';
64
		$GLOBALS['wgHooks']['ResourceLoaderGetConfigVars'][] = 'SRFHooks::onResourceLoaderGetConfigVars';
65
66
		// Format hooks
67
		$GLOBALS['wgHooks']['OutputPageParserOutput'][] = 'SRF\Filtered\Hooks::onOutputPageParserOutput';
68
		$GLOBALS['wgHooks']['MakeGlobalVariablesScript'][] = 'SRF\Filtered\Hooks::onMakeGlobalVariablesScript';
69
70
		// register API modules
71
		$GLOBALS['wgAPIModules']['ext.srf.slideshow.show'] = 'SRFSlideShowApi';
72
73
		// User preference
74
		$GLOBALS['wgHooks']['SMW::GetPreferences'][] = 'SRFHooks::onGetPreferences';
75
76
		// Allows last minute changes to the output page, e.g. adding of CSS or JavaScript by extensions
77
		$GLOBALS['wgHooks']['BeforePageDisplay'][] = 'SRFHooks::onBeforePageDisplay';
78
	}
79
80
	/**
81
	 * @since 2.5
82
	 */
83
	public static function onExtensionFunction() {
84
85
		if ( !defined( 'SMW_VERSION' ) ) {
86
87
			if ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' ) {
88
				die( "\nThe 'Semantic Result Formats' extension requires 'Semantic MediaWiki' to be installed and enabled.\n" );
89
			} else {
90
				die(
91
					'<b>Error:</b> The <a href="https://github.com/SemanticMediaWiki/SemanticResultFormats/">Semantic Result Formats</a> ' .
92
					'extension requires <a href="https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki">Semantic MediaWiki</a> to be ' .
93
					'installed and enabled.<br />'
94
				);
95
			}
96
		}
97
98
		// Admin Links hook needs to be called in a delayed way so that it
99
		// will always be called after SMW's Admin Links addition; as of
100
		// SMW 1.9, SMW delays calling all its hook functions.
101
		$GLOBALS['wgHooks']['AdminLinks'][] = 'SRFHooks::addToAdminLinks';
102
103
		$GLOBALS['srfgScriptPath'] = ( $GLOBALS['wgExtensionAssetsPath'] === false ? $GLOBALS['wgScriptPath'] . '/extensions' : $GLOBALS['wgExtensionAssetsPath'] ) . '/SemanticResultFormats';
104
105
		$formatClasses = [
106
			// Assign the Boilerplate class to a format identifier
107
			// 'boilerplate' => 'SRFBoilerplate',
108
			'timeline' => 'SRFTimeline',
109
			'eventline' => 'SRFTimeline',
110
			'vcard' => 'SRF\vCard\vCardFileExportPrinter',
111
			'icalendar' => 'SRF\iCalendar\iCalendarFileExportPrinter',
112
			'bibtex' => 'SRFBibTeX',
113
			'calendar' => 'SRFCalendar',
114
			'eventcalendar' => 'SRF\EventCalendar',
115
			'outline' => 'SRFOutline',
116
			'sum' => 'SRFMath',
117
			'product' => 'SRFMath',
118
			'average' => 'SRFMath',
119
			'min' => 'SRFMath',
120
			'max' => 'SRFMath',
121
			'median' => 'SRFMath',
122
			'exhibit' => 'SRFExhibit',
123
			'googlebar' => 'SRFGoogleBar',
124
			'googlepie' => 'SRFGooglePie',
125
			'jitgraph' => 'SRFJitGraph',
126
			'jqplotchart' => 'SRFjqPlotChart',
127
			'jqplotseries' => 'SRFjqPlotSeries',
128
			'graph' => 'SRFGraph',
129
			'process' => 'SRFProcess',
130
			'gallery' => 'SRF\Gallery',
131
			'tagcloud' => 'SRF\TagCloud',
132
			'valuerank' => 'SRFValueRank',
133
			'array' => 'SRFArray',
134
			'hash' => 'SRFHash',
135
			'd3chart' => 'SRFD3Chart',
136
			'tree' => 'SRF\Formats\Tree\TreeResultPrinter',
137
			'ultree' => 'SRF\Formats\Tree\TreeResultPrinter',
138
			'oltree' => 'SRF\Formats\Tree\TreeResultPrinter',
139
			'filtered' => 'SRF\Filtered\Filtered',
140
			'latest' => 'SRFTime',
141
			'earliest' => 'SRFTime',
142
			'slideshow' => 'SRFSlideShow',
143
			'timeseries' => 'SRFTimeseries',
144
			'sparkline' => 'SRFSparkline',
145
			'listwidget' => 'SRFListWidget',
146
			'pagewidget' => 'SRFPageWidget',
147
			'dygraphs' => 'SRFDygraphs',
148
			'incoming' => 'SRFIncoming',
149
			'media' => 'SRF\MediaPlayer',
150
			'spreadsheet' => 'SRF\SpreadsheetPrinter',
151
			'datatables' => 'SRF\DataTables',
152
			'gantt' => 'SRF\Gantt\GanttPrinter'
153
		];
154
155
		$formatAliases = [
156
			'tagcloud'   => [ 'tag cloud' ],
157
			'datatables'   => [ 'datatable' ],
158
			'valuerank'  => [ 'value rank' ],
159
			'd3chart'    => [ 'd3 chart' ],
160
			'timeseries' =>  [ 'time series' ],
161
			'jqplotchart' => [ 'jqplot chart', 'jqplotpie', 'jqplotbar' ],
162
			'jqplotseries' => [ 'jqplot series' ],
163
			'spreadsheet' => [ 'excel' ],
164
		];
165
166
		foreach ( $GLOBALS['srfgFormats'] as $format ) {
167
			if ( array_key_exists( $format, $formatClasses ) ) {
168
				$GLOBALS['smwgResultFormats'][$format] = $formatClasses[$format];
169
170
				if ( isset( $GLOBALS['smwgResultAliases'] ) && array_key_exists( $format, $formatAliases ) ) {
171
					$GLOBALS['smwgResultAliases'][$format] = $formatAliases[$format];
172
				}
173
			}
174
		}
175
	}
176
177
	/**
178
	 * @since 2.5
179
	 *
180
	 * @return string|null
181
	 */
182
	public static function getVersion() {
183
		return SRF_VERSION;
184
	}
185
186
}
187