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