10 } |
10 } |
11 mysqli_set_charset($connect, "utf8" ); |
11 mysqli_set_charset($connect, "utf8" ); |
12 |
12 |
13 $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); |
13 $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); |
14 $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); |
14 $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); |
15 |
15 $rescapers = array("'"); |
|
16 $rreplacements = array("\\'"); |
|
17 $disallowed = array('visibleindex','uniqueid','boundindex','uid','h_weight','m_weight'); |
16 |
18 |
17 if (isset($_POST['insert']) || isset($_POST['update'])) { |
19 if (isset($_POST['insert']) || isset($_POST['update'])) { |
18 if (isset($_POST['insert'])) { |
20 if (isset($_POST['insert'])) { |
19 $sql = "INSERT INTO `prod_main` SET "; |
21 $sql = "INSERT INTO `products` SET "; |
20 } |
22 } |
21 if (isset($_POST['update'])) { |
23 if (isset($_POST['update'])) { |
22 $sql = "UPDATE `prod_main` SET "; |
24 $sql = "UPDATE `products` SET "; |
23 } |
25 } |
|
26 |
|
27 $stage = $_POST['stage']; |
|
28 if ($stage == 'Plan') |
|
29 $stageno = 0; |
|
30 else if ($stage == 'Wait') |
|
31 $stageno = 1; |
|
32 else if ($stage == 'Brew') |
|
33 $stageno = 2; |
|
34 else if ($stage == 'Primary') |
|
35 $stageno = 3; |
|
36 else if ($stage == 'Secondary') |
|
37 $stageno = 4; |
|
38 else if ($stage == 'Tertiary') |
|
39 $stageno = 5; |
|
40 else if ($stage == 'Package') |
|
41 $stageno = 6; |
|
42 else if ($stage == 'Carbonation') |
|
43 $stageno = 7; |
|
44 else if ($stage == 'Mature') |
|
45 $stageno = 8; |
|
46 else if ($stage == 'Taste') |
|
47 $stageno = 9; |
|
48 else if ($stage == 'Ready') |
|
49 $stageno = 10; |
|
50 else if ($stage == 'Closed') |
|
51 $stageno = 11; |
|
52 |
24 // Basic settings |
53 // Basic settings |
25 $sql .= "puuid='" . $_POST['puuid']; |
54 $sql .= "uuid='" . $_POST['uuid']; |
26 $sql .= "', pname='" . mysqli_real_escape_string($connect, $_POST['pname']); |
55 $sql .= "', name='" . mysqli_real_escape_string($connect, $_POST['name']); |
|
56 $sql .= "', code='" . mysqli_real_escape_string($connect, $_POST['code']); |
27 $sql .= "', birth='" . $_POST['birth']; |
57 $sql .= "', birth='" . $_POST['birth']; |
28 $sql .= "', stage='" . $_POST['stage']; |
58 $sql .= "', stage='" . $_POST['stage']; |
29 $sql .= "', pnotes='" . mysqli_real_escape_string($connect, $_POST['pnotes']); |
59 $sql .= "', notes='" . mysqli_real_escape_string($connect, $_POST['notes']); |
30 ($_POST['log_brew'] == 'true') ? $sql .= "', log_brew='1" : $sql .= "', log_brew='0"; |
60 ($_POST['log_brew'] == 'true') ? $sql .= "', log_brew='1" : $sql .= "', log_brew='0"; |
31 ($_POST['log_fermentation'] == 'true') ? $sql .= "', log_fermentation='1" : $sql .= "', log_fermentation='0"; |
61 ($_POST['log_fermentation'] == 'true') ? $sql .= "', log_fermentation='1" : $sql .= "', log_fermentation='0"; |
32 ($_POST['inventory_reduced'] == 'true') ? $sql .= "', inventory_reduced='1" : $sql .= "', inventory_reduced='0"; |
62 ($_POST['inventory_reduced'] == 'true') ? $sql .= "', inventory_reduced='1" : $sql .= "', inventory_reduced='0"; |
33 ($_POST['plocked'] == 'true') ? $sql .= "', plocked='1" : $sql .= "', plocked='0"; |
63 ($_POST['locked'] == 'true') ? $sql .= "', locked='1" : $sql .= "', locked='0"; |
34 // Equipment |
64 // Equipment |
35 $sql .= "', eq_name='" . mysqli_real_escape_string($connect, $_POST['eq_name']); |
65 $sql .= "', eq_name='" . mysqli_real_escape_string($connect, $_POST['eq_name']); |
36 $sql .= "', eq_boil_size='" . $_POST['eq_boil_size']; |
66 $sql .= "', eq_boil_size='" . $_POST['eq_boil_size']; |
37 $sql .= "', eq_batch_size='" . $_POST['eq_batch_size']; |
67 $sql .= "', eq_batch_size='" . $_POST['eq_batch_size']; |
38 $sql .= "', eq_tun_volume='" . $_POST['eq_tun_volume']; |
68 $sql .= "', eq_tun_volume='" . $_POST['eq_tun_volume']; |
105 // keg_priming_sugar |
148 // keg_priming_sugar |
106 // keg_priming_amount |
149 // keg_priming_amount |
107 // keg_carbonation_temp |
150 // keg_carbonation_temp |
108 // keg_forced_carb |
151 // keg_forced_carb |
109 // keg_pressure |
152 // keg_pressure |
110 // keg_priming_factor |
153 // keg_priming_factor |
|
154 } |
|
155 |
|
156 if ($stageno >= 9) { |
111 // taste_notes |
157 // taste_notes |
112 // taste_rate |
158 // taste_rate |
113 // taste_date |
159 // taste_date |
114 // taste_color |
160 // taste_color |
115 // taste_transparency |
161 // taste_transparency |
116 // taste_head |
162 // taste_head |
117 // taste_aroma |
163 // taste_aroma |
118 // taste_taste |
164 // taste_taste |
119 // taste_mouthfeel |
165 // taste_mouthfeel |
120 // taste_aftertaste |
166 // taste_aftertaste |
|
167 } |
|
168 |
|
169 /* |
|
170 * Recipe part |
|
171 */ |
|
172 // $sql .= "', st_name='" . mysqli_real_escape_string($connect, $_POST['st_name']); |
|
173 // $sql .= "', st_letter='" . mysqli_real_escape_string($connect, $_POST['st_letter']); |
|
174 // $sql .= "', st_guide='" . mysqli_real_escape_string($connect, $_POST['st_guide']); |
|
175 // $sql .= "', st_type='" . mysqli_real_escape_string($connect, $_POST['st_type']); |
|
176 // $sql .= "', st_category='" . mysqli_real_escape_string($connect, $_POST['st_category']); |
|
177 // $sql .= "', st_category_number='" . $_POST['st_category_number']; |
|
178 $sql .= "', st_og_min='" . $_POST['st_og_min']; |
|
179 $sql .= "', st_og_max='" . $_POST['st_og_max']; |
|
180 $sql .= "', st_fg_min='" . $_POST['st_fg_min']; |
|
181 $sql .= "', st_fg_max='" . $_POST['st_fg_max']; |
|
182 $sql .= "', st_ibu_min='" . $_POST['st_ibu_min']; |
|
183 $sql .= "', st_ibu_max='" . $_POST['st_ibu_max']; |
|
184 $sql .= "', st_color_min='" . $_POST['st_color_min']; |
|
185 $sql .= "', st_color_max='" . $_POST['st_color_max']; |
|
186 $sql .= "', st_carb_min='" . $_POST['st_carb_min']; |
|
187 $sql .= "', st_carb_max='" . $_POST['st_carb_max']; |
|
188 $sql .= "', st_abv_min='" . $_POST['st_abv_min']; |
|
189 $sql .= "', st_abv_max='" . $_POST['st_abv_max']; |
|
190 $sql .= "', type='" . $_POST['type']; |
|
191 $sql .= "', batch_size='" . $_POST['batch_size']; |
|
192 $sql .= "', boil_size='" . $_POST['boil_size']; |
|
193 $sql .= "', boil_time='" . $_POST['boil_time']; |
|
194 $sql .= "', efficiency='" . $_POST['efficiency']; |
|
195 $sql .= "', est_og='" . $_POST['est_og']; |
|
196 $sql .= "', est_fg='" . $_POST['est_fg']; |
|
197 $sql .= "', est_abv='" . $_POST['est_abv']; |
|
198 $sql .= "', est_carb='" . $_POST['est_carb']; |
|
199 $sql .= "', est_color='" . $_POST['est_color']; |
|
200 $sql .= "', color_method='" . $_POST['color_method']; |
|
201 $sql .= "', est_ibu='" . $_POST['est_ibu']; |
|
202 $sql .= "', ibu_method='" . $_POST['ibu_method']; |
|
203 $sql .= "', sparge_temp='" . $_POST['sparge_temp']; |
|
204 $sql .= "', sparge_ph='" . $_POST['sparge_ph']; |
|
205 $sql .= "', sparge_volume='" . $_POST['sparge_volume']; |
|
206 // $sql .= "', sparge_acid_type='" . $_POST['sparge_acid_type']; |
|
207 // $sql .= "', sparge_acid_perc='" . $_POST['sparge_acid_perc']; |
|
208 // $sql .= "', sparge_acid_amount='" . $_POST['sparge_acid_amount']; |
|
209 $sql .= "', mash_ph='" . $_POST['mash_ph']; |
|
210 $sql .= "', mash_name='" . $_POST['mash_name']; |
|
211 $sql .= "', calc_acid='" . $_POST['calc_acid']; |
|
212 if (isset($_POST['w1_name'])) { |
|
213 $sql .= "', w1_name='" . mysqli_real_escape_string($connect, $_POST['w1_name']); |
|
214 $sql .= "', w1_amount='" . $_POST['w1_amount']; |
|
215 $sql .= "', w1_calcium='" . $_POST['w1_calcium']; |
|
216 $sql .= "', w1_sulfate='" . $_POST['w1_sulfate']; |
|
217 $sql .= "', w1_chloride='" . $_POST['w1_chloride']; |
|
218 $sql .= "', w1_sodium='" . $_POST['w1_sodium']; |
|
219 $sql .= "', w1_magnesium='" . $_POST['w1_magnesium']; |
|
220 $sql .= "', w1_total_alkalinity='" . $_POST['w1_total_alkalinity']; |
|
221 $sql .= "', w1_ph='" . $_POST['w1_ph']; |
|
222 $sql .= "', w1_cost='" . $_POST['w1_cost']; |
|
223 } |
|
224 if (isset($_POST['w2_name'])) { |
|
225 $sql .= "', w2_name='" . mysqli_real_escape_string($connect, $_POST['w2_name']); |
|
226 $sql .= "', w2_amount='" . $_POST['w2_amount']; |
|
227 $sql .= "', w2_calcium='" . $_POST['w2_calcium']; |
|
228 $sql .= "', w2_sulfate='" . $_POST['w2_sulfate']; |
|
229 $sql .= "', w2_chloride='" . $_POST['w2_chloride']; |
|
230 $sql .= "', w2_sodium='" . $_POST['w2_sodium']; |
|
231 $sql .= "', w2_magnesium='" . $_POST['w2_magnesium']; |
|
232 $sql .= "', w2_total_alkalinity='" . $_POST['w2_total_alkalinity']; |
|
233 $sql .= "', w2_ph='" . $_POST['w2_ph']; |
|
234 $sql .= "', w2_cost='" . $_POST['w2_cost']; |
|
235 } |
121 syslog(LOG_NOTICE, $sql); |
236 syslog(LOG_NOTICE, $sql); |
|
237 |
|
238 if (isset($_POST['fermentables'])) { |
|
239 $array = $_POST['fermentables']; |
|
240 foreach($array as $key => $item){ |
|
241 foreach ($disallowed as $disallowed_key) { |
|
242 unset($array[$key]["$disallowed_key"]); |
|
243 } |
|
244 } |
|
245 syslog(LOG_NOTICE, "json_fermentables=: ".str_replace($rescapers,$rreplacements,json_encode($array))); |
|
246 $sql .= "', json_fermentables='" . str_replace($rescapers,$rreplacements,json_encode($array)); |
|
247 } |
|
248 |
|
249 if (isset($_POST['hops'])) { |
|
250 $array = $_POST['hops']; |
|
251 foreach($array as $key => $item){ |
|
252 foreach ($disallowed as $disallowed_key) { |
|
253 unset($array[$key]["$disallowed_key"]); |
|
254 } |
|
255 } |
|
256 syslog(LOG_NOTICE, "json_hops: ".str_replace($rescapers,$rreplacements,json_encode($array))); |
|
257 $sql .= "', json_hops='" . str_replace($rescapers,$rreplacements,json_encode($array)); |
|
258 } |
|
259 |
|
260 if (isset($_POST['miscs'])) { |
|
261 $array = $_POST['miscs']; |
|
262 foreach($array as $key => $item){ |
|
263 foreach ($disallowed as $disallowed_key) { |
|
264 unset($array[$key]["$disallowed_key"]); |
|
265 } |
|
266 } |
|
267 syslog(LOG_NOTICE, "json_miscs: ".str_replace($rescapers,$rreplacements,json_encode($array))); |
|
268 $sql .= "', json_miscs='" . str_replace($rescapers,$rreplacements,json_encode($array)); |
|
269 } |
|
270 |
|
271 if (isset($_POST['yeasts'])) { |
|
272 $array = $_POST['yeasts']; |
|
273 foreach($array as $key => $item){ |
|
274 foreach ($disallowed as $disallowed_key) { |
|
275 unset($array[$key]["$disallowed_key"]); |
|
276 } |
|
277 } |
|
278 syslog(LOG_NOTICE, "json_yeasts: ". str_replace($rescapers,$rreplacements,json_encode($array))); |
|
279 $sql .= "', json_yeasts='" . str_replace($rescapers,$rreplacements,json_encode($array)); |
|
280 } |
|
281 |
|
282 if (isset($_POST['mashs'])) { |
|
283 $array = $_POST['mashs']; |
|
284 foreach($array as $key => $item){ |
|
285 foreach ($disallowed as $disallowed_key) { |
|
286 unset($array[$key]["$disallowed_key"]); |
|
287 } |
|
288 } |
|
289 syslog(LOG_NOTICE, "json_mashs: ".str_replace($rescapers,$rreplacements,json_encode($array))); |
|
290 $sql .= "', json_mashs='" . str_replace($rescapers,$rreplacements,json_encode($array)); |
|
291 } |
|
292 |
122 if (isset($_POST['insert'])) { |
293 if (isset($_POST['insert'])) { |
123 $sql .= "';"; |
294 $sql .= "';"; |
124 } |
295 } |
125 if (isset($_POST['update'])) { |
296 if (isset($_POST['update'])) { |
126 $sql .= "' WHERE record='" . $_POST['record'] . "';"; |
297 $sql .= "' WHERE record='" . $_POST['record'] . "';"; |
185 |
348 |
186 /* |
349 /* |
187 * Default, select all or a given record. |
350 * Default, select all or a given record. |
188 */ |
351 */ |
189 if (isset($_GET['record'])) { |
352 if (isset($_GET['record'])) { |
190 $query = "SELECT * FROM prod_main LEFT JOIN prod_recipes ON puuid = uuid WHERE prod_main.record='"; |
353 $query = "SELECT * FROM products WHERE record='" . $_GET['record'] . "';"; |
191 $query .= $_GET['record'] . "';"; |
|
192 } else { |
354 } else { |
193 $query = "SELECT * FROM prod_main LEFT JOIN prod_recipes ON puuid = uuid ORDER BY birth,code;"; |
355 $query = "SELECT * FROM products ORDER BY birth,code;"; |
194 } |
356 } |
195 $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); |
357 $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); |
196 $brews = '['; |
358 $brews = '['; |
197 $comma = FALSE; |
359 $comma = FALSE; |
198 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { |
360 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { |
199 // Manual encode to JSON. |
361 // Manual encode to JSON. |
200 if ($comma) |
362 if ($comma) |
201 $brews .= ','; |
363 $brews .= ','; |
202 $comma = TRUE; |
364 $comma = TRUE; |
203 $brew = '{"record":' . $row['record']; |
365 $brew = '{"record":' . $row['record']; |
204 $brew .= ',"puuid":"' . str_replace($escapers, $replacements, $row['puuid']); |
366 $brew .= ',"uuid":"' . str_replace($escapers, $replacements, $row['uuid']); |
205 $brew .= '","pname":"' . str_replace($escapers, $replacements, $row['pname']); |
367 $brew .= '","name":"' . str_replace($escapers, $replacements, $row['name']); |
206 $brew .= '","code":"' . str_replace($escapers, $replacements, $row['code']); |
368 $brew .= '","code":"' . str_replace($escapers, $replacements, $row['code']); |
207 $brew .= '","birth":"' . str_replace($escapers, $replacements, $row['birth']); |
369 $brew .= '","birth":"' . str_replace($escapers, $replacements, $row['birth']); |
208 $brew .= '","stage":"' . str_replace($escapers, $replacements, $row['stage']); |
370 $brew .= '","stage":"' . str_replace($escapers, $replacements, $row['stage']); |
209 $brew .= '","pnotes":"' . str_replace($escapers, $replacements, $row['pnotes']); |
371 $brew .= '","notes":"' . str_replace($escapers, $replacements, $row['notes']); |
210 $brew .= '","log_brew":' . $row['log_brew']; |
372 $brew .= '","log_brew":' . $row['log_brew']; |
211 $brew .= ',"log_fermentation":' . $row['log_fermentation']; |
373 $brew .= ',"log_fermentation":' . $row['log_fermentation']; |
212 $brew .= ',"inventory_reduced":' . $row['inventory_reduced']; |
374 $brew .= ',"inventory_reduced":' . $row['inventory_reduced']; |
213 $brew .= ',"plocked":' . $row['plocked']; |
375 $brew .= ',"locked":' . $row['locked']; |
214 $brew .= ',"eq_name":"' . str_replace($escapers, $replacements, $row['eq_name']); |
376 $brew .= ',"eq_name":"' . str_replace($escapers, $replacements, $row['eq_name']); |
215 $brew .= '","eq_notes":"' . str_replace($escapers, $replacements, $row['eq_notes']); |
377 $brew .= '","eq_notes":"' . str_replace($escapers, $replacements, $row['eq_notes']); |
216 $brew .= '","eq_boil_size":' . floatval($row['eq_boil_size']); |
378 $brew .= '","eq_boil_size":' . floatval($row['eq_boil_size']); |
217 $brew .= ',"eq_batch_size":' . floatval($row['eq_batch_size']); |
379 $brew .= ',"eq_batch_size":' . floatval($row['eq_batch_size']); |
218 $brew .= ',"eq_tun_volume":' . floatval($row['eq_tun_volume']); |
380 $brew .= ',"eq_tun_volume":' . floatval($row['eq_tun_volume']); |
314 $brew .= ',"st_color_max":' . floatval($row['st_color_max']); |
476 $brew .= ',"st_color_max":' . floatval($row['st_color_max']); |
315 $brew .= ',"st_carb_min":' . floatval($row['st_carb_min']); |
477 $brew .= ',"st_carb_min":' . floatval($row['st_carb_min']); |
316 $brew .= ',"st_carb_max":' . floatval($row['st_carb_max']); |
478 $brew .= ',"st_carb_max":' . floatval($row['st_carb_max']); |
317 $brew .= ',"st_abv_min":' . floatval($row['st_abv_min']); |
479 $brew .= ',"st_abv_min":' . floatval($row['st_abv_min']); |
318 $brew .= ',"st_abv_max":' . floatval($row['st_abv_max']); |
480 $brew .= ',"st_abv_max":' . floatval($row['st_abv_max']); |
319 $brew .= ',"notes":"' . str_replace($escapers, $replacements, $row['notes']); |
481 $brew .= ',"type":"' . $row['type']; |
320 $brew .= '","type":"' . $row['type']; |
|
321 $brew .= '","batch_size":' . floatval($row['batch_size']); |
482 $brew .= '","batch_size":' . floatval($row['batch_size']); |
322 $brew .= ',"boil_size":' . floatval($row['boil_size']); |
483 $brew .= ',"boil_size":' . floatval($row['boil_size']); |
323 $brew .= ',"boil_time":' . floatval($row['boil_time']); |
484 $brew .= ',"boil_time":' . floatval($row['boil_time']); |
324 $brew .= ',"efficiency":' . floatval($row['efficiency']); |
485 $brew .= ',"efficiency":' . floatval($row['efficiency']); |
325 $brew .= ',"est_og":' . floatval($row['est_og']); |
486 $brew .= ',"est_og":' . floatval($row['est_og']); |