| <?php |
|
|
| namespace Kanboard\Subscriber; |
|
|
| use Kanboard\Event\TaskEvent; |
| use Kanboard\Model\TaskModel; |
| use Symfony\Component\EventDispatcher\EventSubscriberInterface; |
|
|
| class RecurringTaskSubscriber extends BaseSubscriber implements EventSubscriberInterface |
| { |
| public static function getSubscribedEvents() |
| { |
| return array( |
| TaskModel::EVENT_MOVE_COLUMN => 'onMove', |
| TaskModel::EVENT_CLOSE => 'onClose', |
| ); |
| } |
|
|
| public function onMove(TaskEvent $event) |
| { |
| $this->logger->debug('Subscriber executed: '.__METHOD__); |
| $task = $event['task']; |
|
|
| if ($task['recurrence_status'] == TaskModel::RECURRING_STATUS_PENDING) { |
| if ($task['recurrence_trigger'] == TaskModel::RECURRING_TRIGGER_FIRST_COLUMN && $this->columnModel->getFirstColumnId($task['project_id']) == $event['src_column_id']) { |
| $this->taskRecurrenceModel->duplicateRecurringTask($task['id']); |
| } elseif ($task['recurrence_trigger'] == TaskModel::RECURRING_TRIGGER_LAST_COLUMN && $this->columnModel->getLastColumnId($task['project_id']) == $event['dst_column_id']) { |
| $this->taskRecurrenceModel->duplicateRecurringTask($task['id']); |
| } |
| } |
| } |
|
|
| public function onClose(TaskEvent $event) |
| { |
| $this->logger->debug('Subscriber executed: '.__METHOD__); |
| $task = $event['task']; |
|
|
| if ($task['recurrence_status'] == TaskModel::RECURRING_STATUS_PENDING && $task['recurrence_trigger'] == TaskModel::RECURRING_TRIGGER_CLOSE) { |
| $this->taskRecurrenceModel->duplicateRecurringTask($event['task_id']); |
| } |
| } |
| } |
|
|