2014-07-20 12:26:15 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
require __DIR__.'/app/common.php';
|
|
|
|
|
|
|
|
use JsonRPC\Server;
|
|
|
|
use Model\Project;
|
2014-11-23 20:13:38 +01:00
|
|
|
use Model\ProjectPermission;
|
2014-07-20 12:26:15 +02:00
|
|
|
use Model\Task;
|
2014-11-23 20:13:38 +01:00
|
|
|
use Model\TaskFinder;
|
|
|
|
use Model\TaskValidator;
|
2014-07-20 12:26:15 +02:00
|
|
|
use Model\User;
|
|
|
|
use Model\Config;
|
|
|
|
use Model\Category;
|
|
|
|
use Model\Comment;
|
|
|
|
use Model\SubTask;
|
|
|
|
use Model\Board;
|
|
|
|
use Model\Action;
|
2014-10-22 19:59:09 +02:00
|
|
|
use Model\Webhook;
|
|
|
|
use Model\Notification;
|
|
|
|
|
|
|
|
$config = new Config($registry);
|
2014-11-23 20:13:38 +01:00
|
|
|
$config->setupTranslations();
|
|
|
|
$config->setupTimezone();
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$project = new Project($registry);
|
2014-11-23 20:13:38 +01:00
|
|
|
$projectPermission = new ProjectPermission($registry);
|
2014-10-22 19:59:09 +02:00
|
|
|
$task = new Task($registry);
|
2014-11-23 20:13:38 +01:00
|
|
|
$taskFinder = new TaskFinder($registry);
|
|
|
|
$taskValidator = new TaskValidator($registry);
|
2014-10-22 19:59:09 +02:00
|
|
|
$user = new User($registry);
|
|
|
|
$category = new Category($registry);
|
|
|
|
$comment = new Comment($registry);
|
|
|
|
$subtask = new SubTask($registry);
|
|
|
|
$board = new Board($registry);
|
|
|
|
$action = new Action($registry);
|
|
|
|
$webhook = new Webhook($registry);
|
|
|
|
$notification = new Notification($registry);
|
2014-07-20 12:26:15 +02:00
|
|
|
|
|
|
|
$action->attachEvents();
|
|
|
|
$project->attachEvents();
|
2014-10-22 19:59:09 +02:00
|
|
|
$webhook->attachEvents();
|
|
|
|
$notification->attachEvents();
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
$server = new Server;
|
|
|
|
$server->authentication(array('jsonrpc' => $config->get('api_token')));
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Project procedures
|
|
|
|
*/
|
|
|
|
$server->register('createProject', function($name) use ($project) {
|
|
|
|
$values = array('name' => $name);
|
|
|
|
list($valid,) = $project->validateCreation($values);
|
|
|
|
return $valid && $project->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();
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($project) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'id' => $id,
|
|
|
|
'name' => $name,
|
|
|
|
'is_active' => $is_active,
|
|
|
|
'is_public' => $is_public,
|
|
|
|
'token' => $token,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
if (is_null($value)) {
|
|
|
|
unset($values[$key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
list($valid,) = $project->validateModification($values);
|
|
|
|
return $valid && $project->update($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeProject', function($project_id) use ($project) {
|
|
|
|
return $project->remove($project_id);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('enableProject', function($project_id) use ($project) {
|
|
|
|
return $project->enable($project_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$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
|
|
|
|
*/
|
2014-07-20 12:26:15 +02:00
|
|
|
$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);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('getColumn', function($column_id) use ($board) {
|
|
|
|
return $board->getColumn($column_id);
|
|
|
|
});
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
$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);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('updateColumn', function($column_id, $title, $task_limit = 0) use ($board) {
|
|
|
|
return $board->updateColumn($column_id, $title, $task_limit);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('addColumn', function($project_id, $title, $task_limit = 0) use ($board) {
|
|
|
|
return $board->addColumn($project_id, $title, $task_limit);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeColumn', function($column_id) use ($board) {
|
|
|
|
return $board->removeColumn($column_id);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Project permissions procedures
|
|
|
|
*/
|
2014-11-23 20:13:38 +01:00
|
|
|
$server->register('getAllowedUsers', function($project_id) use ($projectPermission) {
|
|
|
|
return $projectPermission->getUsersList($project_id, false, false);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
$server->register('revokeUser', function($project_id, $user_id) use ($project, $projectPermission) {
|
|
|
|
return $projectPermission->revokeUser($project_id, $user_id);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
$server->register('allowUser', function($project_id, $user_id) use ($project, $projectPermission) {
|
|
|
|
return $projectPermission->allowUser($project_id, $user_id);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Task procedures
|
|
|
|
*/
|
2014-11-23 20:13:38 +01:00
|
|
|
$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 ($task, $taskValidator) {
|
2014-10-22 19:59:09 +02:00
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'title' => $title,
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'color_id' => $color_id,
|
|
|
|
'column_id' => $column_id,
|
|
|
|
'owner_id' => $owner_id,
|
|
|
|
'creator_id' => $creator_id,
|
|
|
|
'date_due' => $date_due,
|
|
|
|
'description' => $description,
|
|
|
|
'category_id' => $category_id,
|
|
|
|
'score' => $score,
|
|
|
|
);
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
list($valid,) = $taskValidator->validateCreation($values);
|
2014-07-20 12:26:15 +02:00
|
|
|
return $valid && $task->create($values) !== false;
|
|
|
|
});
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
$server->register('getTask', function($task_id) use ($taskFinder) {
|
|
|
|
return $taskFinder->getById($task_id);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
$server->register('getAllTasks', function($project_id, $status) use ($taskFinder) {
|
|
|
|
return $taskFinder->getAll($project_id, $status);
|
2014-07-20 12:26:15 +02:00
|
|
|
});
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
$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) {
|
2014-10-22 19:59:09 +02:00
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'id' => $id,
|
|
|
|
'title' => $title,
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'color_id' => $color_id,
|
|
|
|
'column_id' => $column_id,
|
|
|
|
'owner_id' => $owner_id,
|
|
|
|
'creator_id' => $creator_id,
|
|
|
|
'date_due' => $date_due,
|
|
|
|
'description' => $description,
|
|
|
|
'category_id' => $category_id,
|
|
|
|
'score' => $score,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
if (is_null($value)) {
|
|
|
|
unset($values[$key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-11-23 20:13:38 +01:00
|
|
|
list($valid) = $taskValidator->validateApiModification($values);
|
2014-07-20 12:26:15 +02:00
|
|
|
return $valid && $task->update($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('openTask', function($task_id) use ($task) {
|
|
|
|
return $task->open($task_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('closeTask', function($task_id) use ($task) {
|
|
|
|
return $task->close($task_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeTask', function($task_id) use ($task) {
|
|
|
|
return $task->remove($task_id);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('moveTaskPosition', function($project_id, $task_id, $column_id, $position) use ($task) {
|
|
|
|
return $task->movePosition($project_id, $task_id, $column_id, $position);
|
|
|
|
});
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* User procedures
|
|
|
|
*/
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('createUser', function($username, $password, $name = '', $email = '', $is_admin = 0, $default_project_id = 0) use ($user) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'username' => $username,
|
|
|
|
'password' => $password,
|
|
|
|
'confirmation' => $password,
|
|
|
|
'name' => $name,
|
|
|
|
'email' => $email,
|
|
|
|
'is_admin' => $is_admin,
|
|
|
|
'default_project_id' => $default_project_id,
|
|
|
|
);
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
list($valid,) = $user->validateCreation($values);
|
|
|
|
return $valid && $user->create($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getUser', function($user_id) use ($user) {
|
|
|
|
return $user->getById($user_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getAllUsers', function() use ($user) {
|
|
|
|
return $user->getAll();
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('updateUser', function($id, $username = null, $name = null, $email = null, $is_admin = null, $default_project_id = null) use ($user) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'id' => $id,
|
|
|
|
'username' => $username,
|
|
|
|
'name' => $name,
|
|
|
|
'email' => $email,
|
|
|
|
'is_admin' => $is_admin,
|
|
|
|
'default_project_id' => $default_project_id,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
if (is_null($value)) {
|
|
|
|
unset($values[$key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
list($valid,) = $user->validateApiModification($values);
|
2014-07-20 12:26:15 +02:00
|
|
|
return $valid && $user->update($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeUser', function($user_id) use ($user) {
|
|
|
|
return $user->remove($user_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Category procedures
|
|
|
|
*/
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('createCategory', function($project_id, $name) use ($category) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'project_id' => $project_id,
|
|
|
|
'name' => $name,
|
|
|
|
);
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
list($valid,) = $category->validateCreation($values);
|
|
|
|
return $valid && $category->create($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getCategory', function($category_id) use ($category) {
|
|
|
|
return $category->getById($category_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getAllCategories', function($project_id) use ($category) {
|
|
|
|
return $category->getAll($project_id);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('updateCategory', function($id, $name) use ($category) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'id' => $id,
|
|
|
|
'name' => $name,
|
|
|
|
);
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
list($valid,) = $category->validateModification($values);
|
|
|
|
return $valid && $category->update($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeCategory', function($category_id) use ($category) {
|
|
|
|
return $category->remove($category_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Comments procedures
|
|
|
|
*/
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('createComment', function($task_id, $user_id, $content) use ($comment) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'task_id' => $task_id,
|
|
|
|
'user_id' => $user_id,
|
|
|
|
'comment' => $content,
|
|
|
|
);
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
list($valid,) = $comment->validateCreation($values);
|
|
|
|
return $valid && $comment->create($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getComment', function($comment_id) use ($comment) {
|
|
|
|
return $comment->getById($comment_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getAllComments', function($task_id) use ($comment) {
|
|
|
|
return $comment->getAll($task_id);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('updateComment', function($id, $content) use ($comment) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'id' => $id,
|
|
|
|
'comment' => $content,
|
|
|
|
);
|
|
|
|
|
2014-07-20 12:26:15 +02:00
|
|
|
list($valid,) = $comment->validateModification($values);
|
|
|
|
return $valid && $comment->update($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeComment', function($comment_id) use ($comment) {
|
|
|
|
return $comment->remove($comment_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Subtask procedures
|
|
|
|
*/
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('createSubtask', function($task_id, $title, $user_id = 0, $time_estimated = 0, $time_spent = 0, $status = 0) use ($subtask) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'title' => $title,
|
|
|
|
'task_id' => $task_id,
|
|
|
|
'user_id' => $user_id,
|
|
|
|
'time_estimated' => $time_estimated,
|
|
|
|
'time_spent' => $time_spent,
|
|
|
|
'status' => $status,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
if (is_null($value)) {
|
|
|
|
unset($values[$key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
list($valid,) = $subtask->validateCreation($values);
|
2014-07-20 12:26:15 +02:00
|
|
|
return $valid && $subtask->create($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getSubtask', function($subtask_id) use ($subtask) {
|
|
|
|
return $subtask->getById($subtask_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('getAllSubtasks', function($task_id) use ($subtask) {
|
|
|
|
return $subtask->getAll($task_id);
|
|
|
|
});
|
|
|
|
|
2014-10-22 19:59:09 +02:00
|
|
|
$server->register('updateSubtask', function($id, $task_id, $title = null, $user_id = null, $time_estimated = null, $time_spent = null, $status = null) use ($subtask) {
|
|
|
|
|
|
|
|
$values = array(
|
|
|
|
'id' => $id,
|
|
|
|
'task_id' => $task_id,
|
|
|
|
'title' => $title,
|
|
|
|
'user_id' => $user_id,
|
|
|
|
'time_estimated' => $time_estimated,
|
|
|
|
'time_spent' => $time_spent,
|
|
|
|
'status' => $status,
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
if (is_null($value)) {
|
|
|
|
unset($values[$key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
list($valid,) = $subtask->validateModification($values);
|
2014-07-20 12:26:15 +02:00
|
|
|
return $valid && $subtask->update($values);
|
|
|
|
});
|
|
|
|
|
|
|
|
$server->register('removeSubtask', function($subtask_id) use ($subtask) {
|
|
|
|
return $subtask->remove($subtask_id);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Parse incoming requests
|
|
|
|
*/
|
|
|
|
echo $server->execute();
|