From dbc4443bb18ab2f588b5f8e2f6dbec4332a46660 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sun, 25 May 2014 18:27:18 -0400 Subject: Make sure that files are removed when a task is deleted --- app/Model/File.php | 21 ++++++++++++++++++++- app/Model/Task.php | 3 +++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/Model/File.php b/app/Model/File.php index 70b87b1b..e5aa527e 100644 --- a/app/Model/File.php +++ b/app/Model/File.php @@ -54,6 +54,22 @@ class File extends Base return false; } + /** + * Remove all files for a given task + * + * @access public + * @param integer $task_id Task id + * @return bool + */ + public function removeAll($task_id) + { + $files = $this->getAll($task_id); + + foreach ($files as $file) { + $this->remove($file['id']); + } + } + /** * Create a file entry in the database * @@ -144,6 +160,7 @@ class File extends Base public function upload($project_id, $task_id, $form_name) { $this->setup(); + $result = array(); if (! empty($_FILES[$form_name])) { @@ -159,7 +176,7 @@ class File extends Base if (@move_uploaded_file($uploaded_filename, self::BASE_PATH.$destination_filename)) { - return $this->create( + $result[] = $this->create( $task_id, $original_filename, $destination_filename, @@ -169,5 +186,7 @@ class File extends Base } } } + + return count(array_unique($result)) === 1; } } diff --git a/app/Model/Task.php b/app/Model/Task.php index faa33ca9..45c68aec 100644 --- a/app/Model/Task.php +++ b/app/Model/Task.php @@ -441,6 +441,9 @@ class Task extends Base */ public function remove($task_id) { + $file = new File($this->db, $this->event); + $file->removeAll($task_id); + return $this->db->table(self::TABLE)->eq('id', $task_id)->remove(); } -- cgit v1.2.3