diff --git a/app/EventBuilder/TaskFileEventBuilder.php b/app/EventBuilder/TaskFileEventBuilder.php index 8c985cc03..de514b595 100644 --- a/app/EventBuilder/TaskFileEventBuilder.php +++ b/app/EventBuilder/TaskFileEventBuilder.php @@ -64,6 +64,10 @@ class TaskFileEventBuilder extends BaseEventBuilder return e('%s attached a file to the task #%d', $author, $eventData['task']['id']); } + if ($eventName === TaskFileModel::EVENT_DESTROY) { + return e('%s removed a file from the task #%d', $author, $eventData['task']['id']); + } + return ''; } @@ -81,6 +85,10 @@ class TaskFileEventBuilder extends BaseEventBuilder return e('New attachment on task #%d: %s', $eventData['file']['task_id'], $eventData['file']['name']); } + if ($eventName === TaskFileModel::EVENT_DESTROY) { + return e('Attachment removed from task #%d: %s', $eventData['file']['task_id'], $eventData['file']['name']); + } + return ''; } } diff --git a/app/Model/FileModel.php b/app/Model/FileModel.php index d04b03bff..1519cfafc 100644 --- a/app/Model/FileModel.php +++ b/app/Model/FileModel.php @@ -51,6 +51,15 @@ abstract class FileModel extends Base */ abstract protected function fireCreationEvent($file_id); + /** + * Fire file destruction event + * + * @abstract + * @access protected + * @param integer $file_id + */ + abstract protected function fireDestructionEvent($file_id); + /** * Get PicoDb query to get all files * @@ -187,6 +196,8 @@ abstract class FileModel extends Base public function remove($file_id) { try { + $this->fireDestructionEvent($file_id); + $file = $this->getById($file_id); $this->objectStorage->remove($file['path']); diff --git a/app/Model/ProjectFileModel.php b/app/Model/ProjectFileModel.php index 4de4d66d4..7da5741c6 100644 --- a/app/Model/ProjectFileModel.php +++ b/app/Model/ProjectFileModel.php @@ -23,6 +23,7 @@ class ProjectFileModel extends FileModel * @var string */ const EVENT_CREATE = 'project.file.create'; + const EVENT_DESTROY = 'project.file.destroy'; /** * Get the table @@ -70,4 +71,15 @@ class ProjectFileModel extends FileModel { $this->queueManager->push($this->projectFileEventJob->withParams($file_id, self::EVENT_CREATE)); } + + /** + * Fire file destruction event + * + * @access protected + * @param integer $file_id + */ + protected function fireDestructionEvent($file_id) + { + $this->queueManager->push($this->projectFileEventJob->withParams($file_id, self::EVENT_DESTROY)); + } } diff --git a/app/Model/TaskFileModel.php b/app/Model/TaskFileModel.php index 0163da28b..9d4460044 100644 --- a/app/Model/TaskFileModel.php +++ b/app/Model/TaskFileModel.php @@ -23,6 +23,7 @@ class TaskFileModel extends FileModel * @var string */ const EVENT_CREATE = 'task.file.create'; + const EVENT_DESTROY = 'task.file.destroy'; /** * Get the table @@ -100,4 +101,15 @@ class TaskFileModel extends FileModel { $this->queueManager->push($this->taskFileEventJob->withParams($file_id, self::EVENT_CREATE)); } + + /** + * Fire file destruction event + * + * @access protected + * @param integer $file_id + */ + protected function fireDestructionEvent($file_id) + { + $this->queueManager->push($this->taskFileEventJob->withParams($file_id, self::EVENT_DESTROY)); + } } diff --git a/app/Subscriber/NotificationSubscriber.php b/app/Subscriber/NotificationSubscriber.php index ad16685b2..6db48b46a 100644 --- a/app/Subscriber/NotificationSubscriber.php +++ b/app/Subscriber/NotificationSubscriber.php @@ -32,6 +32,7 @@ class NotificationSubscriber extends BaseSubscriber implements EventSubscriberIn CommentModel::EVENT_DELETE => 'handleEvent', CommentModel::EVENT_USER_MENTION => 'handleEvent', TaskFileModel::EVENT_CREATE => 'handleEvent', + TaskFileModel::EVENT_DESTROY => 'handleEvent', TaskLinkModel::EVENT_CREATE_UPDATE => 'handleEvent', TaskLinkModel::EVENT_DELETE => 'handleEvent', ); diff --git a/app/Template/event/task_file_destroy.php b/app/Template/event/task_file_destroy.php new file mode 100755 index 000000000..cb21c42ac --- /dev/null +++ b/app/Template/event/task_file_destroy.php @@ -0,0 +1,10 @@ +
+ = e('%s removed a file from the task %s', + $this->text->e($author), + $this->url->link(t('#%d', $task['id']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) + ) ?> + = $this->dt->datetime($date_creation) ?> +
+= $this->text->e($file['name']) ?>
+= t('Attachment removed "%s"', $file['name']) ?>
+ += $this->render('notification/footer', array('task' => $task)) ?>