|
1 <?php |
|
2 |
|
3 require($_SERVER['DOCUMENT_ROOT']."/config.php"); |
|
4 require($_SERVER['DOCUMENT_ROOT']."/version.php"); |
|
5 |
|
6 #Connect to the database |
|
7 $connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); |
|
8 if (! $connect) { |
|
9 die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); |
|
10 } |
|
11 mysqli_set_charset($connect, "utf8" ); |
|
12 |
|
13 $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); |
|
14 $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); |
|
15 $rescapers = array("'"); |
|
16 $rreplacements = array("\\'"); |
|
17 $disallowed = array('visibleindex','uniqueid','boundindex','uid','undefined'); |
|
18 |
|
19 if (isset($_GET['insert']) || isset($_GET['update'])) { |
|
20 if (isset($_GET['insert'])) { |
|
21 $sql = "INSERT INTO `profile_fermentation` SET "; |
|
22 } |
|
23 if (isset($_GET['update'])) { |
|
24 $sql = "UPDATE `profile_fermentation` SET "; |
|
25 } |
|
26 |
|
27 if (isset($_GET['uuid']) && (strlen($_GET['uuid']) == 36)) { |
|
28 $sql .= "uuid='" . $_GET['uuid']; |
|
29 // syslog(LOG_NOTICE, 'Keep uuid '); |
|
30 } else { |
|
31 $uuid = str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid')); |
|
32 $sql .= "uuid='" . $uuid; |
|
33 // syslog(LOG_NOTICE, 'New uuid '); |
|
34 } |
|
35 |
|
36 $sql .= "', name='" . mysqli_real_escape_string($connect, $_GET['name']); |
|
37 $sql .= "', inittemp_lo='" . floatval($_GET['inittemp_lo']); |
|
38 $sql .= "', inittemp_hi='" . floatval($_GET['inittemp_hi']); |
|
39 ($_GET['fridgemode'] == 'true') ? $sql .= "', fridgemode='1" : $sql .= "', fridgemode='0"; |
|
40 $array = $_GET['steps']; |
|
41 // Don't believe given duration and number of steps, recalculate. |
|
42 $duration = 0; |
|
43 $totalsteps = 0; |
|
44 foreach($array as $key => $item) { |
|
45 $totalsteps++; |
|
46 $duration += $item['steptime'] + $item['resttime']; |
|
47 foreach ($disallowed as $disallowed_key) { |
|
48 unset($array[$key]["$disallowed_key"]); |
|
49 } |
|
50 } |
|
51 $sql .= "', totalsteps='" . $totalsteps; |
|
52 $sql .= "', duration='" . $duration; |
|
53 // syslog(LOG_NOTICE, "steps=: ". str_replace($rescapers,$rreplacements,json_encode($array))); |
|
54 $sql .= "', steps='" . str_replace($rescapers,$rreplacements,json_encode($array)); |
|
55 if (isset($_GET['insert'])) { |
|
56 $sql .= "';"; |
|
57 } |
|
58 if (isset($_GET['update'])) { |
|
59 $sql .= "' WHERE record='" . $_GET['record'] . "';"; |
|
60 } |
|
61 syslog(LOG_NOTICE, $sql); |
|
62 $result = mysqli_query($connect, $sql); |
|
63 if (! $result) { |
|
64 syslog(LOG_NOTICE, "db_profile_fermentation: ".$sql." result: ".mysqli_error($connect)); |
|
65 } else { |
|
66 if (isset($_GET['update'])) { |
|
67 syslog(LOG_NOTICE, "db_profile_fermentation: updated record ".$_GET['record']); |
|
68 } else { |
|
69 $lastid = mysqli_insert_id($connect); |
|
70 syslog(LOG_NOTICE, "db_profile_fermentation: inserted record ".$lastid); |
|
71 } |
|
72 } |
|
73 echo $result; |
|
74 |
|
75 } else if (isset($_GET['delete'])) { |
|
76 // DELETE COMMAND |
|
77 $sql = "DELETE FROM `profile_fermentation` WHERE record='".$_GET['record']."';"; |
|
78 $result = mysqli_query($connect, $sql); |
|
79 if (! $result) { |
|
80 syslog(LOG_NOTICE, "db_profile_fermentation: ".$sql." result: ".mysqli_error($connect)); |
|
81 } else { |
|
82 syslog(LOG_NOTICE, "db_profile_fermentation: deleted record ".$_GET['record']); |
|
83 } |
|
84 echo $result; |
|
85 |
|
86 } else { |
|
87 // SELECT COMMAND |
|
88 $query = "SELECT * FROM profile_fermentation ORDER BY name;"; |
|
89 $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); |
|
90 $profiles = '['; |
|
91 $comma = FALSE; |
|
92 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { |
|
93 // Manual encode to JSON. |
|
94 if ($comma) { |
|
95 $profiles .= ','; |
|
96 } |
|
97 $comma = TRUE; |
|
98 $profiles .= '{"record":' . $row['record']; |
|
99 $profiles .= ',"uuid":"' . $row['uuid']; |
|
100 $profiles .= '","name":"' . str_replace($escapers, $replacements, $row['name']); |
|
101 $profiles .= '","inittemp_lo":' . $row['inittemp_lo']; |
|
102 $profiles .= ',"inittemp_hi":' . $row['inittemp_hi']; |
|
103 $profiles .= ',"fridgemode":' . $row['fridgemode']; |
|
104 $profiles .= ',"totalsteps":' . $row['totalsteps']; |
|
105 $profiles .= ',"duration":' . $row['duration']; |
|
106 $profiles .= ',"steps":' . $row['steps']; |
|
107 $profiles .= '}'; |
|
108 } |
|
109 $profiles .= ']'; |
|
110 // syslog(LOG_NOTICE, $profiles); |
|
111 header("Content-type: application/json"); |
|
112 echo $profiles; |
|
113 } |
|
114 ?> |