Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
CentralAuthExpireTemporaryAccounts
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 3
20
0.00% covered (danger)
0.00%
0 / 1
 initServices
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getTempAccountsToExpireQueryBuilder
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
2
 queryBuilderToUserIdentities
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3use MediaWiki\Extension\CentralAuth\CentralAuthServices;
4use MediaWiki\Extension\CentralAuth\User\GlobalUserSelectQueryBuilder;
5use MediaWiki\Extension\CentralAuth\User\GlobalUserSelectQueryBuilderFactory;
6use Wikimedia\LightweightObjectStore\ExpirationAwareness;
7use Wikimedia\Rdbms\SelectQueryBuilder;
8
9$IP = getenv( 'MW_INSTALL_PATH' );
10if ( $IP === false ) {
11    $IP = __DIR__ . '/../../..';
12}
13
14require_once "$IP/maintenance/expireTemporaryAccounts.php";
15
16// @phpcs:ignore MediaWiki.Files.ClassMatchesFilename.NotMatch
17class CentralAuthExpireTemporaryAccounts extends ExpireTemporaryAccounts {
18
19    private GlobalUserSelectQueryBuilderFactory $globalUserSelectQueryBuilderFactory;
20
21    /**
22     * @inheritDoc
23     */
24    protected function initServices(): void {
25        parent::initServices();
26
27        $this->globalUserSelectQueryBuilderFactory = CentralAuthServices::getGlobalUserSelectQueryBuilderFactory();
28    }
29
30    /**
31     * @inheritDoc
32     */
33    protected function getTempAccountsToExpireQueryBuilder(
34        int $registeredBeforeUnix,
35        int $frequencyDays
36    ): SelectQueryBuilder {
37        return $this->globalUserSelectQueryBuilderFactory->newGlobalUserSelectQueryBuilder()
38            ->temp()
39            ->whereRegisteredTimestamp( wfTimestamp(
40                TS_MW,
41                $registeredBeforeUnix
42            ), true )
43            ->whereRegisteredTimestamp( wfTimestamp(
44                TS_MW,
45                $registeredBeforeUnix - ExpirationAwareness::TTL_DAY * $frequencyDays
46            ), false );
47    }
48
49    /**
50     * @inheritDoc
51     */
52    protected function queryBuilderToUserIdentities( SelectQueryBuilder $queryBuilder ): Iterator {
53        if ( $queryBuilder instanceof GlobalUserSelectQueryBuilder ) {
54            return $queryBuilder->fetchLocalUserIdentitites();
55        }
56
57        // not expected to happen; might be caused by an error in core's expireTemporaryAccounts.php?
58        throw new LogicException( '$queryBuilder is not GlobalUserSelectQueryBuilder' );
59    }
60}
61
62$maintClass = CentralAuthExpireTemporaryAccounts::class;
63require_once RUN_MAINTENANCE_IF_MAIN;