diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-11-07 12:56:24 +0100 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-11-07 12:56:24 +0100 |
| commit | 25def91da52f7bcf8a3d2c693c2ce48db41491b6 (patch) | |
| tree | 47873182336d4fef10ce4e34f5e4046eb4e31849 | |
| parent | 5929e4195a5cff6586f54a1ebb76c9a943101f66 (diff) | |
delete files from orphaned message folders as well, fixes #6024biest-6024
| -rw-r--r-- | lib/cronjobs/garbage_collector.php | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/lib/cronjobs/garbage_collector.php b/lib/cronjobs/garbage_collector.php index 4a029ef..1e6a69a 100644 --- a/lib/cronjobs/garbage_collector.php +++ b/lib/cronjobs/garbage_collector.php @@ -99,16 +99,25 @@ class GarbageCollectorJob extends CronJob //range type 'message', belongs to the folder type 'MessageFolder', //is older than 2 hours and has a range-ID that doesn't exist //in the "message" table. - $unsent_attachment_folders = Folder::deleteBySql( - "folder_type = 'MessageFolder' - AND - range_type = 'message' - AND - chdate < UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -2 HOUR)) - AND - range_id NOT IN ( - SELECT message_id FROM message - )" + $conditions = [ + "folder_type = 'MessageFolder'", + "range_type = 'message'", + "chdate < UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -2 HOUR))", + "range_id NOT IN (SELECT message_id FROM message)", + ]; + $condition = implode(" AND ", $conditions); + + $unsent_attachment_folders = 0; + Folder::findEachBySQL( + function (Folder $folder) use (&$unsent_attachment_folders) { + $folder->file_refs->each(function (FileRef $ref) { + $ref->delete(); + }); + $folder->delete(); + + $unsent_attachment_folders += 1; + }, + $condition ); //delete old attachments of non-stored and deleted mvv objects: |
