diff --git a/include/class.file.php b/include/class.file.php index 0fee13a338d052e59b7815bd3ff7e1dca5b06a27..d880840861b09065a34cd275ebb726773d82e105 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -636,17 +636,20 @@ class AttachmentFile extends VerySimpleModel { * canned-response, or faq point to any more. */ static function deleteOrphans() { - $sql = "SELECT `id` FROM ".FILE_TABLE. - " A1 WHERE (A1.ft = 'T' AND A1.created < NOW() - INTERVAL 1 DAY)". - " AND NOT EXISTS (SELECT id FROM ".ATTACHMENT_TABLE. - " A2 WHERE A1.`id` = A2.`file_id`)"; - - if (($res=db_query($sql)) && db_num_rows($res)) { - while (list($id) = db_fetch_row($res)) { - if ($f = static::lookup((int) $id)) - if (!$f->delete()) - break; - } + + // XXX: Allow plugins to define filetypes which do not represent + // files attached to tickets or other things in the attachment + // table and are not logos + $files = static::objects() + ->filter(array( + 'attachments__object_id__isnull' => true, + 'ft' => 'T', + 'created__lt' => SqlFunction::NOW()->minus(SqlInterval::DAY(1)), + )); + + foreach ($files as $f) { + if (!$f->delete()) + break; } return true;