Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 21 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
CentralAuthExpireTemporaryAccounts | |
0.00% |
0 / 15 |
|
0.00% |
0 / 3 |
20 | |
0.00% |
0 / 1 |
initServices | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
getTempAccountsToExpireQueryBuilder | |
0.00% |
0 / 10 |
|
0.00% |
0 / 1 |
2 | |||
queryBuilderToUserIdentities | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
6 |
1 | <?php |
2 | |
3 | use MediaWiki\Extension\CentralAuth\CentralAuthServices; |
4 | use MediaWiki\Extension\CentralAuth\User\GlobalUserSelectQueryBuilder; |
5 | use MediaWiki\Extension\CentralAuth\User\GlobalUserSelectQueryBuilderFactory; |
6 | use Wikimedia\LightweightObjectStore\ExpirationAwareness; |
7 | use Wikimedia\Rdbms\SelectQueryBuilder; |
8 | |
9 | $IP = getenv( 'MW_INSTALL_PATH' ); |
10 | if ( $IP === false ) { |
11 | $IP = __DIR__ . '/../../..'; |
12 | } |
13 | |
14 | require_once "$IP/maintenance/expireTemporaryAccounts.php"; |
15 | |
16 | // @phpcs:ignore MediaWiki.Files.ClassMatchesFilename.NotMatch |
17 | class 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; |
63 | require_once RUN_MAINTENANCE_IF_MAIN; |