X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2FFileDeleteForm.php;h=8b41ad4c73f1ce8070c7a0224083ec61ccee6e63;hb=97407a1ca5cc7f1fe24f0736e8d861b4c510ed15;hp=5e7f5b2635f6302de5bdb7b898b16c588e9e5238;hpb=63af3e05c3af08b777b0a0b92466a9843f855f51;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php index 5e7f5b2635..8b41ad4c73 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -190,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 ); @@ -198,11 +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