Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
RegistrationHooks
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 1
 onRegistration
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2/**
3 * DiscussionTools tag hooks
4 *
5 * @file
6 * @ingroup Extensions
7 * @license MIT
8 */
9
10namespace MediaWiki\Extension\DiscussionTools\Hooks;
11
12use MediaWiki\Config\ConfigException;
13
14class RegistrationHooks {
15    public static function onRegistration(): void {
16        // Use globals instead of Config. Accessing it so early blows up unrelated extensions (T255704).
17        global $wgLocaltimezone, $wgFragmentMode;
18        // HACK: Do not run these tests on CI as the globals are not configured.
19        if ( getenv( 'ZUUL_PROJECT' ) ) {
20            return;
21        }
22        // If $wgLocaltimezone isn't hard-coded, it is evaluated from the system
23        // timezone. On some systems this isn't guaranteed to be static, for example
24        // on Debian, GMT can get converted to UTC, instead of Europe/London.
25        // Timestamp parsing assumes that the timezone never changes.
26        if ( !$wgLocaltimezone ) {
27            throw new ConfigException( 'DiscussionTools requires $wgLocaltimezone to be set' );
28        }
29        // If $wgFragmentMode is set to use 'legacy' encoding, determining the IDs of our thread
30        // headings is harder, especially since the implementation is different in Parsoid.
31        if ( !isset( $wgFragmentMode[0] ) || $wgFragmentMode[0] !== 'html5' ) {
32            throw new ConfigException( 'DiscussionTools requires $wgFragmentMode to be set to ' .
33                "[ 'html5', 'legacy' ] or [ 'html5' ]" );
34        }
35    }
36}