Merge "Convert article delete to use OOUI"
[lhc/web/wiklou.git] / includes / FileDeleteForm.php
index f850152..e7b4a1f 100644 (file)
@@ -21,6 +21,7 @@
  * @author Rob Church <robchur@gmail.com>
  * @ingroup Media
  */
+use MediaWiki\MediaWikiServices;
 
 /**
  * File deletion user interface
@@ -201,11 +202,32 @@ 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
-                                       wfGetLBFactory()->rollbackMasterChanges( __METHOD__ );
+                                       $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+                                       $lbFactory->rollbackMasterChanges( __METHOD__ );
                                }
                        } else {
                                // Done; nothing changed
@@ -301,9 +323,10 @@ class FileDeleteForm {
 
                        if ( $wgUser->isAllowed( 'editinterface' ) ) {
                                $title = wfMessage( 'filedelete-reason-dropdown' )->inContentLanguage()->getTitle();
-                               $link = Linker::linkKnown(
+                               $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
+                               $link = $linkRenderer->makeKnownLink(
                                        $title,
-                                       wfMessage( 'filedelete-edit-reasonlist' )->escaped(),
+                                       wfMessage( 'filedelete-edit-reasonlist' )->text(),
                                        [],
                                        [ 'action' => 'edit' ]
                                );