blob: 105c893aa5e5aa6bef66150b7e8bca4a2fd2b739 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php
// Gentoaster web interface AJAX remote
// Licensed under GPL v3, see COPYING file
require_once "config.php";
$buildID = filter_input(INPUT_GET, "uuid", FILTER_UNSAFE_RAW);
$db = new mysqli(
MYSQL_HOSTNAME,
MYSQL_USERNAME,
MYSQL_PASSWORD,
MYSQL_DATABASE
);
if (mysqli_connect_errno()) {
die("Could not connect to database ".mysqli_connect_error());
}
$stmt = $db->prepare("SELECT handle FROM builds WHERE id = ?");
$stmt->bind_param("s", $buildID);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 1) {
$stmt->bind_result($handle);
$stmt->fetch();
$stmt->close();
$client = new GearmanClient();
$client->addServer();
$status = $client->jobStatus($handle);
if ($status[0]) {
if ($status[3] != 0) {
// in progress
$ret = array("status" => 1, "num" => $status[2], "den" => $status[3]);
} else {
// not yet processed
$ret = array("status" => 2);
}
} else {
$query = "SELECT returncode, result ".
"FROM builds WHERE id = ?";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $buildID);
$stmt->execute();
$stmt->bind_result($returncode, $result);
$stmt->fetch();
$stmt->close();
if ($returncode !== null) {
if ($returncode == 0) {
// finished
$ret = array("status" => 0);
} else {
// returned with non-zero status code
$ret = array("status" => 3);
}
} else {
// failed
$ret = array("status" => 4);
}
}
} else {
// job not found
$ret = array("status" => -1);
}
$db->close();
echo json_encode($ret);
?>
|