diff options
Diffstat (limited to 'app/Subscriber')
-rw-r--r-- | app/Subscriber/Base.php | 1 | ||||
-rw-r--r-- | app/Subscriber/RecurringTaskSubscriber.php | 38 |
2 files changed, 39 insertions, 0 deletions
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 @@ +<?php + +namespace Subscriber; + +use Event\TaskEvent; +use Model\Task; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class RecurringTaskSubscriber extends Base implements EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + return array( + Task::EVENT_MOVE_COLUMN => 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']); + } + } +} |