3 require('../include/json-header.php');
8 exit_with_error('DatabaseConnectionFailure');
11 exit_with_error('InvalidRequest');
13 if (count($path) > 0 && $path[0]) {
14 $group_id = intval($path[0]);
15 $group = $db->select_first_row('analysis_test_groups', 'testgroup', array('id' => $group_id));
17 exit_with_error('GroupNotFound', array('id' => $group_id));
18 $test_groups = array($group);
19 $build_requests = fetch_build_requests_for_group($db, $group_id);
21 $task_id = array_get($_GET, 'task');
23 exit_with_error('TaskIdNotSpecified');
25 $test_groups = fetch_test_groups_for_task($db, $task_id);
26 if (!is_array($test_groups))
27 exit_with_error('FailedToFetchTestGroups');
28 $build_requests = fetch_build_requests_for_task($db, $task_id);
30 if (!is_array($build_requests))
31 exit_with_error('FailedToFetchBuildRequests');
33 $test_groups = array_map("format_test_group", $test_groups);
34 $group_by_id = array();
35 foreach ($test_groups as &$group)
36 $group_by_id[$group['id']] = &$group;
38 $build_requests = array_map("format_build_request", $build_requests);
39 foreach ($build_requests as $request)
40 array_push($group_by_id[$request['testGroup']]['buildRequests'], $request['id']);
42 exit_with_success(array('testGroups' => $test_groups, 'buildRequests' => $build_requests));
45 function fetch_test_groups_for_task($db, $task_id) {
46 return $db->select_rows('analysis_test_groups', 'testgroup', array('task' => $task_id));
49 function fetch_build_requests_for_task($db, $task_id) {
50 return $db->query_and_fetch_all('SELECT * FROM build_requests, builds
51 WHERE request_build = build_id
52 AND request_group IN (SELECT testgroup_id FROM analysis_test_groups WHERE testgroup_task = $1)
53 ORDER BY request_group, request_order', array($task_id));
56 function fetch_build_requests_for_group($db, $test_group_id) {
57 return $db->query_and_fetch_all('SELECT * FROM build_requests, builds
58 WHERE request_build = build_id AND request_group = $1 ORDER BY request_order', array($test_group_id));
61 function format_test_group($group_row) {
63 'id' => $group_row['testgroup_id'],
64 'task' => $group_row['testgroup_task'],
65 'name' => $group_row['testgroup_name'],
66 'author' => $group_row['testgroup_author'],
67 'createdAt' => strtotime($group_row['testgroup_created_at']) * 1000,
68 'buildRequests' => array(),
72 function format_build_request($request_row) {
74 'id' => $request_row['request_id'],
75 'testGroup' => $request_row['request_group'],
76 'order' => $request_row['request_order'],
77 'rootSet' => $request_row['request_root_set'],
78 'build' => $request_row['request_build'],
79 'builder' => $request_row['build_builder'],
80 'buildNumber' => $request_row['build_number'],
81 'buildTime' => $request_row['build_time'] ? strtotime($request_row['build_time']) * 1000 : NULL,
85 main(array_key_exists('PATH_INFO', $_SERVER) ? explode('/', trim($_SERVER['PATH_INFO'], '/')) : array());