From bd3c44c3d337d49b02e19da0c6baed1a4abec37b Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 10 May 2015 15:15:58 -0400 Subject: Recurring tasks (#847): move hardcoded conditions to event subscriber + refactoring --- app/Subscriber/Base.php | 1 + app/Subscriber/RecurringTaskSubscriber.php | 38 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 app/Subscriber/RecurringTaskSubscriber.php (limited to 'app/Subscriber') diff --git a/app/Subscriber/Base.php b/app/Subscriber/Base.php index 95f311e7..10040626 100644 --- a/app/Subscriber/Base.php +++ b/app/Subscriber/Base.php @@ -24,6 +24,7 @@ use Pimple\Container; * @property \Model\ProjectDailySummary $projectDailySummary * @property \Model\Subtask $subtask * @property \Model\Task $task + * @property \Model\TaskDuplication $taskDuplication * @property \Model\TaskExport $taskExport * @property \Model\TaskFinder $taskFinder * @property \Model\SubtaskTimeTracking $subtaskTimeTracking diff --git a/app/Subscriber/RecurringTaskSubscriber.php b/app/Subscriber/RecurringTaskSubscriber.php new file mode 100644 index 00000000..57812fba --- /dev/null +++ b/app/Subscriber/RecurringTaskSubscriber.php @@ -0,0 +1,38 @@ + array('onMove', 0), + Task::EVENT_CLOSE => array('onClose', 0), + ); + } + + public function onMove(TaskEvent $event) + { + if ($event['recurrence_status'] == Task::RECURE_STATUS_PENDING) { + + if ($event['recurrence_trigger'] == Task::RECURE_TRIGGER_FIRST && $this->board->getFirstColumn($event['project_id']) == $event['src_column_id']) { + $this->taskDuplication->duplicateRecurringTask($event['task_id']); + } + else if ($event['recurrence_trigger'] == Task::RECURE_TRIGGER_LAST && $this->board->getLastColumn($event['project_id']) == $event['dst_column_id']) { + $this->taskDuplication->duplicateRecurringTask($event['task_id']); + } + } + } + + public function onClose(TaskEvent $event) + { + if ($event['recurrence_status'] == Task::RECURE_STATUS_PENDING && $event['recurrence_trigger'] == Task::RECURE_TRIGGER_CLOSE) { + $this->taskDuplication->duplicateRecurringTask($event['task_id']); + } + } +} -- cgit v1.2.3