1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
use SMW\Notifications\HookRegistry; |
4
|
|
|
|
5
|
|
|
/** |
6
|
|
|
* @see https://github.com/SemanticMediaWiki/SemanticNotifications/ |
7
|
|
|
* |
8
|
|
|
* @defgroup SemanticNotifications Semantic Notifications |
9
|
|
|
*/ |
10
|
|
|
SemanticNotifications::load(); |
11
|
|
|
|
12
|
|
|
/** |
13
|
|
|
* @codeCoverageIgnore |
14
|
|
|
*/ |
15
|
|
|
class SemanticNotifications { |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* @since 1.0 |
19
|
|
|
* |
20
|
|
|
* @note It is expected that this function is loaded before LocalSettings.php |
21
|
|
|
* to ensure that settings and global functions are available by the time |
22
|
|
|
* the extension is activated. |
23
|
|
|
*/ |
24
|
|
|
public static function load() { |
25
|
|
|
|
26
|
|
|
if ( is_readable( __DIR__ . '/vendor/autoload.php' ) ) { |
27
|
|
|
include_once __DIR__ . '/vendor/autoload.php'; |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
$GLOBALS['snogChangeNotificationDetectionPropertyExemptionList'] = array( |
31
|
|
|
'_MDAT', |
32
|
|
|
'_REDI' |
33
|
|
|
); |
34
|
|
|
} |
35
|
|
|
|
36
|
|
|
/** |
37
|
|
|
* @since 1.0 |
38
|
|
|
*/ |
39
|
|
|
public static function initExtension( $credits = [] ) { |
40
|
|
|
|
41
|
|
|
$version = 'UNKNOWN' ; |
42
|
|
|
|
43
|
|
|
// See https://phabricator.wikimedia.org/T151136 |
44
|
|
|
if ( isset( $credits['version'] ) ) { |
45
|
|
|
$version = $credits['version']; |
46
|
|
|
} |
47
|
|
|
|
48
|
|
|
define( 'SMW_NOTIFICATIONS_VERSION', $version ); |
49
|
|
|
|
50
|
|
|
// Register message files |
51
|
|
|
$GLOBALS['wgMessagesDirs']['SemanticNotifications'] = __DIR__ . '/i18n'; |
52
|
|
|
|
53
|
|
|
// Register the hook before the execution of ExtensionFunction |
54
|
|
|
$GLOBALS['wgHooks']['BeforeCreateEchoEvent'][] = "\SMW\Notifications\EchoNotificationsManager::initNotificationsDefinitions"; |
55
|
|
|
} |
56
|
|
|
|
57
|
|
|
/** |
58
|
|
|
* @since 1.0 |
59
|
|
|
*/ |
60
|
|
|
public static function onExtensionFunction() { |
61
|
|
|
|
62
|
|
|
// Check requirements after LocalSetting.php has been processed |
63
|
|
|
|
64
|
|
|
if ( !defined( 'SMW_VERSION' ) ) { |
65
|
|
|
if ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' ) { |
66
|
|
|
die( "\nThe 'Semantic Notifications' extension requires the 'Semantic MediaWiki' extension to be installed and enabled.\n" ); |
|
|
|
|
67
|
|
|
} else { |
68
|
|
|
die( |
|
|
|
|
69
|
|
|
'<b>Error:</b> The <a href="https://github.com/SemanticMediaWiki/SemanticNotifications/">Semantic Notifications</a> extension' . |
70
|
|
|
' requires the <a href="https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki">Semantic MediaWiki</a> extension to be installed and enabled.<br />' |
71
|
|
|
); |
72
|
|
|
} |
73
|
|
|
} |
74
|
|
|
|
75
|
|
|
// There is no good way to detect whether Echo is available or not without |
76
|
|
|
// making a class_exists, what should I say ... |
77
|
|
|
if ( !isset( $GLOBALS['wgMessagesDirs']['Echo'] ) ) { |
78
|
|
|
if ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' ) { |
79
|
|
|
die( "\nThe 'Semantic Notifications' extension requires the 'Echo' extension to be installed and enabled.\n" ); |
|
|
|
|
80
|
|
|
} else { |
81
|
|
|
die( |
|
|
|
|
82
|
|
|
'<b>Error:</b> The <a href="https://github.com/SemanticMediaWiki/SemanticNotifications/">Semantic Notifications</a> extension' . |
83
|
|
|
' requires the <a href="https://www.mediawiki.org/wiki/Extension:Echo">Echo</a> extension to be installed and enabled.<br />' |
84
|
|
|
); |
85
|
|
|
} |
86
|
|
|
} |
87
|
|
|
|
88
|
|
|
$hookRegistry = new HookRegistry(); |
89
|
|
|
$hookRegistry->register(); |
90
|
|
|
} |
91
|
|
|
|
92
|
|
|
} |
93
|
|
|
|
An exit expression should only be used in rare cases. For example, if you write a short command line script.
In most cases however, using an
exit
expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.