From e32f26d048249b84166542d6442efdf202ff44fd Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 23 May 2015 21:44:33 -0400 Subject: API refactoring --- app/Api/Action.php | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 app/Api/Action.php (limited to 'app/Api/Action.php') diff --git a/app/Api/Action.php b/app/Api/Action.php new file mode 100644 index 00000000..6187b776 --- /dev/null +++ b/app/Api/Action.php @@ -0,0 +1,98 @@ +action->getAvailableActions(); + } + + public function getAvailableActionEvents() + { + return $this->action->getAvailableEvents(); + } + + public function getCompatibleActionEvents($action_name) + { + return $this->action->getCompatibleEvents($action_name); + } + + public function removeAction($action_id) + { + return $this->action->remove($action_id); + } + + public function getActions($project_id) + { + $actions = $this->action->getAllByProject($project_id); + + foreach ($actions as $index => $action) { + + $params = array(); + + foreach($action['params'] as $param) { + $params[$param['name']] = $param['value']; + } + + $actions[$index]['params'] = $params; + } + + return $actions; + } + + public function createAction($project_id, $event_name, $action_name, $params) + { + $values = array( + 'project_id' => $project_id, + 'event_name' => $event_name, + 'action_name' => $action_name, + 'params' => $params, + ); + + list($valid,) = $this->action->validateCreation($values); + + if (! $valid) { + return false; + } + + // Check if the action exists + $actions = $this->action->getAvailableActions(); + + if (! isset($actions[$action_name])) { + return false; + } + + // Check the event + $action = $this->action->load($action_name, $project_id, $event_name); + + if (! in_array($event_name, $action->getCompatibleEvents())) { + return false; + } + + $required_params = $action->getActionRequiredParameters(); + + // Check missing parameters + foreach($required_params as $param => $value) { + if (! isset($params[$param])) { + return false; + } + } + + // Check extra parameters + foreach($params as $param => $value) { + if (! isset($required_params[$param])) { + return false; + } + } + + return $this->action->create($values); + } +} -- cgit v1.2.3