Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
MediaWikiPageUpdaterFactory
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
3 / 3
7
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getPageUpdater
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 setPatrolStatus
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
5
1<?php
2
3declare( strict_types = 1 );
4
5namespace EntitySchema\DataAccess;
6
7use MediaWiki\MediaWikiServices;
8use MediaWiki\Storage\PageUpdater;
9use MediaWiki\Title\Title;
10use MediaWiki\User\User;
11use RecentChange;
12
13/**
14 * @license GPL-2.0-or-later
15 */
16class MediaWikiPageUpdaterFactory {
17
18    private User $user;
19
20    public function __construct( User $user ) {
21        $this->user = $user;
22    }
23
24    public function getPageUpdater( string $pageTitleString ): PageUpdater {
25        $title = Title::makeTitle( NS_ENTITYSCHEMA_JSON, $pageTitleString );
26        $wikipage = MediaWikiServices::getInstance()->getWikiPageFactory()->newFromTitle( $title );
27        $pageUpdater = $wikipage->newPageUpdater( $this->user );
28        $this->setPatrolStatus( $pageUpdater, $title );
29
30        return $pageUpdater;
31    }
32
33    private function setPatrolStatus( PageUpdater $pageUpdater, Title $title ): void {
34        global $wgUseNPPatrol, $wgUseRCPatrol;
35        $needsPatrol = $wgUseRCPatrol || ( $wgUseNPPatrol && !$title->exists() );
36        $permissionsManager = MediaWikiServices::getInstance()->getPermissionManager();
37
38        if (
39            $needsPatrol
40            && $permissionsManager->userCan( 'autopatrol', $this->user, $title )
41        ) {
42            $pageUpdater->setRcPatrolStatus( RecentChange::PRC_AUTOPATROLLED );
43        }
44    }
45
46}