diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-05-10 15:15:58 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-05-10 15:15:58 -0400 |
commit | bd3c44c3d337d49b02e19da0c6baed1a4abec37b (patch) | |
tree | 95156ad897763e6739e4db582fa10a8a371ea86b /app/Subscriber | |
parent | c9dcd7061708114c72c0c7d80d108661308b1e50 (diff) |
Recurring tasks (#847): move hardcoded conditions to event subscriber + refactoring
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']); + } + } +} |