Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
RollbackCompleteHookHandler
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 3
56
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
 onRollbackComplete
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
 shouldSendTalkPageMessage
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace AutoModerator\Hooks;
4
5use AutoModerator\TalkPageMessageSender;
6use AutoModerator\Util;
7use MediaWiki\Config\Config;
8use MediaWiki\Logger\LoggerFactory;
9use MediaWiki\Page\Hook\RollbackCompleteHook;
10use MediaWiki\Page\WikiPage;
11use MediaWiki\Revision\RevisionRecord;
12use MediaWiki\User\UserGroupManager;
13use MediaWiki\User\UserIdentity;
14use MediaWiki\User\UserIdentityUtils;
15
16class RollbackCompleteHookHandler implements RollbackCompleteHook {
17    public function __construct(
18        private readonly UserGroupManager $userGroupManager,
19        private readonly Config $config,
20        private readonly TalkPageMessageSender $talkPageMessageSender,
21        private readonly UserIdentityUtils $userIdentityUtils,
22    ) {
23    }
24
25    /**
26     * @param WikiPage $wikiPage
27     * @param UserIdentity $user
28     * @param RevisionRecord $revision
29     * @param RevisionRecord $current
30     */
31    public function onRollbackComplete( $wikiPage, $user, $revision, $current ) {
32        $autoModeratorUser = Util::getAutoModeratorUser( $this->config, $this->userGroupManager );
33        $revId = $current->getId();
34        $rollbackRevId = $wikiPage->getRevisionRecord()->getId();
35        if ( $autoModeratorUser->getId() === $user->getId() ) {
36            if ( $this->shouldSendTalkPageMessage( $current ) ) {
37                $this->talkPageMessageSender->insertAutoModeratorSendRevertTalkPageMsgJob(
38                        $wikiPage->getTitle(),
39                        $revId,
40                        $rollbackRevId,
41                        $autoModeratorUser,
42                        LoggerFactory::getInstance( 'AutoModerator' ) );
43            }
44        }
45    }
46
47    private function shouldSendTalkPageMessage( RevisionRecord $current ): bool {
48        $isMessageEnabled = Util::getRevertTalkPageMessageEnabled( $this->config );
49        $isMessageRegisteredUsersOnly = Util::getRevertTalkPageMessageRegisteredUsersOnly( $this->config );
50        $isCurrentUserNamed = $this->userIdentityUtils->isNamed( $current->getUser() );
51
52        return $isMessageEnabled && ( $isCurrentUserNamed || !$isMessageRegisteredUsersOnly );
53    }
54}