summaryrefslogtreecommitdiff
path: root/jsonrpc.php
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2014-11-22 18:22:10 -0500
committerFrédéric Guillot <fred@kanboard.net>2014-11-22 18:22:10 -0500
commit77e10d25829f3523a168bf61424fac99a539f8be (patch)
tree9b3d274146fa9543c4734a945e61b9d975960ff6 /jsonrpc.php
parent15038cdb10f8c691edc7980fd1aed32dcbed3f9f (diff)
Improve API to return id instead of a boolean
Diffstat (limited to 'jsonrpc.php')
-rw-r--r--jsonrpc.php359
1 files changed, 135 insertions, 224 deletions
diff --git a/jsonrpc.php b/jsonrpc.php
index 39c2f474..67b45fb3 100644
--- a/jsonrpc.php
+++ b/jsonrpc.php
@@ -2,74 +2,67 @@
require __DIR__.'/app/common.php';
-use JsonRPC\Server;
-use Model\Project;
-use Model\ProjectPermission;
-use Model\Task;
-use Model\TaskCreation;
-use Model\TaskFinder;
-use Model\TaskStatus;
-use Model\TaskValidator;
-use Model\User;
-use Model\Config;
-use Model\Category;
-use Model\Comment;
-use Model\SubTask;
-use Model\Board;
-use Model\Action;
-use Model\Webhook;
-use Model\Notification;
-
-$config = new Config($container);
-$config->setupTranslations();
-$config->setupTimezone();
-
-$project = new Project($container);
-$projectPermission = new ProjectPermission($container);
-$task = new Task($container);
-$taskCreation = new TaskCreation($container);
-$taskFinder = new TaskFinder($container);
-$taskStatus = new TaskStatus($container);
-$taskValidator = new TaskValidator($container);
-$user = new User($container);
-$category = new Category($container);
-$comment = new Comment($container);
-$subtask = new SubTask($container);
-$board = new Board($container);
-$action = new Action($container);
-$webhook = new Webhook($container);
-$notification = new Notification($container);
-
-$action->attachEvents();
-$project->attachEvents();
-$webhook->attachEvents();
-$notification->attachEvents();
-
-$server = new Server;
-$server->authentication(array('jsonrpc' => $config->get('api_token')));
+$models = array(
+ 'Config',
+ 'Project',
+ 'ProjectPermission',
+ 'Task',
+ 'TaskCreation',
+ 'TaskFinder',
+ 'TaskStatus',
+ 'TaskValidator',
+ 'User',
+ 'Category',
+ 'Comment',
+ 'SubTask',
+ 'Board',
+ 'Action',
+ 'Webhook',
+ 'Notification',
+);
+
+$events = array(
+ 'actionModel',
+ 'projectModel',
+ 'webhookModel',
+ 'notificationModel',
+);
+
+foreach ($models as $model) {
+ $variable = lcfirst($model).'Model';
+ $class = '\Model\\'.$model;
+ $$variable = new $class($container);
+}
+
+foreach ($events as $class) {
+ $$class->attachEvents();
+}
+
+$configModel->setupTranslations();
+$configModel->setupTimezone();
+
+$server = new JsonRPC\Server;
+$server->authentication(array('jsonrpc' => $configModel->get('api_token')));
/**
* Project procedures
*/
-$server->register('createProject', function($name) use ($project) {
+$server->bind('getProjectById', $projectModel, 'getById');
+$server->bind('getProjectByName', $projectModel, 'getByName');
+$server->bind('getAllProjects', $projectModel, 'getAll');
+$server->bind('removeProject', $projectModel, 'remove');
+$server->bind('enableProject', $projectModel, 'enable');
+$server->bind('disableProject', $projectModel, 'disable');
+$server->bind('enableProjectPublicAccess', $projectModel, 'enablePublicAccess');
+$server->bind('disableProjectPublicAccess', $projectModel, 'disablePublicAccess');
+
+$server->register('createProject', function($name) use ($projectModel) {
$values = array('name' => $name);
- list($valid,) = $project->validateCreation($values);
- return $valid && $project->create($values);
+ list($valid,) = $projectModel->validateCreation($values);
+ return $valid && $projectModel->create($values);
});
-$server->register('getProjectById', function($project_id) use ($project) {
- return $project->getById($project_id);
-});
-
-$server->register('getProjectByName', function($name) use ($project) {
- return $project->getByName($name);
-});
-
-$server->register('getAllProjects', function() use ($project) {
- return $project->getAll();
-});
-
-$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($project) {
+$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($projectModel) {
$values = array(
'id' => $id,
@@ -85,87 +78,40 @@ $server->register('updateProject', function($id, $name, $is_active = null, $is_p
}
}
- list($valid,) = $project->validateModification($values);
- return $valid && $project->update($values);
-});
-
-$server->register('removeProject', function($project_id) use ($project) {
- return $project->remove($project_id);
-});
-
-$server->register('enableProject', function($project_id) use ($project) {
- return $project->enable($project_id);
+ list($valid,) = $projectModel->validateModification($values);
+ return $valid && $projectModel->update($values);
});
-$server->register('disableProject', function($project_id) use ($project) {
- return $project->disable($project_id);
-});
-
-$server->register('enableProjectPublicAccess', function($project_id) use ($project) {
- return $project->enablePublicAccess($project_id);
-});
-
-$server->register('disableProjectPublicAccess', function($project_id) use ($project) {
- return $project->disablePublicAccess($project_id);
-});
-
-
/**
* Board procedures
*/
-$server->register('getBoard', function($project_id) use ($board) {
- return $board->get($project_id);
-});
-
-$server->register('getColumns', function($project_id) use ($board) {
- return $board->getColumns($project_id);
-});
-
-$server->register('getColumn', function($column_id) use ($board) {
- return $board->getColumn($column_id);
-});
-
-$server->register('moveColumnUp', function($project_id, $column_id) use ($board) {
- return $board->moveUp($project_id, $column_id);
-});
-
-$server->register('moveColumnDown', function($project_id, $column_id) use ($board) {
- return $board->moveDown($project_id, $column_id);
-});
-
-$server->register('updateColumn', function($column_id, $title, $task_limit = 0) use ($board) {
- return $board->updateColumn($column_id, $title, $task_limit);
-});
-
-$server->register('addColumn', function($project_id, $title, $task_limit = 0) use ($board) {
- return $board->addColumn($project_id, $title, $task_limit);
-});
-
-$server->register('removeColumn', function($column_id) use ($board) {
- return $board->removeColumn($column_id);
-});
-
+$server->bind('getBoard', $boardModel, 'get');
+$server->bind('getColumns', $boardModel, 'getColumns');
+$server->bind('getColumn', $boardModel, 'getColumn');
+$server->bind('moveColumnUp', $boardModel, 'moveUp');
+$server->bind('moveColumnDown', $boardModel, 'moveDown');
+$server->bind('updateColumn', $boardModel, 'updateColumn');
+$server->bind('addColumn', $boardModel, 'addColumn');
+$server->bind('removeColumn', $boardModel, 'removeColumn');
/**
* Project permissions procedures
*/
-$server->register('getAllowedUsers', function($project_id) use ($projectPermission) {
- return $projectPermission->getMemberList($project_id, false, false);
-});
-
-$server->register('revokeUser', function($project_id, $user_id) use ($project, $projectPermission) {
- return $projectPermission->revokeUser($project_id, $user_id);
-});
-
-$server->register('allowUser', function($project_id, $user_id) use ($project, $projectPermission) {
- return $projectPermission->allowUser($project_id, $user_id);
-});
-
+$server->bind('getMembers', $projectPermissionModel, 'getMembers');
+$server->bind('revokeUser', $projectPermissionModel, 'revokeUser');
+$server->bind('allowUser', $projectPermissionModel, 'allowUser');
/**
* Task procedures
*/
-$server->register('createTask', function($title, $project_id, $color_id = '', $column_id = 0, $owner_id = 0, $creator_id = 0, $date_due = '', $description = '', $category_id = 0, $score = 0) use ($taskCreation, $taskValidator) {
+$server->bind('getTask', $taskFinderModel, 'getById');
+$server->bind('getAllTasks', $taskFinderModel, 'getAll');
+$server->bind('openTask', $taskStatusModel, 'open');
+$server->bind('closeTask', $taskStatusModel, 'close');
+$server->bind('removeTask', $taskModel, 'remove');
+$server->bind('moveTaskPosition', $taskModel, 'movePosition');
+
+$server->register('createTask', function($title, $project_id, $color_id = '', $column_id = 0, $owner_id = 0, $creator_id = 0, $date_due = '', $description = '', $category_id = 0, $score = 0) use ($taskCreationModel, $taskValidatorModel) {
$values = array(
'title' => $title,
@@ -180,19 +126,16 @@ $server->register('createTask', function($title, $project_id, $color_id = '', $c
'score' => $score,
);
- list($valid,) = $taskValidator->validateCreation($values);
- return $valid && $taskCreation->create($values) !== false;
-});
+ list($valid,) = $taskValidatorModel->validateCreation($values);
-$server->register('getTask', function($task_id) use ($taskFinder) {
- return $taskFinder->getById($task_id);
-});
+ if (! $valid) {
+ return false;
+ }
-$server->register('getAllTasks', function($project_id, $status) use ($taskFinder) {
- return $taskFinder->getAll($project_id, $status);
+ return $taskCreationModel->create($values);
});
-$server->register('updateTask', function($id, $title = null, $project_id = null, $color_id = null, $column_id = null, $owner_id = null, $creator_id = null, $date_due = null, $description = null, $category_id = null, $score = null) use ($task, $taskValidator) {
+$server->register('updateTask', function($id, $title = null, $project_id = null, $color_id = null, $column_id = null, $owner_id = null, $creator_id = null, $date_due = null, $description = null, $category_id = null, $score = null) use ($taskModel, $taskValidatorModel) {
$values = array(
'id' => $id,
@@ -214,31 +157,19 @@ $server->register('updateTask', function($id, $title = null, $project_id = null,
}
}
- list($valid) = $taskValidator->validateApiModification($values);
- return $valid && $task->update($values);
-});
-
-$server->register('openTask', function($task_id) use ($taskStatus) {
- return $taskStatus->open($task_id);
-});
-
-$server->register('closeTask', function($task_id) use ($taskStatus) {
- return $taskStatus->close($task_id);
-});
-
-$server->register('removeTask', function($task_id) use ($task) {
- return $task->remove($task_id);
-});
-
-$server->register('moveTaskPosition', function($project_id, $task_id, $column_id, $position) use ($task) {
- return $task->movePosition($project_id, $task_id, $column_id, $position);
+ list($valid) = $taskValidatorModel->validateApiModification($values);
+ return $valid && $taskModel->update($values);
});
/**
* User procedures
*/
-$server->register('createUser', function($username, $password, $name = '', $email = '', $is_admin = 0, $default_project_id = 0) use ($user) {
+$server->bind('getUser', $userModel, 'getById');
+$server->bind('getAllUsers', $userModel, 'getAll');
+$server->bind('removeUser', $userModel, 'remove');
+
+$server->register('createUser', function($username, $password, $name = '', $email = '', $is_admin = 0, $default_project_id = 0) use ($userModel) {
$values = array(
'username' => $username,
@@ -250,19 +181,16 @@ $server->register('createUser', function($username, $password, $name = '', $emai
'default_project_id' => $default_project_id,
);
- list($valid,) = $user->validateCreation($values);
- return $valid && $user->create($values);
-});
+ list($valid,) = $userModel->validateCreation($values);
-$server->register('getUser', function($user_id) use ($user) {
- return $user->getById($user_id);
-});
+ if (! $valid) {
+ return false;
+ }
-$server->register('getAllUsers', function() use ($user) {
- return $user->getAll();
+ return $userModel->create($values);
});
-$server->register('updateUser', function($id, $username = null, $name = null, $email = null, $is_admin = null, $default_project_id = null) use ($user) {
+$server->register('updateUser', function($id, $username = null, $name = null, $email = null, $is_admin = null, $default_project_id = null) use ($userModel) {
$values = array(
'id' => $id,
@@ -279,57 +207,52 @@ $server->register('updateUser', function($id, $username = null, $name = null, $e
}
}
- list($valid,) = $user->validateApiModification($values);
- return $valid && $user->update($values);
+ list($valid,) = $userModel->validateApiModification($values);
+ return $valid && $userModel->update($values);
});
-$server->register('removeUser', function($user_id) use ($user) {
- return $user->remove($user_id);
-});
-
-
/**
* Category procedures
*/
-$server->register('createCategory', function($project_id, $name) use ($category) {
+$server->bind('getCategory', $categoryModel, 'getById');
+$server->bind('getAllCategories', $categoryModel, 'getAll');
+$server->bind('removeCategory', $categoryModel, 'remove');
+
+$server->register('createCategory', function($project_id, $name) use ($categoryModel) {
$values = array(
'project_id' => $project_id,
'name' => $name,
);
- list($valid,) = $category->validateCreation($values);
- return $valid && $category->create($values);
-});
+ list($valid,) = $categoryModel->validateCreation($values);
-$server->register('getCategory', function($category_id) use ($category) {
- return $category->getById($category_id);
-});
+ if (! $valid) {
+ return false;
+ }
-$server->register('getAllCategories', function($project_id) use ($category) {
- return $category->getAll($project_id);
+ return $categoryModel->create($values);
});
-$server->register('updateCategory', function($id, $name) use ($category) {
+$server->register('updateCategory', function($id, $name) use ($categoryModel) {
$values = array(
'id' => $id,
'name' => $name,
);
- list($valid,) = $category->validateModification($values);
- return $valid && $category->update($values);
+ list($valid,) = $categoryModel->validateModification($values);
+ return $valid && $categoryModel->update($values);
});
-$server->register('removeCategory', function($category_id) use ($category) {
- return $category->remove($category_id);
-});
-
-
/**
* Comments procedures
*/
-$server->register('createComment', function($task_id, $user_id, $content) use ($comment) {
+$server->bind('getComment', $commentModel, 'getById');
+$server->bind('getAllComments', $commentModel, 'getAll');
+$server->bind('removeComment', $commentModel, 'remove');
+
+$server->register('createComment', function($task_id, $user_id, $content) use ($commentModel) {
$values = array(
'task_id' => $task_id,
@@ -337,38 +260,34 @@ $server->register('createComment', function($task_id, $user_id, $content) use ($
'comment' => $content,
);
- list($valid,) = $comment->validateCreation($values);
- return $valid && $comment->create($values);
-});
+ list($valid,) = $commentModel->validateCreation($values);
-$server->register('getComment', function($comment_id) use ($comment) {
- return $comment->getById($comment_id);
-});
+ if (! $valid) {
+ return false;
+ }
-$server->register('getAllComments', function($task_id) use ($comment) {
- return $comment->getAll($task_id);
+ return $commentModel->create($values);
});
-$server->register('updateComment', function($id, $content) use ($comment) {
+$server->register('updateComment', function($id, $content) use ($commentModel) {
$values = array(
'id' => $id,
'comment' => $content,
);
- list($valid,) = $comment->validateModification($values);
- return $valid && $comment->update($values);
+ list($valid,) = $commentModel->validateModification($values);
+ return $valid && $commentModel->update($values);
});
-$server->register('removeComment', function($comment_id) use ($comment) {
- return $comment->remove($comment_id);
-});
-
-
/**
* Subtask procedures
*/
-$server->register('createSubtask', function($task_id, $title, $user_id = 0, $time_estimated = 0, $time_spent = 0, $status = 0) use ($subtask) {
+$server->bind('getSubtask', $subTaskModel, 'getById');
+$server->bind('getAllSubtasks', $subTaskModel, 'getAll');
+$server->bind('removeSubtask', $subTaskModel, 'remove');
+
+$server->register('createSubtask', function($task_id, $title, $user_id = 0, $time_estimated = 0, $time_spent = 0, $status = 0) use ($subTaskModel) {
$values = array(
'title' => $title,
@@ -385,19 +304,16 @@ $server->register('createSubtask', function($task_id, $title, $user_id = 0, $tim
}
}
- list($valid,) = $subtask->validateCreation($values);
- return $valid && $subtask->create($values);
-});
+ list($valid,) = $subTaskModel->validateCreation($values);
-$server->register('getSubtask', function($subtask_id) use ($subtask) {
- return $subtask->getById($subtask_id);
-});
+ if (! $valid) {
+ return false;
+ }
-$server->register('getAllSubtasks', function($task_id) use ($subtask) {
- return $subtask->getAll($task_id);
+ return $subTaskModel->create($values);
});
-$server->register('updateSubtask', function($id, $task_id, $title = null, $user_id = null, $time_estimated = null, $time_spent = null, $status = null) use ($subtask) {
+$server->register('updateSubtask', function($id, $task_id, $title = null, $user_id = null, $time_estimated = null, $time_spent = null, $status = null) use ($subTaskModel) {
$values = array(
'id' => $id,
@@ -415,15 +331,10 @@ $server->register('updateSubtask', function($id, $task_id, $title = null, $user_
}
}
- list($valid,) = $subtask->validateModification($values);
- return $valid && $subtask->update($values);
-});
-
-$server->register('removeSubtask', function($subtask_id) use ($subtask) {
- return $subtask->remove($subtask_id);
+ list($valid,) = $subTaskModel->validateModification($values);
+ return $valid && $subTaskModel->update($values);
});
-
/**
* Parse incoming requests
*/