Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 32 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
PageDisplay | |
0.00% |
0 / 32 |
|
0.00% |
0 / 2 |
182 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
2 | |||
onBeforePageDisplay | |
0.00% |
0 / 29 |
|
0.00% |
0 / 1 |
156 |
1 | <?php |
2 | |
3 | namespace MediaWiki\CheckUser\HookHandler; |
4 | |
5 | use MediaWiki\Config\Config; |
6 | use MediaWiki\Hook\BeforePageDisplayHook; |
7 | use MediaWiki\Permissions\PermissionManager; |
8 | use MediaWiki\User\Options\UserOptionsLookup; |
9 | |
10 | class 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 | } |