MediaWiki
REL1_35
fixUserRegistration.php
Go to the documentation of this file.
1
<?php
25
require_once __DIR__ .
'/Maintenance.php'
;
26
27
use
MediaWiki\MediaWikiServices
;
28
34
class
FixUserRegistration
extends
Maintenance
{
35
public
function
__construct
() {
36
parent::__construct();
37
$this->
addDescription
(
'Fix the user_registration field'
);
38
$this->
setBatchSize
( 1000 );
39
}
40
41
public
function
execute
() {
42
$dbw = $this->
getDB
(
DB_MASTER
);
43
44
$lastId = 0;
45
$lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
46
do
{
47
// Get user IDs which need fixing
48
$res
= $dbw->select(
49
'user'
,
50
'user_id'
,
51
[
52
'user_id > '
. $dbw->addQuotes( $lastId ),
53
'user_registration IS NULL'
54
],
55
__METHOD__,
56
[
57
'LIMIT'
=> $this->getBatchSize(),
58
'ORDER BY'
=>
'user_id'
,
59
]
60
);
61
foreach
(
$res
as $row ) {
62
$id = $row->user_id;
63
$lastId = $id;
64
// Get first edit time
65
$actorQuery = ActorMigration::newMigration()
66
->getWhere( $dbw,
'rev_user'
,
User::newFromId
( $id ) );
67
$timestamp = $dbw->selectField(
68
[
'revision'
] + $actorQuery[
'tables'
],
69
'MIN(rev_timestamp)'
,
70
$actorQuery[
'conds'
],
71
__METHOD__,
72
[],
73
$actorQuery[
'joins'
]
74
);
75
// Update
76
if
( $timestamp !==
null
) {
77
$dbw->update(
78
'user'
,
79
[
'user_registration'
=> $timestamp ],
80
[
'user_id'
=> $id ],
81
__METHOD__
82
);
83
$user =
User::newFromId
( $id );
84
$user->invalidateCache();
85
$this->
output
(
"Set registration for #$id to $timestamp\n"
);
86
}
else
{
87
$this->
output
(
"Could not find registration for #$id NULL\n"
);
88
}
89
}
90
$this->
output
(
"Waiting for replica DBs..."
);
91
$lbFactory->waitForReplication();
92
$this->
output
(
" done.\n"
);
93
}
while
(
$res
->numRows() >= $this->getBatchSize() );
94
}
95
}
96
97
$maintClass
= FixUserRegistration::class;
98
require_once
RUN_MAINTENANCE_IF_MAIN
;
getDB
getDB()
RUN_MAINTENANCE_IF_MAIN
const RUN_MAINTENANCE_IF_MAIN
Definition
Maintenance.php:38
FixUserRegistration
Maintenance script that fixes the user_registration field.
Definition
fixUserRegistration.php:34
FixUserRegistration\__construct
__construct()
Default constructor.
Definition
fixUserRegistration.php:35
FixUserRegistration\execute
execute()
Do the actual work.
Definition
fixUserRegistration.php:41
Maintenance
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
Definition
Maintenance.php:55
Maintenance\output
output( $out, $channel=null)
Throw some output to the user.
Definition
Maintenance.php:432
Maintenance\addDescription
addDescription( $text)
Set the description text.
Definition
Maintenance.php:325
Maintenance\setBatchSize
setBatchSize( $s=0)
Set the batch size.
Definition
Maintenance.php:372
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition
MediaWikiServices.php:152
User\newFromId
static newFromId( $id)
Static factory method for creation from a given user ID.
Definition
User.php:565
$maintClass
$maintClass
Definition
fixUserRegistration.php:97
DB_MASTER
const DB_MASTER
Definition
defines.php:29
$res
$res
Definition
testCompression.php:57
maintenance
fixUserRegistration.php
Generated on Sat Apr 6 2024 00:08:24 for MediaWiki by
1.9.8