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;