synergy/server/api/run.php (171 lines of code) (raw):

<?php use Synergy\App\Synergy; use Synergy\Controller\RunCtrl; use Synergy\Misc\HTTP; use Synergy\Model\TestRun; use Synergy\Model\Assignment\Rest\RichAssignmentListItemResource; use Synergy\Model\Assignment\Rest\AssignmentLineResource; use Synergy\Model\Run\Rest\RunResource; use Synergy\Model\Run\Rest\RunBlobsResource; require_once '../setup/conf.php'; switch ($_SERVER['REQUEST_METHOD']) { case "GET": if (!isset($_REQUEST['id'])) { HTTP::BadRequest("Missing parameters"); die(); } $mode = ""; if (isset($_REQUEST['mode'])) { $mode = $_REQUEST['mode']; } switch ($mode) { case "blob": if (!isset($_REQUEST["id"])) { HTTP::BadRequest("Missing parameters"); die(); } $runCtrl = new RunCtrl(); $tr = $runCtrl->getRunOverview(intval($_REQUEST['id'])); $tr->blobs = $runCtrl->getBlobs($tr->id); $tr->durations = $runCtrl->getDurations($tr->id); HTTP::OK(json_encode(RunBlobsResource::create($tr)), 'Content-type: application/json'); break; case "full": $runCtrl = new RunCtrl(); $tr = $runCtrl->getRun(intval($_REQUEST['id']), false); if (is_null($tr)) { HTTP::NotFound("Test run not found"); die(); } if (Synergy::getSessionProvider()->sessionExists()) { $role = Synergy::getSessionProvider()->getUserRole(); $tr->addControls($role); foreach ($tr->assignments as $v) { $v->addControls($role); } foreach ($tr->reviewAssignments as $v) { $v->addControls($role); } foreach ($tr->attachments as $v) { $v->addControls($role); } } $tr->assignments = RichAssignmentListItemResource::createFromAssignments($tr->assignments); HTTP::OK(json_encode($tr), 'Content-type: application/json'); break; case "peruser": $runCtrl = new RunCtrl(); $tr = $runCtrl->getRun(intval($_REQUEST['id']), true); if (is_null($tr)) { HTTP::NotFound("Test run not found"); die(); } if (Synergy::getSessionProvider()->sessionExists()) { $role = Synergy::getSessionProvider()->getUserRole(); $tr->addControls($role); foreach ($tr->assignments as $v) { foreach ($v->assignments as $a) { $a->addControls($role); } $v->assignments = RichAssignmentListItemResource::createFromAssignments($v->assignments); } foreach ($tr->reviewAssignments as $v) { $v->addControls($role); } foreach ($tr->attachments as $v) { $v->addControls($role); } $tr->assignments = AssignmentLineResource::createFromUsers($tr->assignments, true); } HTTP::OK(json_encode($tr), 'Content-type: application/json'); break; case "simple": $runCtrl = new RunCtrl(); $tr = $runCtrl->getRunOverview(intval($_REQUEST['id'])); if (Synergy::getSessionProvider()->sessionExists()) { $role = Synergy::getSessionProvider()->getUserRole(); foreach ($tr->attachments as $v) { $v->addControls($role); } } if (is_null($tr)) { HTTP::NotFound("Test run not found"); die(); } HTTP::OK(json_encode(RunResource::create($tr)), 'Content-type: application/json'); break; default: HTTP::BadRequest('Unknown mode'); break; } break; case "PUT": if (!isset($_REQUEST['id'])) { HTTP::BadRequest("Missing parameters"); die(); } if (!TestRun::canEdit()) { HTTP::Unauthorized(""); die(); } $mode = (isset($_REQUEST["mode"])) ? $_REQUEST["mode"] : "default"; $runCtrl = new RunCtrl(); switch ($mode) { case "freeze": if (intval($_REQUEST["freeze"]) === 1) { $freeze = false; } else { $freeze = true; } $runCtrl->setActive(intval($_REQUEST["id"]), $freeze); HTTP::OK("Test run frozen"); break; default: $put = file_get_contents('php://input'); $data = json_decode($put); if (!isset($data->title) || !isset($data->desc) || !isset($data->start) || !isset($data->end) || !isset($data->notifications) || !isset($data->projectId)) { HTTP::BadRequest("Missing parameters"); die(); } $id = $runCtrl->editRun(intval($_REQUEST['id']), $data->title, $data->desc, $data->start, $data->end, intval($data->notifications), intval($data->projectId, 10)); $url = BASER_URL . "run.php?id=" . $id; HTTP::OK(json_encode($url), 'Content-type: application/json'); break; } break; case "POST": if (!TestRun::canCreate()) { HTTP::Unauthorized(""); die(); } $put = file_get_contents('php://input'); $data = json_decode($put); if (!isset($data->title) || !isset($data->desc) || !isset($data->start) || !isset($data->end) || !isset($data->notifications) || !isset($data->projectId)) { HTTP::BadRequest("Missing parameters"); die(); } $runCtrl = new RunCtrl(); $id = $runCtrl->createRun($data->title, $data->desc, $data->start, $data->end, intval($data->notifications, 10), intval($data->projectId, 10)); $url = BASER_URL . "run.php?id=" . $id; HTTP::OK(json_encode($url), 'Content-type: application/json'); break; case "DELETE": if (!TestRun::canDelete()) { HTTP::Unauthorized(""); die(); } if (!isset($_REQUEST['id'])) { HTTP::BadRequest("Missing parameters"); die(); } $runCtrl = new RunCtrl(); if ($runCtrl->deleteRun(intval($_REQUEST['id']))) HTTP::OK(""); else HTTP::InternalServerError(""); break; default : HTTP::MethodNotAllowed(""); break; } ?>