<?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']); } } }