X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FFileDeleteForm.php;h=8b41ad4c73f1ce8070c7a0224083ec61ccee6e63;hb=8a9a094da341d6d50b0eeb4ff52d3c6500687aaa;hp=6d74af2da1ebf64ff157ad03d648b030755a60f7;hpb=a77c09c03baf8ee1dd7527db4c20c5be2cd2c298;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php index 6d74af2da1..8b41ad4c73 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -180,6 +180,8 @@ class FileDeleteForm { $logEntry->setComment( $logComment ); $logid = $logEntry->insert(); $logEntry->publish( $logid ); + + $status->value = $logid; } } else { $status = Status::newFatal( 'cannotdelete', @@ -188,6 +190,7 @@ class FileDeleteForm { $page = WikiPage::factory( $title ); $dbw = wfGetDB( DB_MASTER ); try { + $dbw->startAtomic( __METHOD__ ); // delete the associated article first $error = ''; $deleteStatus = $page->doDeleteArticleReal( $reason, $suppress, 0, false, $error, $user ); @@ -196,10 +199,15 @@ class FileDeleteForm { if ( $deleteStatus->isOK() ) { $status = $file->delete( $reason, $suppress, $user ); if ( $status->isOK() ) { - $dbw->commit( __METHOD__ ); + $status->value = $deleteStatus->value; // log id + $dbw->endAtomic( __METHOD__ ); } else { + // Page deleted but file still there? rollback page delete $dbw->rollback( __METHOD__ ); } + } else { + // Done; nothing changed + $dbw->endAtomic( __METHOD__ ); } } catch ( Exception $e ) { // Rollback before returning to prevent UI from displaying @@ -297,7 +305,7 @@ class FileDeleteForm { if ( $wgUser->isAllowed( 'editinterface' ) ) { $title = wfMessage( 'filedelete-reason-dropdown' )->inContentLanguage()->getTitle(); - $link = Linker::link( + $link = Linker::linkKnown( $title, wfMessage( 'filedelete-edit-reasonlist' )->escaped(), array(),