21 $record = 148; |
21 $record = 148; |
22 $result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'"); |
22 $result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'"); |
23 $row = mysqli_fetch_array($result); |
23 $row = mysqli_fetch_array($result); |
24 |
24 |
25 |
25 |
|
26 $recipetype = array( 'Extract', 'Partial Mash', 'All Grain' ); |
|
27 $styletype = array( 'Lager', 'Ale', 'Mead', 'Wheat', 'Mixed', 'Cider' ); |
|
28 $hoptype = array( 'Bittering', 'Aroma', 'Both' ); |
|
29 $hopform = array( 'Pellet', 'Plug', 'Leaf' ); |
|
30 $hopuse = array( 'Mash', 'First wort', 'Boil', 'Aroma', 'Whirlpool', 'Dry hop' ); |
|
31 $fermentabletype = array( 'Grain', 'Sugar', 'Extract', 'Dry extract', 'Adjunct' ); |
|
32 $graintype = array( 'Base', 'Roast', 'Crystal', 'Kilned', 'Sour malt', 'Special', 'No malt' ); |
|
33 $yeasttype = array( 'Lager', 'Ale', 'Wheat', 'Wine', 'Champagne' ); |
|
34 $yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle' ); |
|
35 $yeastuse = array( 'Primary', 'Secondary', 'Tertiary', 'Bottle' ); |
|
36 $misctype = array( 'Spice', 'Herb', 'Flavor', 'Fining', 'Water agent', 'Yeast nutrient', 'Other' ); |
|
37 $miscuse = array( 'Starter', 'Mash', 'Boil', 'Primary', 'Secondary', 'Bottling' ); |
|
38 $mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' ); |
|
39 |
26 |
40 |
27 /* |
41 /* |
28 * Create beerxml output |
42 * Create beerxml output |
29 */ |
43 */ |
30 $xw = xmlwriter_open_memory(); |
44 $xw = xmlwriter_open_memory(); |
48 xmlwriter_start_element($xw, 'NOTES'); |
62 xmlwriter_start_element($xw, 'NOTES'); |
49 xmlwriter_text($xw, $row['notes']); |
63 xmlwriter_text($xw, $row['notes']); |
50 xmlwriter_end_element($xw); |
64 xmlwriter_end_element($xw); |
51 |
65 |
52 xmlwriter_start_element($xw, 'TYPE'); |
66 xmlwriter_start_element($xw, 'TYPE'); |
53 xmlwriter_text($xw, $row['type']); |
67 xmlwriter_text($xw, $recipetype[$row['type']]); |
54 xmlwriter_end_element($xw); |
68 xmlwriter_end_element($xw); |
55 |
69 |
56 xmlwriter_start_element($xw, 'BREWER'); |
70 xmlwriter_start_element($xw, 'BREWER'); |
57 xmlwriter_text($xw, 'Anonymous'); |
71 xmlwriter_text($xw, 'Anonymous'); |
58 xmlwriter_end_element($xw); |
72 xmlwriter_end_element($xw); |
71 |
85 |
72 xmlwriter_start_element($xw, 'EFFICIENCY'); |
86 xmlwriter_start_element($xw, 'EFFICIENCY'); |
73 xmlwriter_text($xw, sprintf("%.1f",floatval($row['efficiency']))); |
87 xmlwriter_text($xw, sprintf("%.1f",floatval($row['efficiency']))); |
74 xmlwriter_end_element($xw); |
88 xmlwriter_end_element($xw); |
75 |
89 |
|
90 |
76 // Style |
91 // Style |
77 xmlwriter_start_element($xw, 'STYLE'); |
92 xmlwriter_start_element($xw, 'STYLE'); |
78 |
93 |
79 xmlwriter_start_element($xw, 'VERSION'); |
94 xmlwriter_start_element($xw, 'VERSION'); |
80 xmlwriter_text($xw, '1'); |
95 xmlwriter_text($xw, '1'); |
99 xmlwriter_start_element($xw, 'STYLE_GUIDE'); |
114 xmlwriter_start_element($xw, 'STYLE_GUIDE'); |
100 xmlwriter_text($xw, $row['st_guide']); |
115 xmlwriter_text($xw, $row['st_guide']); |
101 xmlwriter_end_element($xw); |
116 xmlwriter_end_element($xw); |
102 |
117 |
103 xmlwriter_start_element($xw, 'TYPE'); |
118 xmlwriter_start_element($xw, 'TYPE'); |
104 xmlwriter_text($xw, $row['st_type']); |
119 xmlwriter_text($xw, $styletype[$row['st_type']]); |
105 xmlwriter_end_element($xw); |
120 xmlwriter_end_element($xw); |
106 |
121 |
107 xmlwriter_start_element($xw, 'OG_MIN'); |
122 xmlwriter_start_element($xw, 'OG_MIN'); |
108 xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_min']))); |
123 xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_min']))); |
109 xmlwriter_end_element($xw); |
124 xmlwriter_end_element($xw); |
152 xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_max']))); |
167 xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_max']))); |
153 xmlwriter_end_element($xw); |
168 xmlwriter_end_element($xw); |
154 |
169 |
155 xmlwriter_end_element($xw); // STYLE |
170 xmlwriter_end_element($xw); // STYLE |
156 |
171 |
|
172 |
157 xmlwriter_start_element($xw, 'EQUIPMENT'); |
173 xmlwriter_start_element($xw, 'EQUIPMENT'); |
158 |
174 |
159 xmlwriter_start_element($xw, 'VERSION'); |
175 xmlwriter_start_element($xw, 'VERSION'); |
160 xmlwriter_text($xw, '1'); |
176 xmlwriter_text($xw, '1'); |
161 xmlwriter_end_element($xw); |
177 xmlwriter_end_element($xw); |
175 xmlwriter_start_element($xw, 'BOIL_TIME'); |
191 xmlwriter_start_element($xw, 'BOIL_TIME'); |
176 xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time']))); |
192 xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time']))); |
177 xmlwriter_end_element($xw); |
193 xmlwriter_end_element($xw); |
178 |
194 |
179 xmlwriter_end_element($xw); // EQUIPMENT |
195 xmlwriter_end_element($xw); // EQUIPMENT |
|
196 |
180 |
197 |
181 xmlwriter_start_element($xw, 'HOPS'); |
198 xmlwriter_start_element($xw, 'HOPS'); |
182 $arr = json_decode($row['json_hops'], true); |
199 $arr = json_decode($row['json_hops'], true); |
183 foreach($arr as $item) { //foreach element in $arr |
200 foreach($arr as $item) { //foreach element in $arr |
184 |
201 |
199 xmlwriter_start_element($xw, 'AMOUNT'); |
216 xmlwriter_start_element($xw, 'AMOUNT'); |
200 xmlwriter_text($xw, sprintf("%.4f",floatval($item['h_amount']))); |
217 xmlwriter_text($xw, sprintf("%.4f",floatval($item['h_amount']))); |
201 xmlwriter_end_element($xw); |
218 xmlwriter_end_element($xw); |
202 |
219 |
203 xmlwriter_start_element($xw, 'USE'); |
220 xmlwriter_start_element($xw, 'USE'); |
204 xmlwriter_text($xw, $item['h_useat']); |
221 xmlwriter_text($xw, $hopuse[$item['h_useat']]); |
205 xmlwriter_end_element($xw); |
222 xmlwriter_end_element($xw); |
206 |
223 |
207 xmlwriter_start_element($xw, 'TIME'); |
224 xmlwriter_start_element($xw, 'TIME'); |
208 xmlwriter_text($xw, $item['h_time']); |
225 xmlwriter_text($xw, $item['h_time']); |
209 xmlwriter_end_element($xw); |
226 xmlwriter_end_element($xw); |
210 |
227 |
211 xmlwriter_start_element($xw, 'TYPE'); |
228 xmlwriter_start_element($xw, 'TYPE'); |
212 xmlwriter_text($xw, $item['h_type']); |
229 xmlwriter_text($xw, $hoptype[$item['h_type']]); |
213 xmlwriter_end_element($xw); |
230 xmlwriter_end_element($xw); |
214 |
231 |
215 xmlwriter_start_element($xw, 'FORM'); |
232 xmlwriter_start_element($xw, 'FORM'); |
216 xmlwriter_text($xw, $item['h_form']); |
233 xmlwriter_text($xw, $hopform[$item['h_form']]); |
217 xmlwriter_end_element($xw); |
234 xmlwriter_end_element($xw); |
218 |
235 |
219 xmlwriter_start_element($xw, 'BETA'); |
236 xmlwriter_start_element($xw, 'BETA'); |
220 xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_beta']))); |
237 xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_beta']))); |
221 xmlwriter_end_element($xw); |
238 xmlwriter_end_element($xw); |
229 xmlwriter_end_element($xw); |
246 xmlwriter_end_element($xw); |
230 |
247 |
231 xmlwriter_end_element($xw); // HOP |
248 xmlwriter_end_element($xw); // HOP |
232 } |
249 } |
233 xmlwriter_end_element($xw); // HOPS |
250 xmlwriter_end_element($xw); // HOPS |
|
251 |
234 |
252 |
235 xmlwriter_start_element($xw, 'FERMENTABLES'); |
253 xmlwriter_start_element($xw, 'FERMENTABLES'); |
236 $arr = json_decode($row['json_fermentables'], true); |
254 $arr = json_decode($row['json_fermentables'], true); |
237 foreach($arr as $item) { //foreach element in $arr |
255 foreach($arr as $item) { //foreach element in $arr |
238 xmlwriter_start_element($xw, 'FERMENTABLE'); |
256 xmlwriter_start_element($xw, 'FERMENTABLE'); |
244 xmlwriter_start_element($xw, 'NAME'); |
262 xmlwriter_start_element($xw, 'NAME'); |
245 xmlwriter_text($xw, $item['f_name']); |
263 xmlwriter_text($xw, $item['f_name']); |
246 xmlwriter_end_element($xw); |
264 xmlwriter_end_element($xw); |
247 |
265 |
248 xmlwriter_start_element($xw, 'TYPE'); |
266 xmlwriter_start_element($xw, 'TYPE'); |
249 xmlwriter_text($xw, $item['f_type']); |
267 xmlwriter_text($xw, $fermentabletype[$item['f_type']]); |
250 xmlwriter_end_element($xw); |
268 xmlwriter_end_element($xw); |
251 |
269 |
252 xmlwriter_start_element($xw, 'AMOUNT'); |
270 xmlwriter_start_element($xw, 'AMOUNT'); |
253 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_amount']))); |
271 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_amount']))); |
254 xmlwriter_end_element($xw); |
272 xmlwriter_end_element($xw); |
306 xmlwriter_start_element($xw, 'RECOMMEND_MASH'); |
324 xmlwriter_start_element($xw, 'RECOMMEND_MASH'); |
307 ($item['f_recommend_mash']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
325 ($item['f_recommend_mash']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
308 xmlwriter_end_element($xw); |
326 xmlwriter_end_element($xw); |
309 |
327 |
310 xmlwriter_start_element($xw, 'GRAINTYPE'); |
328 xmlwriter_start_element($xw, 'GRAINTYPE'); |
311 xmlwriter_text($xw, $item['f_graintype']); |
329 xmlwriter_text($xw, $graintype[$item['f_graintype']]); |
312 xmlwriter_end_element($xw); |
330 xmlwriter_end_element($xw); |
313 |
331 |
314 xmlwriter_end_element($xw); // FERMENTABLE |
332 xmlwriter_end_element($xw); // FERMENTABLE |
315 } |
333 } |
316 xmlwriter_end_element($xw); // FERMENTABLES |
334 xmlwriter_end_element($xw); // FERMENTABLES |
|
335 |
317 |
336 |
318 xmlwriter_start_element($xw, 'MISCS'); |
337 xmlwriter_start_element($xw, 'MISCS'); |
319 $arr = json_decode($row['json_miscs'], true); |
338 $arr = json_decode($row['json_miscs'], true); |
320 foreach($arr as $item) { |
339 foreach($arr as $item) { |
321 |
340 |
328 xmlwriter_start_element($xw, 'NAME'); |
347 xmlwriter_start_element($xw, 'NAME'); |
329 xmlwriter_text($xw, $item['m_name']); |
348 xmlwriter_text($xw, $item['m_name']); |
330 xmlwriter_end_element($xw); |
349 xmlwriter_end_element($xw); |
331 |
350 |
332 xmlwriter_start_element($xw, 'TYPE'); |
351 xmlwriter_start_element($xw, 'TYPE'); |
333 xmlwriter_text($xw, $item['m_type']); |
352 xmlwriter_text($xw, $misctype[$item['m_type']]); |
334 xmlwriter_end_element($xw); |
353 xmlwriter_end_element($xw); |
335 |
354 |
336 xmlwriter_start_element($xw, 'AMOUNT'); |
355 xmlwriter_start_element($xw, 'AMOUNT'); |
337 xmlwriter_text($xw, sprintf("%.5f",floatval($item['m_amount']))); |
356 xmlwriter_text($xw, sprintf("%.5f",floatval($item['m_amount']))); |
338 xmlwriter_end_element($xw); |
357 xmlwriter_end_element($xw); |
340 xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); |
359 xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); |
341 ($item['m_amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
360 ($item['m_amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
342 xmlwriter_end_element($xw); |
361 xmlwriter_end_element($xw); |
343 |
362 |
344 xmlwriter_start_element($xw, 'USE'); |
363 xmlwriter_start_element($xw, 'USE'); |
345 xmlwriter_text($xw, $item['m_use_use']); |
364 xmlwriter_text($xw, $miscuse[$item['m_use_use']]); |
346 xmlwriter_end_element($xw); |
365 xmlwriter_end_element($xw); |
347 |
366 |
348 xmlwriter_start_element($xw, 'TIME'); |
367 xmlwriter_start_element($xw, 'TIME'); |
349 xmlwriter_text($xw, sprintf("%.0f",floatval($item['m_time']))); |
368 xmlwriter_text($xw, sprintf("%.0f",floatval($item['m_time']))); |
350 xmlwriter_end_element($xw); |
369 xmlwriter_end_element($xw); |
351 |
370 |
352 xmlwriter_end_element($xw); // MISC |
371 xmlwriter_end_element($xw); // MISC |
353 } |
372 } |
354 xmlwriter_end_element($xw); // MISCS |
373 xmlwriter_end_element($xw); // MISCS |
|
374 |
355 |
375 |
356 xmlwriter_start_element($xw, 'YEASTS'); |
376 xmlwriter_start_element($xw, 'YEASTS'); |
357 $arr = json_decode($row['json_yeasts'], true); |
377 $arr = json_decode($row['json_yeasts'], true); |
358 foreach($arr as $item) { //foreach element in $arr |
378 foreach($arr as $item) { //foreach element in $arr |
359 |
379 |
366 xmlwriter_start_element($xw, 'NAME'); |
386 xmlwriter_start_element($xw, 'NAME'); |
367 xmlwriter_text($xw, $item['y_name']); |
387 xmlwriter_text($xw, $item['y_name']); |
368 xmlwriter_end_element($xw); |
388 xmlwriter_end_element($xw); |
369 |
389 |
370 xmlwriter_start_element($xw, 'TYPE'); |
390 xmlwriter_start_element($xw, 'TYPE'); |
371 xmlwriter_text($xw, $item['y_type']); |
391 xmlwriter_text($xw, $yeasttype[$item['y_type']]); |
372 xmlwriter_end_element($xw); |
392 xmlwriter_end_element($xw); |
373 |
393 |
374 xmlwriter_start_element($xw, 'FORM'); |
394 xmlwriter_start_element($xw, 'FORM'); |
375 xmlwriter_text($xw, $item['y_form']); |
395 xmlwriter_text($xw, $yeastform[$item['y_form']]); |
376 xmlwriter_end_element($xw); |
396 xmlwriter_end_element($xw); |
377 |
397 |
378 xmlwriter_start_element($xw, 'AMOUNT'); |
398 xmlwriter_start_element($xw, 'AMOUNT'); |
379 xmlwriter_text($xw, sprintf("%.5f",floatval($item['y_amount']))); |
399 xmlwriter_text($xw, sprintf("%.5f",floatval($item['y_amount']))); |
380 xmlwriter_end_element($xw); |
400 xmlwriter_end_element($xw); |
381 |
401 |
382 xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); |
402 xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); |
383 ($item['y_amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
403 ($item['y_form'] == 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
384 xmlwriter_end_element($xw); |
404 xmlwriter_end_element($xw); |
385 |
405 |
386 xmlwriter_start_element($xw, 'LABORATORY'); |
406 xmlwriter_start_element($xw, 'LABORATORY'); |
387 xmlwriter_text($xw, $item['y_laboratory']); |
407 xmlwriter_text($xw, $item['y_laboratory']); |
388 xmlwriter_end_element($xw); |
408 xmlwriter_end_element($xw); |
402 xmlwriter_start_element($xw, 'ATTENUATION'); |
422 xmlwriter_start_element($xw, 'ATTENUATION'); |
403 xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_attenuation']))); |
423 xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_attenuation']))); |
404 xmlwriter_end_element($xw); |
424 xmlwriter_end_element($xw); |
405 |
425 |
406 xmlwriter_start_element($xw, 'ADD_TO_SECONDARY'); |
426 xmlwriter_start_element($xw, 'ADD_TO_SECONDARY'); |
407 ($item['y_use'] == 'Secondary') ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
427 ($item['y_use'] == 0) ? xmlwriter_text($xw, 'FALSE') : xmlwriter_text($xw, 'TRUE'); |
408 xmlwriter_end_element($xw); |
428 xmlwriter_end_element($xw); |
409 |
429 |
410 xmlwriter_end_element($xw); // YEAST |
430 xmlwriter_end_element($xw); // YEAST |
411 } |
431 } |
412 xmlwriter_end_element($xw); // YEASTS |
432 xmlwriter_end_element($xw); // YEASTS |
|
433 |
413 |
434 |
414 xmlwriter_start_element($xw, 'WATERS'); |
435 xmlwriter_start_element($xw, 'WATERS'); |
415 xmlwriter_start_element($xw, 'WATER'); // Source 1 |
436 xmlwriter_start_element($xw, 'WATER'); // Source 1 |
416 |
437 |
417 xmlwriter_start_element($xw, 'VERSION'); |
438 xmlwriter_start_element($xw, 'VERSION'); |
500 xmlwriter_end_element($xw); |
521 xmlwriter_end_element($xw); |
501 |
522 |
502 xmlwriter_end_element($xw); // WATER |
523 xmlwriter_end_element($xw); // WATER |
503 } |
524 } |
504 xmlwriter_end_element($xw); // WATERS |
525 xmlwriter_end_element($xw); // WATERS |
|
526 |
505 |
527 |
506 xmlwriter_start_element($xw, 'MASH'); |
528 xmlwriter_start_element($xw, 'MASH'); |
507 |
529 |
508 xmlwriter_start_element($xw, 'VERSION'); |
530 xmlwriter_start_element($xw, 'VERSION'); |
509 xmlwriter_text($xw, '1'); |
531 xmlwriter_text($xw, '1'); |
537 xmlwriter_start_element($xw, 'NAME'); |
559 xmlwriter_start_element($xw, 'NAME'); |
538 xmlwriter_text($xw, $item['step_name']); |
560 xmlwriter_text($xw, $item['step_name']); |
539 xmlwriter_end_element($xw); |
561 xmlwriter_end_element($xw); |
540 |
562 |
541 xmlwriter_start_element($xw, 'TYPE'); |
563 xmlwriter_start_element($xw, 'TYPE'); |
542 xmlwriter_text($xw, $item['step_type']); |
564 xmlwriter_text($xw, $mashsteptype[$item['step_type']]); |
543 xmlwriter_end_element($xw); |
565 xmlwriter_end_element($xw); |
544 |
566 |
545 if ($item['step_type'] == 'Infusion') { |
567 if ($item['step_type'] == 0) { |
546 xmlwriter_start_element($xw, 'INFUSE_AMOUNT'); |
568 xmlwriter_start_element($xw, 'INFUSE_AMOUNT'); |
547 xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_infuse_amount']))); |
569 xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_infuse_amount']))); |
548 xmlwriter_end_element($xw); |
570 xmlwriter_end_element($xw); |
549 } |
571 } |
550 |
572 |
570 |
592 |
571 xmlwriter_end_element($xw); // MASH_STEP |
593 xmlwriter_end_element($xw); // MASH_STEP |
572 } |
594 } |
573 xmlwriter_end_element($xw); // MASH_STEPS |
595 xmlwriter_end_element($xw); // MASH_STEPS |
574 xmlwriter_end_element($xw); // MASH |
596 xmlwriter_end_element($xw); // MASH |
|
597 |
575 xmlwriter_end_element($xw); // RECIPE |
598 xmlwriter_end_element($xw); // RECIPE |
576 xmlwriter_end_element($xw); // RECIPES |
599 xmlwriter_end_element($xw); // RECIPES |
577 xmlwriter_end_document($xw); |
600 xmlwriter_end_document($xw); |
578 |
601 |
579 $beerxml = xmlwriter_output_memory($xw); |
602 $beerxml = xmlwriter_output_memory($xw); |