$this->rebuildRecentChangesTablePass2();
$this->rebuildRecentChangesTablePass3();
$this->rebuildRecentChangesTablePass4();
+ $this->purgeFeeds();
$this->output( "Done.\n" );
}
$lastCurId = 0;
$lastOldId = 0;
- while ( $obj = $dbw->fetchObject( $res ) ) {
+ foreach ( $res as $obj ) {
$new = 0;
if( $obj->rc_cur_id != $lastCurId ) {
# Switch! Look up the previous last edit, if any
$emit = $obj->rc_timestamp;
$sql2 = "SELECT rev_id,rev_len FROM $revision " .
"WHERE rev_page={$lastCurId} ".
- "AND rev_timestamp<'{$emit}' ORDER BY rev_timestamp DESC LIMIT 1";
+ "AND rev_timestamp<'{$emit}' ORDER BY rev_timestamp DESC";
+ $sql2 = $dbw->limitResult($sql2, 1, false);
$res2 = $dbw->query( $sql2 );
if( $row = $dbw->fetchObject( $res2 ) ) {
$lastOldId = intval($row->rev_id);
'rc_this_oldid' => 0,
'rc_last_oldid' => 0,
'rc_type' => RC_LOG,
- 'rc_cur_id' => 'COALESCE(page_id, 0)',
+ 'rc_cur_id' => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
'rc_log_type' => 'log_type',
'rc_log_action' => 'log_action',
'rc_logid' => 'log_id',
"WHERE ug_group IN($botwhere) AND user_id = ug_user";
$res = $dbw->query( $sql, DB_MASTER );
- while( $obj = $dbw->fetchObject( $res ) ) {
+ foreach( $res as $obj ) {
$botusers[] = $dbw->addQuotes( $obj->user_name );
}
# Fill in the rc_bot field
"WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
$res = $dbw->query( $sql, DB_MASTER );
- while( $obj = $dbw->fetchObject( $res ) ) {
+ foreach( $res as $obj ) {
$patrolusers[] = $dbw->addQuotes( $obj->user_name );
}
$dbw->freeResult( $res );
}
+
+ /**
+ * Purge cached feeds in $messageMemc
+ */
+ private function purgeFeeds() {
+ global $wgFeedClasses, $messageMemc;
+
+ $this->output( "Deleting feed timestamps.\n" );
+
+ foreach( $wgFeedClasses as $feed => $className ) {
+ $messageMemc->delete( wfMemcKey( 'rcfeed', $feed, 'timestamp' ) ); # Good enough for now.
+ }
+ }
+
}
$maintClass = "RebuildRecentchanges";