diff options
Diffstat (limited to 'jsonrpc.php')
-rw-r--r-- | jsonrpc.php | 99 |
1 files changed, 96 insertions, 3 deletions
diff --git a/jsonrpc.php b/jsonrpc.php index 566976cd..afc1ed18 100644 --- a/jsonrpc.php +++ b/jsonrpc.php @@ -22,13 +22,16 @@ $server->bind('enableProjectPublicAccess', $container['project'], 'enablePublicA $server->bind('disableProjectPublicAccess', $container['project'], 'disablePublicAccess'); $server->bind('getProjectActivity', $container['projectActivity'], 'getProjects'); -$server->register('createProject', function($name) use ($container) { - $values = array('name' => $name); +$server->register('createProject', function($name, $description = null) use ($container) { + $values = array( + 'name' => $name, + 'description' => $description + ); list($valid,) = $container['project']->validateCreation($values); return $valid ? $container['project']->create($values) : false; }); -$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($container) { +$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null, $description = null) use ($container) { $values = array( 'id' => $id, @@ -36,6 +39,7 @@ $server->register('updateProject', function($id, $name, $is_active = null, $is_p 'is_active' => $is_active, 'is_public' => $is_public, 'token' => $token, + 'description' => $description ); foreach ($values as $key => $value) { @@ -61,6 +65,91 @@ $server->bind('addColumn', $container['board'], 'addColumn'); $server->bind('removeColumn', $container['board'], 'removeColumn'); /** + * Swimlane procedures + */ +$server->bind('getSwimlanes', $container['swimlane'], 'getSwimlanes'); +$server->bind('getAllSwimlanes', $container['swimlane'], 'getAll'); +$server->bind('getSwimlane', $container['swimlane'], 'getByName'); +$server->bind('addSwimlane', $container['swimlane'], 'create'); +$server->bind('updateSwimlane', $container['swimlane'], 'rename'); +$server->bind('removeSwimlane', $container['swimlane'], 'remove'); +$server->bind('disableSwimlane', $container['swimlane'], 'disable'); +$server->bind('enableSwimlane', $container['swimlane'], 'enable'); +$server->bind('moveSwimlaneUp', $container['swimlane'], 'moveUp'); +$server->bind('moveSwimlaneDown', $container['swimlane'], 'moveDown'); + +/** + * Actions procedures + */ +$server->bind('getAvailableActions', $container['action'], 'getAvailableActions'); +$server->bind('getAvailableEvents', $container['action'], 'getAvailableEvents'); +$server->bind('getCompatibleEvents', $container['action'], 'getCompatibleEvents'); +$server->bind('removeAction', $container['action'], 'remove'); + +$server->register('getActions', function($project_id) use ($container) { + $actions = $container['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; +}); + +$server->register('createAction', function($project_id, $event_name, $action_name, $params) use ($container) { + + $values = array( + 'project_id' => $project_id, + 'event_name' => $event_name, + 'action_name' => $action_name, + 'params' => $params, + ); + + list($valid,) = $container['action']->validateCreation($values); + + if (! $valid) { + return false; + } + + // Check the action exists + if (! isset($container['action']->getAvailableActions()[$action_name])) { + return false; + } + + // Check the event + $action = $container['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 $container['action']->create($values); +}); + + +/** * Project permissions procedures */ $server->bind('getMembers', $container['projectPermission'], 'getMembers'); @@ -331,6 +420,10 @@ $server->register('getTimezone', function() use ($container) { return $container['config']->get('application_timezone'); }); +$server->register('getVersion', function() use ($container) { + return APP_VERSION; +}); + /** * Parse incoming requests */ |