Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
70.00% covered (warning)
70.00%
14 / 20
25.00% covered (danger)
25.00%
1 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
DataModule
70.00% covered (warning)
70.00%
14 / 20
25.00% covered (danger)
25.00%
1 / 4
9.73
0.00% covered (danger)
0.00%
0 / 1
 getScript
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
1 / 1
1
 enableModuleContentVersion
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 supportsURLLoading
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 numberOfNearbyPoints
42.86% covered (danger)
42.86%
3 / 7
0.00% covered (danger)
0.00%
0 / 1
9.66
1<?php
2/**
3 * ResourceLoader module providing extra data to the client-side.
4 *
5 * @file
6 * @ingroup Extensions
7 */
8
9namespace Kartographer\Modules;
10
11use ExtensionRegistry;
12use MediaWiki\Config\ConfigException;
13// phpcs:disable MediaWiki.Classes.FullQualifiedClassName -- T308814
14use MediaWiki\ResourceLoader as RL;
15use MediaWiki\ResourceLoader\ResourceLoader;
16
17/**
18 * @license MIT
19 */
20class DataModule extends RL\Module {
21
22    /** @inheritDoc */
23    public function getScript( RL\Context $context ) {
24        $config = $this->getConfig();
25        return ResourceLoader::makeConfigSetScript( [
26            'wgKartographerMapServer' => $config->get( 'KartographerMapServer' ),
27            'wgKartographerSrcsetScales' => $config->get( 'KartographerSrcsetScales' ),
28            'wgKartographerStyles' => $config->get( 'KartographerStyles' ),
29            'wgKartographerDfltStyle' => $config->get( 'KartographerDfltStyle' ),
30            'wgKartographerUsePageLanguage' => $config->get( 'KartographerUsePageLanguage' ),
31            'wgKartographerFallbackZoom' => $config->get( 'KartographerFallbackZoom' ),
32            'wgKartographerSimpleStyleMarkers' => $config->get( 'KartographerSimpleStyleMarkers' ),
33            'wgKartographerNearby' => $this->numberOfNearbyPoints(),
34        ] );
35    }
36
37    /** @inheritDoc */
38    public function enableModuleContentVersion() {
39        return true;
40    }
41
42    /** @inheritDoc */
43    public function supportsURLLoading() {
44        // always use getScript() to acquire JavaScript (even in debug mode)
45        return false;
46    }
47
48    /**
49     * @return int Number of points to load, 0 when the feature is disabled
50     */
51    private function numberOfNearbyPoints(): int {
52        $limit = $this->getConfig()->get( 'KartographerNearby' );
53        if ( !$limit ) {
54            return 0;
55        }
56
57        if ( !ExtensionRegistry::getInstance()->isLoaded( 'GeoData' ) ||
58            !ExtensionRegistry::getInstance()->isLoaded( 'CirrusSearch' )
59        ) {
60            throw new ConfigException( '$wgKartographerNearby requires GeoData and CirrusSearch extensions' );
61        }
62
63        return $limit === true ? 300 : (int)$limit;
64    }
65
66}