www/includes/db_profile_fermentation.php

Tue, 26 Feb 2019 16:18:16 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 26 Feb 2019 16:18:16 +0100
changeset 296
69fadd1aded2
parent 217
318aab371497
child 716
57118e6a4bdb
permissions
-rw-r--r--

Updated design document. Add content header application/json to all scripts that produce json output. Chart prints show the beer code and name in the header. Charts don't display the menu anymore.

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

mercurial