Page MenuHomePhorge

D25051.1732325824.diff
No OneTemporary

D25051.1732325824.diff

diff --git a/resources/sql/autopatches/20220912.fileattachment.01.delete.sql b/resources/sql/autopatches/20220912.fileattachment.01.delete.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20220912.fileattachment.01.delete.sql
@@ -0,0 +1,6 @@
+USE {$NAMESPACE}_file;
+ DELETE FROM file_attachment
+ WHERE NOT EXISTS
+ (SELECT *
+ FROM file
+ WHERE phid=file_attachment.filePHID)
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -3457,6 +3457,7 @@
'PhabricatorFileAltTextTransaction' => 'applications/files/xaction/PhabricatorFileAltTextTransaction.php',
'PhabricatorFileAttachment' => 'applications/files/storage/PhabricatorFileAttachment.php',
'PhabricatorFileAttachmentQuery' => 'applications/files/query/PhabricatorFileAttachmentQuery.php',
+ 'PhabricatorFileAttachmentsDestructionEngineExtension' => 'applications/files/engineextension/PhabricatorFilesAttachmentsDestructionEngineExtension.php',
'PhabricatorFileBundleLoader' => 'applications/files/query/PhabricatorFileBundleLoader.php',
'PhabricatorFileChunk' => 'applications/files/storage/PhabricatorFileChunk.php',
'PhabricatorFileChunkIterator' => 'applications/files/engine/PhabricatorFileChunkIterator.php',
@@ -9918,6 +9919,7 @@
'PhabricatorExtendedPolicyInterface',
),
'PhabricatorFileAttachmentQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'PhabricatorFileAttachmentsDestructionEngineExtension' => 'PhabricatorDestructionEngineExtension',
'PhabricatorFileBundleLoader' => 'Phobject',
'PhabricatorFileChunk' => array(
'PhabricatorFileDAO',
diff --git a/src/applications/files/engineextension/PhabricatorFileAttachmentDestructionEngineExtension.php b/src/applications/files/engineextension/PhabricatorFileAttachmentDestructionEngineExtension.php
new file mode 100644
--- /dev/null
+++ b/src/applications/files/engineextension/PhabricatorFileAttachmentDestructionEngineExtension.php
@@ -0,0 +1,28 @@
+<?php
+
+final class PhabricatorFileAttachmentDestructionEngineExtension
+ extends PhabricatorDestructionEngineExtension {
+
+ const EXTENSIONKEY = 'attachments';
+
+ public function getExtensionName() {
+ return pht('File Attachments');
+ }
+
+ public function canDestroyObject(
+ PhabricatorDestructionEngine $engine,
+ $object) {
+ return ($object instanceof PhabricatorFile);
+ }
+
+ public function destroyObject(
+ PhabricatorDestructionEngine $engine,
+ $object) {
+ $file_phid = $object->getPHID();
+ $attachments = id(new PhabricatorFileAttachmentQuery())
+ ->setViewer(PhabricatorUser::getOmnipotentUser())
+ ->withFilePHIDs(array($file_phid))
+ ->execute();
+ mpull($attachments, 'delete');
+ }
+}

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 23, 01:37 (17 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
989448
Default Alt Text
D25051.1732325824.diff (2 KB)

Event Timeline