Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
20 / 20
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
BetaFeaturePreferencesHandler
100.00% covered (success)
100.00%
20 / 20
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 onGetBetaFeaturePreferences
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2namespace MediaWiki\IPInfo\HookHandler;
3
4use MediaWiki\Config\Config;
5use MediaWiki\Permissions\PermissionManager;
6use MediaWiki\User\User;
7
8class BetaFeaturePreferencesHandler {
9
10    private Config $config;
11
12    private PermissionManager $permissionManager;
13
14    public function __construct(
15        Config $config,
16        PermissionManager $permissionManager
17    ) {
18        $this->config = $config;
19        $this->permissionManager = $permissionManager;
20    }
21
22    /**
23     * @param User $user
24     * @param array[] &$betaPrefs
25     */
26    public function onGetBetaFeaturePreferences( $user, &$betaPrefs ) {
27        $extensionAssetsPath = $this->config->get( 'ExtensionAssetsPath' );
28
29        if (
30            $this->permissionManager->userHasRight( $user, 'ipinfo' )
31        ) {
32            $url = "https://meta.wikimedia.org/wiki/";
33            $infoLink = $url . "IP_Editing:_Privacy_Enhancement_and_Abuse_Mitigation/IP_Info_feature";
34            $discussionLink = $url . "Talk:IP_Editing:_Privacy_Enhancement_and_Abuse_Mitigation/IP_Info_feature";
35
36            $betaPrefs['ipinfo-beta-feature-enable'] = [
37                'label-message' => 'ipinfo-beta-feature-title',
38                'desc-message' => 'ipinfo-beta-feature-description',
39                'screenshot' => [
40                    'ltr' => "$extensionAssetsPath/IPInfo/src/images/ipinfo-icon-ltr.svg",
41                    'rtl' => "$extensionAssetsPath/IPInfo/src/images/ipinfo-icon-rtl.svg",
42                ],
43                'info-link' => $infoLink,
44                'discussion-link' => $discussionLink,
45                'requirements' => [
46                    'javascript' => true,
47                ],
48            ];
49        }
50    }
51}