50 bool $deleteTalk =
false
55 $status = $file->
deleteOldFile( $oldimage, $reason, $user, $suppress );
56 if ( $status->isOK() ) {
58 $logComment =
wfMessage(
'deletedrevision', $oldimage )->inContentLanguage()->text();
59 if ( trim( $reason ) !==
'' ) {
60 $logComment .=
wfMessage(
'colon-separator' )
61 ->inContentLanguage()->text() . $reason;
64 $logtype = $suppress ?
'suppress' :
'delete';
67 $logEntry->setPerformer( $user );
68 $logEntry->setTarget( $title );
69 $logEntry->setComment( $logComment );
70 $logEntry->addTags( $tags );
71 $logid = $logEntry->insert();
72 $logEntry->publish( $logid );
74 $status->value = $logid;
77 $status = Status::newFatal(
'cannotdelete',
80 $page = $services->getWikiPageFactory()->newFromTitle( $title );
81 '@phan-var \MediaWiki\Page\WikiFilePage $page';
82 $deleter = $services->getUserFactory()->newFromUserIdentity( $user );
83 $deletePage = $services->getDeletePageFactory()->newDeletePage( $page, $deleter );
85 $checkStatus = $deletePage->canProbablyDeleteAssociatedTalk();
86 if ( !$checkStatus->isGood() ) {
87 return Status::wrap( $checkStatus );
89 $deletePage->setDeleteAssociatedTalk(
true );
91 $dbw = $services->getConnectionProvider()->getPrimaryDatabase();
92 $dbw->startAtomic( __METHOD__, $dbw::ATOMIC_CANCELABLE );
94 $deleteStatus = $deletePage
95 ->setSuppress( $suppress )
96 ->setTags( $tags ?: [] )
97 ->deleteIfAllowed( $reason );
101 if ( $deleteStatus->isOK() ) {
102 $status = $file->
deleteFile( $reason, $user, $suppress );
103 if ( $status->isOK() ) {
105 $status->value =
false;
108 if ( $deletedID !==
null ) {
109 $status->value = $deletedID;
112 $logtype = $suppress ?
'suppress' :
'delete';
113 $logEntry =
new ManualLogEntry( $logtype,
'delete' );
114 $logEntry->setPerformer( $user );
115 $logEntry->setTarget( $title );
116 $logEntry->setComment( $reason );
117 $logEntry->addTags( $tags );
118 $logid = $logEntry->insert();
119 $dbw->onTransactionPreCommitOrIdle(
120 static function () use ( $logEntry, $logid ) {
121 $logEntry->publish( $logid );
125 $status->value = $logid;
128 $dbw->endAtomic( __METHOD__ );
131 $dbw->cancelAtomic( __METHOD__ );
134 $dbw->endAtomic( __METHOD__ );
138 if ( $status->isOK() ) {
139 $legacyUser = $services->getUserFactory()
140 ->newFromUserIdentity( $user );
141 (
new HookRunner( $services->getHookContainer() ) )
142 ->onFileDeleteComplete( $file, $oldimage, $page, $legacyUser, $reason );