diff --git a/include/class.file.php b/include/class.file.php index a896d9e9cefd4098be9a7e35080157bbe222d894..d53ff3d50bfe2210210d85e1fa82ab04c0281456 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -402,12 +402,19 @@ class AttachmentChunkedData { } function deleteOrphans() { - - $sql = 'DELETE c.* FROM '.FILE_CHUNK_TABLE.' c ' + $deleted = 0; + $sql = 'SELECT c.file_id, c.chunk_id FROM '.FILE_CHUNK_TABLE.' c ' . ' LEFT JOIN '.FILE_TABLE.' f ON(f.id=c.file_id) ' . ' WHERE f.id IS NULL'; - return db_query($sql)?db_affected_rows():0; + $res = db_query($sql); + while (list($file_id, $chunk_id) = db_fetch_row($res)) { + db_query('DELETE FROM '.FILE_CHUNK_TABLE + .' WHERE file_id='.db_input($file_id) + .' AND chunk_id='.db_input($chunk_id)); + $deleted += db_affected_rows(); + } + return $deleted; } } ?>