* @todo Move this UI stuff somewhere else
*
* @see ContentHandler::getActionOverrides
+ * @return array
*/
public function getActionOverrides() {
return $this->getContentHandler()->getActionOverrides();
}
if ( $useParserCache ) {
- $parserOutput = ParserCache::singleton()->get( $this, $parserOptions );
+ $parserOutput = MediaWikiServices::getInstance()->getParserCache()
+ ->get( $this, $parserOptions );
if ( $parserOutput !== false ) {
return $parserOutput;
}
// Save it to the parser cache.
// Make sure the cache time matches page_touched to avoid double parsing.
- ParserCache::singleton()->save(
+ MediaWikiServices::getInstance()->getParserCache()->save(
$editInfo->output, $this, $editInfo->popts,
$revision->getTimestamp(), $editInfo->revid
);
* @param array|string &$error Array of errors to append to
* @param User $user The deleting user
* @param array $tags Tags to apply to the deletion action
+ * @param string $logsubtype
* @return Status Status object; if successful, $status->value is the log_id of the
* deletion log entry. If the page couldn't be deleted because it wasn't
* found, $status is a non-fatal 'cannotdelete' error
'FOR UPDATE',
$commentQuery['joins']
);
+
// Build their equivalent archive rows
$rowsInsert = [];
$revids = [];
+
+ /** @var int[] Revision IDs of edits that were made by IPs */
+ $ipRevIds = [];
+
foreach ( $res as $row ) {
$comment = $revCommentStore->getComment( $row );
$rowInsert = [
}
$rowsInsert[] = $rowInsert;
$revids[] = $row->rev_id;
+
+ // Keep track of IP edits, so that the corresponding rows can
+ // be deleted in the ip_changes table.
+ if ( (int)$row->rev_user === 0 && IP::isValid( $row->rev_user_text ) ) {
+ $ipRevIds[] = $row->rev_id;
+ }
}
// Copy them into the archive table
$dbw->insert( 'archive', $rowsInsert, __METHOD__ );
$dbw->delete( 'revision_comment_temp', [ 'revcomment_rev' => $revids ], __METHOD__ );
}
+ // Also delete records from ip_changes as applicable.
+ if ( count( $ipRevIds ) > 0 ) {
+ $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $ipRevIds ], __METHOD__ );
+ }
+
// Log the deletion, if the page was suppressed, put it in the suppression log instead
$logtype = $suppress ? 'suppress' : 'delete';