Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
PageDisplay
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 2
182
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 onBeforePageDisplay
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 1
156
1<?php
2
3namespace MediaWiki\CheckUser\HookHandler;
4
5use MediaWiki\Config\Config;
6use MediaWiki\Hook\BeforePageDisplayHook;
7use MediaWiki\Permissions\PermissionManager;
8use MediaWiki\User\Options\UserOptionsLookup;
9
10class PageDisplay implements BeforePageDisplayHook {
11    private Config $config;
12    private PermissionManager $permissionManager;
13    protected UserOptionsLookup $userOptionsLookup;
14
15    /**
16     * @param Config $config
17     * @param PermissionManager $permissionManager
18     * @param UserOptionsLookup $userOptionsLookup
19     */
20    public function __construct(
21        Config $config,
22        PermissionManager $permissionManager,
23        UserOptionsLookup $userOptionsLookup
24    ) {
25        $this->config = $config;
26        $this->permissionManager = $permissionManager;
27        $this->userOptionsLookup = $userOptionsLookup;
28    }
29
30    /**
31     * @inheritDoc
32     */
33    public function onBeforePageDisplay( $out, $skin ): void {
34        $action = $out->getRequest()->getVal( 'action' );
35        if (
36            $action !== 'history' &&
37            $action !== 'info' &&
38            $out->getRequest()->getRawVal( 'diff' ) === null &&
39            $out->getRequest()->getRawVal( 'oldid' ) === null &&
40            !( $out->getTitle() &&
41                ( $out->getTitle()->isSpecialPage() )
42            )
43        ) {
44            return;
45        }
46
47        $user = $out->getUser();
48
49        if (
50            !$this->permissionManager->userHasRight( $user, 'checkuser-temporary-account-no-preference' ) &&
51            (
52                !$this->permissionManager->userHasRight( $user, 'checkuser-temporary-account' )
53                || !$this->userOptionsLookup->getOption(
54                    $user,
55                    'checkuser-temporary-account-enable'
56                )
57            )
58        ) {
59            return;
60        }
61
62        // If the user is blocked
63        if ( $user->getBlock() ) {
64            return;
65        }
66
67        // Config needed for a js-added message on Special:Block
68        if ( $out->getTitle()->isSpecial( 'Block' ) ) {
69            $out->addJSConfigVars( [
70                'wgCUDMaxAge' => $this->config->get( 'CUDMaxAge' )
71            ] );
72        }
73
74        $out->addModules( 'ext.checkUser' );
75        $out->addModuleStyles( 'ext.checkUser.styles' );
76        $out->addJSConfigVars( [
77            'wgCheckUserTemporaryAccountMaxAge' => $this->config->get( 'CheckUserTemporaryAccountMaxAge' ),
78            'wgCheckUserEventTablesMigrationStage' => $this->config->get( 'CheckUserEventTablesMigrationStage' ),
79        ] );
80    }
81
82}