summaryrefslogtreecommitdiff
path: root/jsonrpc.php
diff options
context:
space:
mode:
Diffstat (limited to 'jsonrpc.php')
-rw-r--r--jsonrpc.php99
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
*/