From 35f428a2a7a9e8d9142692c2334091bd607bfd0e Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Mon, 12 Jun 2017 13:19:57 -0400 Subject: [PATCH] FileDeleteForm: Create log entry even if the page didn't exist Deleting a file with no description page should still produce a log entry. Bug: T167712 Change-Id: Icc7d9d12365d38faa502689ceefb4d1ee5f60210 --- includes/FileDeleteForm.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php index f284d924a0..e7b4a1f8e6 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -202,7 +202,27 @@ class FileDeleteForm { if ( $deleteStatus->isOK() ) { $status = $file->delete( $reason, $suppress, $user ); if ( $status->isOK() ) { - $status->value = $deleteStatus->value; // log id + if ( $deleteStatus->value === null ) { + // No log ID from doDeleteArticleReal(), probably + // because the page/revision didn't exist, so create + // one here. + $logtype = $suppress ? 'suppress' : 'delete'; + $logEntry = new ManualLogEntry( $logtype, 'delete' ); + $logEntry->setPerformer( $user ); + $logEntry->setTarget( clone $title ); + $logEntry->setComment( $reason ); + $logEntry->setTags( $tags ); + $logid = $logEntry->insert(); + $dbw->onTransactionPreCommitOrIdle( + function () use ( $dbw, $logEntry, $logid ) { + $logEntry->publish( $logid ); + }, + __METHOD__ + ); + $status->value = $logid; + } else { + $status->value = $deleteStatus->value; // log id + } $dbw->endAtomic( __METHOD__ ); } else { // Page deleted but file still there? rollback page delete -- 2.20.1