X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FFileDeleteForm.php;h=e7b4a1f8e61b5c07cc84f839faa24dc7f7568e85;hb=2632183a49f6f8845fdbd77bceaccb6aafe4003f;hp=f284d924a06e4e395dd84f7b0bade6bdc3d82508;hpb=ae3419f53202630837be5887a5539270526c6a63;p=lhc%2Fweb%2Fwiklou.git 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