Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
PurgeExpiredUserrights
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 execute
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2/**
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 * http://www.gnu.org/copyleft/gpl.html
17 *
18 * @file
19 */
20
21use MediaWiki\Maintenance\Maintenance;
22
23// @codeCoverageIgnoreStart
24require_once __DIR__ . '/Maintenance.php';
25// @codeCoverageIgnoreEnd
26
27/*
28 * Remove expired userrights from user_groups table and move them to former_user_groups.
29 *
30 * By default, this does not need to be run. The UserGroupManager service naturally
31 * takes care of detecting expired rows when it is written to (e.g. from SpecialUserrights)
32 * and queues UserGroupExpiryJob to purge expired rows.
33 *
34 * Large wiki farms may experience stale rows if their users manage local groups
35 * via a central wiki. In that case, UserGroupExpiryJob may run rarely or never
36 * from local wikis, in which case this script can help to periodically clean up
37 * expired rows.
38 *
39 * @since 1.31
40 * @ingroup Maintenance
41 * @author Eddie Greiner-Petter <wikimedia.org at eddie-sh.de>
42 */
43class PurgeExpiredUserrights extends Maintenance {
44    public function __construct() {
45        parent::__construct();
46        $this->addDescription( 'Move expired userrights from user_groups to former_user_groups table.' );
47    }
48
49    public function execute() {
50        $this->output( "Purging expired user rights...\n" );
51        $res = $this->getServiceContainer()->getUserGroupManager()->purgeExpired();
52        if ( $res === false ) {
53            $this->output( "Purging failed.\n" );
54        } else {
55            $this->output( "$res rows purged.\n" );
56        }
57    }
58}
59
60// @codeCoverageIgnoreStart
61$maintClass = PurgeExpiredUserrights::class;
62require_once RUN_MAINTENANCE_IF_MAIN;
63// @codeCoverageIgnoreEnd