diff --git a/app/Action/TaskAssignUserSwimlaneChange.php b/app/Action/TaskAssignUserSwimlaneChange.php new file mode 100644 index 000000000..3f97b2041 --- /dev/null +++ b/app/Action/TaskAssignUserSwimlaneChange.php @@ -0,0 +1,99 @@ + t('Swimlane'), + 'user_id' => t('Assignee'), + ); + } + + /** + * Get the required parameter for the event + * + * @access public + * @return string[] + */ + public function getEventRequiredParameters() + { + return array( + 'task_id', + 'task' => array( + 'project_id', + 'swimlane_id', + ) + ); + } + + /** + * Execute the action (set the task category) + * + * @access public + * @param array $data Event data dictionary + * @return bool True if the action was executed or false when not executed + */ + public function doAction(array $data) + { + $values = array( + 'id' => $data['task_id'], + 'owner_id' => $this->getParam('user_id'), + ); + + return $this->taskModificationModel->update($values, false); + } + + /** + * Check if the event data meet the action condition + * + * @access public + * @param array $data Event data dictionary + * @return bool + */ + public function hasRequiredCondition(array $data) + { + return $data['task']['swimlane_id'] == $this->getParam('swimlane_id'); + } +} diff --git a/app/ServiceProvider/ActionProvider.php b/app/ServiceProvider/ActionProvider.php index bf36b4695..1cfa79570 100644 --- a/app/ServiceProvider/ActionProvider.php +++ b/app/ServiceProvider/ActionProvider.php @@ -27,6 +27,7 @@ use Kanboard\Action\TaskAssignCurrentUser; use Kanboard\Action\TaskAssignCurrentUserColumn; use Kanboard\Action\TaskAssignSpecificUser; use Kanboard\Action\TaskAssignUser; +use Kanboard\Action\TaskAssignUserSwimlaneChange; use Kanboard\Action\TaskClose; use Kanboard\Action\TaskCloseColumn; use Kanboard\Action\TaskCreation; @@ -85,6 +86,7 @@ class ActionProvider implements ServiceProviderInterface $container['actionManager']->register(new TaskAssignCurrentUserColumn($container)); $container['actionManager']->register(new TaskAssignSpecificUser($container)); $container['actionManager']->register(new TaskAssignUser($container)); + $container['actionManager']->register(new TaskAssignUserSwimlaneChange($container)); $container['actionManager']->register(new TaskClose($container)); $container['actionManager']->register(new TaskCloseColumn($container)); $container['actionManager']->register(new TaskCloseNoActivity($container));