Going ahead and adding this field while other DB updates are pending.
[lhc/web/wiklou.git] / maintenance / initEditCount.php
1 <?php
2
3 require_once "commandLine.inc";
4
5 // @fixme: add replication-friendly batch mode
6
7 $dbw = wfGetDB( DB_MASTER );
8 $user = $dbw->tableName( 'user' );
9 $revision = $dbw->tableName( 'revision' );
10
11 $dbver = $dbw->getServerVersion();
12 if( ($dbw instanceof DatabaseMySql && version_compare( $dbver, '4.1' ) < 0)
13 || isset( $options['force-mysql4'] ) ) {
14
15 echo "Warning: MySQL $dbver; using hacky MySQL 4.0 compatibility query...\n";
16 $sql = "CREATE TEMPORARY TABLE temp_editcount (
17 temp_user_id INT,
18 temp_user_editcount INT
19 )";
20 $dbw->query( $sql );
21
22 $sql = "INSERT INTO temp_editcount
23 (temp_user_id, temp_user_editcount)
24 SELECT rev_user, COUNT(rev_user)
25 FROM $revision GROUP BY rev_user";
26 $dbw->query( $sql );
27
28 $sql = "UPDATE $user
29 LEFT OUTER JOIN temp_editcount ON user_id=temp_user_id
30 SET user_editcount=IF(temp_user_editcount IS NULL,0,temp_user_editcount)";
31 $dbw->query( $sql );
32 } else {
33 // Subselect should work on modern MySQLs etc
34 $sql = "UPDATE $user SET user_editcount=(SELECT COUNT(*) FROM $revision WHERE rev_user=user_id)";
35 $dbw->query( $sql );
36 }
37
38 echo "Done!\n";
39
40 ?>