diff options
| -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: |
