Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
EditPageHooks
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 2
12
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 onEditPage__showReadOnlyForm_initial
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace WikimediaEvents\EditPage;
4
5use MediaWiki\Hook\EditPage__showReadOnlyForm_initialHook;
6use MediaWiki\Permissions\PermissionManager;
7use WikimediaEvents\BlockUtils;
8
9/**
10 * Hooks related to T310390.
11 *
12 * we didn't choose hook names, so:
13 * @phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName
14 */
15class EditPageHooks implements EditPage__showReadOnlyForm_initialHook {
16
17    /** @var PermissionManager */
18    private $permManager;
19
20    /**
21     * @param PermissionManager $permManager
22     */
23    public function __construct(
24        PermissionManager $permManager
25    ) {
26        $this->permManager = $permManager;
27    }
28
29    /** @inheritDoc */
30    public function onEditPage__showReadOnlyForm_initial( $editor, $out ) {
31        $user = $out->getUser();
32        $title = $editor->getTitle();
33
34        // $errors = $editor->getEditPermissionErrors( PermissionManager::RIGOR_FULL );
35        $errors = $this->permManager->getPermissionErrors(
36            'edit',
37            $user,
38            $title,
39            PermissionManager::RIGOR_FULL,
40            []
41        );
42        $errorMsgs = BlockUtils::getBlockErrorMsgs( $errors );
43
44        if ( $errorMsgs['all'] ) {
45            BlockUtils::logBlockedEditAttempt( $user, $title, 'wikieditor', 'desktop' );
46        }
47
48        return true; // ignored
49    }
50}