Completed
Push — master ( 11f4a6...dd6e74 )
by Karsten
05:57
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
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() {
0 ignored issues
show
initExtension uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
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
			'excel' => 'SRF\SRFExcel',
151
			'datatables' => 'SRF\DataTables'
152
		];
153
154
		$formatAliases = [
155
			'tagcloud'   => [ 'tag cloud' ],
156
			'datatables'   => [ 'datatable' ],
157
			'valuerank'  => [ 'value rank' ],
158
			'd3chart'    => [ 'd3 chart' ],
159
			'timeseries' =>  [ 'time series' ],
160
			'jqplotchart' => [ 'jqplot chart', 'jqplotpie', 'jqplotbar' ],
161
			'jqplotseries' => [ 'jqplot series' ],
162
		];
163
164
		foreach ( $GLOBALS['srfgFormats'] as $format ) {
165
			if ( array_key_exists( $format, $formatClasses ) ) {
166
				$GLOBALS['smwgResultFormats'][$format] = $formatClasses[$format];
167
168
				if ( isset( $GLOBALS['smwgResultAliases'] ) && array_key_exists( $format, $formatAliases ) ) {
169
					$GLOBALS['smwgResultAliases'][$format] = $formatAliases[$format];
170
				}
171
			}
172
		}
173
	}
174
175
	/**
176
	 * @since 2.5
177
	 *
178
	 * @return string|null
179
	 */
180
	public static function getVersion() {
181
		return SRF_VERSION;
182
	}
183
184
}
185