3 require_once('../include/json-shared.php');
7 require_existence_of($_GET, array('test' => '/[A-Za-z0-9\._\- ]+/'));
9 $test = $db->select_first_row('tests', NULL, array('name' => $_GET['test']));
11 exit_with_error('TestNotFound');
13 $result_rows = $db->query_and_fetch_all(
14 'SELECT results.*, builds.*, array_agg((build_revisions.repository, build_revisions.value, build_revisions.time)) AS revisions
15 FROM results, builds, build_revisions
16 WHERE build_revisions.build = builds.id AND results.test = $1 AND results.build = builds.id
17 GROUP BY results.id, builds.id', array($test['id']));
19 exit_with_error('ResultsNotFound');
21 date_default_timezone_set('UTC');
22 function parse_revisions_array($postgres_array) {
23 // e.g. {"(WebKit,131456,\"2012-10-16 14:53:00\")","(Safari,162004,)"}
24 $outer_array = json_decode('[' . trim($postgres_array, '{}') . ']');
26 foreach ($outer_array as $item) {
27 $name_and_revision = explode(',', trim($item, '()'));
28 $time = strtotime(trim($name_and_revision[2], '"')) * 1000;
29 $revisions[trim($name_and_revision[0], '"')] = array(trim($name_and_revision[1], '"'), $time);
35 foreach ($result_rows as $result) {
36 array_push(array_ensure_item_has_array($builders, $result['builder']),
37 array('buildTime' => strtotime($result['start_time']) * 1000,
38 'revisions' => parse_revisions_array($result['revisions']),
39 'builder' => $result['builder'],
40 'slave' => $result['slave'],
41 'buildNumber' => $result['number'],
42 'actual' => $result['actual'],
43 'expected' => $result['expected']));
46 exit_with_success(array('builders' => $builders));