Sat, 09 Feb 2019 15:43:13 +0100
Rework the volume to the fermenter and things that depend on that. New layout on the brewday tab. The calculation model is simpler then the brouwhulp version.
177 | 1 | <?php |
2 | require_once('config.php'); | |
3 | require_once('includes/formulas.php'); | |
4 | //require_once($_SERVER['DOCUMENT_ROOT'].'/config.php'); | |
5 | //require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); | |
6 | ||
7 | ||
8 | $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); | |
9 | if (! $link) { | |
10 | die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); | |
11 | } | |
12 | if (! mysqli_set_charset($link, "utf8" )) { | |
13 | echo "error"; | |
14 | return 1; | |
15 | } | |
16 | ||
17 | //setlocale ( LC_ALL, 'nl_NL.UTF-8'); | |
18 | if (isset($_GET["record"])) | |
19 | $record = $_GET["record"]; | |
20 | else | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
21 | $record = 78; |
177 | 22 | $result = mysqli_query($link, "SELECT * FROM products WHERE record='".$record."'"); |
23 | $row = mysqli_fetch_array($result); | |
24 | ||
25 | ||
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
26 | $recipetype = array( 'Extract', 'Partial Mash', 'All Grain' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
27 | $styletype = array( 'Lager', 'Ale', 'Mead', 'Wheat', 'Mixed', 'Cider' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
28 | $hoptype = array( 'Bittering', 'Aroma', 'Both' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
29 | $hopform = array( 'Pellet', 'Plug', 'Leaf' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
30 | $hopuse = array( 'Mash', 'First wort', 'Boil', 'Aroma', 'Whirlpool', 'Dry hop' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
31 | $fermentabletype = array( 'Grain', 'Sugar', 'Extract', 'Dry extract', 'Adjunct' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
32 | $graintype = array( 'Base', 'Roast', 'Crystal', 'Kilned', 'Sour malt', 'Special', 'No malt' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
33 | $yeasttype = array( 'Lager', 'Ale', 'Wheat', 'Wine', 'Champagne' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
34 | $yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
35 | $yeastuse = array( 'Primary', 'Secondary', 'Tertiary', 'Bottle' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
36 | $misctype = array( 'Spice', 'Herb', 'Flavor', 'Fining', 'Water agent', 'Yeast nutrient', 'Other' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
37 | $miscuse = array( 'Starter', 'Mash', 'Boil', 'Primary', 'Secondary', 'Bottling' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
38 | $mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
39 | |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
40 | |
177 | 41 | |
42 | /* | |
43 | * Create beerxml output | |
44 | */ | |
45 | $xw = xmlwriter_open_memory(); | |
46 | xmlwriter_set_indent($xw, 1); | |
47 | $res = xmlwriter_set_indent_string($xw, ' '); | |
48 | ||
49 | xmlwriter_start_document($xw, '1.0', 'UTF-8'); | |
50 | ||
51 | xmlwriter_start_element($xw, 'RECIPES'); | |
52 | xmlwriter_start_element($xw, 'RECIPE'); | |
53 | ||
54 | // Recipe basics | |
55 | xmlwriter_start_element($xw, 'VERSION'); | |
56 | xmlwriter_text($xw, '1'); | |
57 | xmlwriter_end_element($xw); | |
58 | ||
59 | xmlwriter_start_element($xw, 'NAME'); | |
60 | xmlwriter_text($xw, $row['name']); | |
61 | xmlwriter_end_element($xw); | |
62 | ||
63 | xmlwriter_start_element($xw, 'NOTES'); | |
64 | xmlwriter_text($xw, $row['notes']); | |
65 | xmlwriter_end_element($xw); | |
66 | ||
67 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
68 | xmlwriter_text($xw, $recipetype[$row['type']]); |
177 | 69 | xmlwriter_end_element($xw); |
70 | ||
71 | xmlwriter_start_element($xw, 'BREWER'); | |
72 | xmlwriter_text($xw, 'Anonymous'); | |
73 | xmlwriter_end_element($xw); | |
74 | ||
75 | xmlwriter_start_element($xw, 'BATCH_SIZE'); | |
76 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['batch_size']))); | |
77 | xmlwriter_end_element($xw); | |
78 | ||
79 | xmlwriter_start_element($xw, 'BOIL_SIZE'); | |
80 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['boil_size']))); | |
81 | xmlwriter_end_element($xw); | |
82 | ||
83 | xmlwriter_start_element($xw, 'BOIL_TIME'); | |
84 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time']))); | |
85 | xmlwriter_end_element($xw); | |
86 | ||
87 | xmlwriter_start_element($xw, 'EFFICIENCY'); | |
88 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['efficiency']))); | |
89 | xmlwriter_end_element($xw); | |
90 | ||
91 | xmlwriter_start_element($xw, 'OG'); | |
92 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['og']))); | |
93 | xmlwriter_end_element($xw); | |
94 | ||
95 | xmlwriter_start_element($xw, 'FG'); | |
96 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['fg']))); | |
97 | xmlwriter_end_element($xw); | |
98 | ||
99 | // Style | |
100 | xmlwriter_start_element($xw, 'STYLE'); | |
101 | ||
102 | xmlwriter_start_element($xw, 'VERSION'); | |
103 | xmlwriter_text($xw, '1'); | |
104 | xmlwriter_end_element($xw); | |
105 | ||
106 | xmlwriter_start_element($xw, 'NAME'); | |
107 | xmlwriter_text($xw, $row['st_name']); | |
108 | xmlwriter_end_element($xw); | |
109 | ||
110 | xmlwriter_start_element($xw, 'CATEGORY'); | |
111 | xmlwriter_text($xw, $row['st_category']); | |
112 | xmlwriter_end_element($xw); | |
113 | ||
114 | xmlwriter_start_element($xw, 'CATEGORY_NUMBER'); | |
115 | xmlwriter_text($xw, $row['st_category_number']); | |
116 | xmlwriter_end_element($xw); | |
117 | ||
118 | xmlwriter_start_element($xw, 'STYLE_LETTER'); | |
119 | xmlwriter_text($xw, $row['st_letter']); | |
120 | xmlwriter_end_element($xw); | |
121 | ||
122 | xmlwriter_start_element($xw, 'STYLE_GUIDE'); | |
123 | xmlwriter_text($xw, $row['st_guide']); | |
124 | xmlwriter_end_element($xw); | |
125 | ||
126 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
127 | xmlwriter_text($xw, $styletype[$row['st_type']]); |
177 | 128 | xmlwriter_end_element($xw); |
129 | ||
130 | xmlwriter_start_element($xw, 'OG_MIN'); | |
131 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_min']))); | |
132 | xmlwriter_end_element($xw); | |
133 | ||
134 | xmlwriter_start_element($xw, 'OG_MAX'); | |
135 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_max']))); | |
136 | xmlwriter_end_element($xw); | |
137 | ||
138 | xmlwriter_start_element($xw, 'FG_MIN'); | |
139 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_min']))); | |
140 | xmlwriter_end_element($xw); | |
141 | ||
142 | xmlwriter_start_element($xw, 'OG_MAX'); | |
143 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_fg_max']))); | |
144 | xmlwriter_end_element($xw); | |
145 | ||
146 | xmlwriter_start_element($xw, 'IBU_MIN'); | |
147 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['st_ibu_min']))); | |
148 | xmlwriter_end_element($xw); | |
149 | ||
150 | xmlwriter_start_element($xw, 'IBU_MAX'); | |
151 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['st_ibu_max']))); | |
152 | xmlwriter_end_element($xw); | |
153 | ||
154 | xmlwriter_start_element($xw, 'COLOR_MIN'); | |
155 | xmlwriter_text($xw, sprintf("%.2f",ebc_to_srm(floatval($row['st_color_min'])))); | |
156 | xmlwriter_end_element($xw); | |
157 | ||
158 | xmlwriter_start_element($xw, 'COLOR_MAX'); | |
159 | xmlwriter_text($xw, sprintf("%.2f",ebc_to_srm(floatval($row['st_color_max'])))); | |
160 | xmlwriter_end_element($xw); | |
161 | ||
162 | xmlwriter_start_element($xw, 'CARB_MIN'); | |
163 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_carb_min']))); | |
164 | xmlwriter_end_element($xw); | |
165 | ||
166 | xmlwriter_start_element($xw, 'CARB_MAX'); | |
167 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_carb_max']))); | |
168 | xmlwriter_end_element($xw); | |
169 | ||
170 | xmlwriter_start_element($xw, 'ABV_MIN'); | |
171 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_min']))); | |
172 | xmlwriter_end_element($xw); | |
173 | ||
174 | xmlwriter_start_element($xw, 'ABV_MAX'); | |
175 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_max']))); | |
176 | xmlwriter_end_element($xw); | |
177 | ||
178 | xmlwriter_end_element($xw); // STYLE | |
179 | ||
180 | xmlwriter_start_element($xw, 'EQUIPMENT'); | |
181 | ||
182 | xmlwriter_start_element($xw, 'VERSION'); | |
183 | xmlwriter_text($xw, '1'); | |
184 | xmlwriter_end_element($xw); | |
185 | ||
186 | xmlwriter_start_element($xw, 'NAME'); | |
187 | xmlwriter_text($xw, $row['eq_name']); | |
188 | xmlwriter_end_element($xw); | |
189 | ||
190 | xmlwriter_start_element($xw, 'NOTES'); | |
191 | xmlwriter_text($xw, $row['eq_notes']); | |
192 | xmlwriter_end_element($xw); | |
193 | ||
194 | xmlwriter_start_element($xw, 'BATCH_SIZE'); | |
195 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['eq_batch_size']))); | |
196 | xmlwriter_end_element($xw); | |
197 | ||
198 | xmlwriter_start_element($xw, 'BOIL_SIZE'); | |
199 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['eq_boil_size']))); | |
200 | xmlwriter_end_element($xw); | |
201 | ||
202 | xmlwriter_start_element($xw, 'BOIL_TIME'); | |
203 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['eq_boil_time']))); | |
204 | xmlwriter_end_element($xw); | |
205 | ||
206 | xmlwriter_end_element($xw); // EQUIPMENT | |
207 | ||
208 | xmlwriter_start_element($xw, 'HOPS'); | |
209 | $arr = json_decode($row['json_hops'], true); | |
210 | foreach($arr as $item) { //foreach element in $arr | |
211 | ||
212 | xmlwriter_start_element($xw, 'HOP'); | |
213 | ||
214 | xmlwriter_start_element($xw, 'VERSION'); | |
215 | xmlwriter_text($xw, '1'); | |
216 | xmlwriter_end_element($xw); | |
217 | ||
218 | xmlwriter_start_element($xw, 'NAME'); | |
219 | xmlwriter_text($xw, $item['h_name']); | |
220 | xmlwriter_end_element($xw); | |
221 | ||
222 | xmlwriter_start_element($xw, 'ALPHA'); | |
223 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_alpha']))); | |
224 | xmlwriter_end_element($xw); | |
225 | ||
226 | xmlwriter_start_element($xw, 'AMOUNT'); | |
227 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['h_amount']))); | |
228 | xmlwriter_end_element($xw); | |
229 | ||
230 | xmlwriter_start_element($xw, 'USE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
231 | xmlwriter_text($xw, $hopuse[$item['h_useat']]); |
177 | 232 | xmlwriter_end_element($xw); |
233 | ||
234 | xmlwriter_start_element($xw, 'TIME'); | |
235 | xmlwriter_text($xw, $item['h_time']); | |
236 | xmlwriter_end_element($xw); | |
237 | ||
238 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
239 | xmlwriter_text($xw, $hoptype[$item['h_type']]); |
177 | 240 | xmlwriter_end_element($xw); |
241 | ||
242 | xmlwriter_start_element($xw, 'FORM'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
243 | xmlwriter_text($xw, $hopform[$item['h_form']]); |
177 | 244 | xmlwriter_end_element($xw); |
245 | ||
246 | xmlwriter_start_element($xw, 'BETA'); | |
247 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_beta']))); | |
248 | xmlwriter_end_element($xw); | |
249 | ||
250 | xmlwriter_start_element($xw, 'HSI'); | |
251 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_hsi']))); | |
252 | xmlwriter_end_element($xw); | |
253 | ||
254 | xmlwriter_start_element($xw, 'ORIGIN'); | |
255 | xmlwriter_text($xw, $item['h_origin']); | |
256 | xmlwriter_end_element($xw); | |
257 | ||
258 | xmlwriter_end_element($xw); // HOP | |
259 | } | |
260 | xmlwriter_end_element($xw); // HOPS | |
261 | ||
262 | xmlwriter_start_element($xw, 'FERMENTABLES'); | |
263 | $arr = json_decode($row['json_fermentables'], true); | |
264 | foreach($arr as $item) { //foreach element in $arr | |
265 | xmlwriter_start_element($xw, 'FERMENTABLE'); | |
266 | ||
267 | xmlwriter_start_element($xw, 'VERSION'); | |
268 | xmlwriter_text($xw, '1'); | |
269 | xmlwriter_end_element($xw); | |
270 | ||
271 | xmlwriter_start_element($xw, 'NAME'); | |
272 | xmlwriter_text($xw, $item['f_name']); | |
273 | xmlwriter_end_element($xw); | |
274 | ||
275 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
276 | xmlwriter_text($xw, $fermentabletype[$item['f_type']]); |
177 | 277 | xmlwriter_end_element($xw); |
278 | ||
279 | xmlwriter_start_element($xw, 'AMOUNT'); | |
280 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_amount']))); | |
281 | xmlwriter_end_element($xw); | |
282 | ||
283 | xmlwriter_start_element($xw, 'YIELD'); | |
284 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_yield']))); | |
285 | xmlwriter_end_element($xw); | |
286 | ||
287 | xmlwriter_start_element($xw, 'COLOR'); | |
288 | xmlwriter_text($xw, sprintf("%.1f",ebc_to_srm(floatval($item['f_color'])))); | |
289 | xmlwriter_end_element($xw); | |
290 | ||
291 | xmlwriter_start_element($xw, 'ADD_AFTER_BOIL'); | |
292 | ($item['f_add_after_boil']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); | |
293 | xmlwriter_end_element($xw); | |
294 | ||
295 | xmlwriter_start_element($xw, 'ORIGIN'); | |
296 | xmlwriter_text($xw, $item['f_origin']); | |
297 | xmlwriter_end_element($xw); | |
298 | ||
299 | xmlwriter_start_element($xw, 'SUPPLIER'); | |
300 | xmlwriter_text($xw, $item['f_supplier']); | |
301 | xmlwriter_end_element($xw); | |
302 | ||
303 | if (floatval($item['f_coarse_fine_diff'])) { | |
304 | xmlwriter_start_element($xw, 'COARSE_FINE_DIFF'); | |
305 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_coarse_fine_diff']))); | |
306 | xmlwriter_end_element($xw); | |
307 | } | |
308 | ||
309 | if (floatval($item['f_moisture'])) { | |
310 | xmlwriter_start_element($xw, 'MOISTURE'); | |
311 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_moisture']))); | |
312 | xmlwriter_end_element($xw); | |
313 | } | |
314 | ||
315 | if (floatval($item['f_diastatic_power'])) { | |
316 | xmlwriter_start_element($xw, 'DIASTATIC_POWER'); | |
317 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_diastatic_power']))); | |
318 | xmlwriter_end_element($xw); | |
319 | } | |
320 | ||
321 | if (floatval($item['f_protein'])) { | |
322 | xmlwriter_start_element($xw, 'PROTEIN'); | |
323 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_protein']))); | |
324 | xmlwriter_end_element($xw); | |
325 | } | |
326 | ||
327 | if (floatval($item['f_max_in_batch'])) { | |
328 | xmlwriter_start_element($xw, 'MAX_IN_BATCH'); | |
329 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_max_in_batch']))); | |
330 | xmlwriter_end_element($xw); | |
331 | } | |
332 | ||
333 | xmlwriter_start_element($xw, 'RECOMMEND_MASH'); | |
334 | ($item['f_recommend_mash']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); | |
335 | xmlwriter_end_element($xw); | |
336 | ||
337 | xmlwriter_start_element($xw, 'GRAINTYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
338 | xmlwriter_text($xw, $graintype[$item['f_graintype']]); |
177 | 339 | xmlwriter_end_element($xw); |
340 | ||
341 | xmlwriter_end_element($xw); // FERMENTABLE | |
342 | } | |
343 | xmlwriter_end_element($xw); // FERMENTABLES | |
344 | ||
345 | xmlwriter_start_element($xw, 'MISCS'); | |
346 | $arr = json_decode($row['json_miscs'], true); | |
347 | foreach($arr as $item) { | |
348 | ||
349 | xmlwriter_start_element($xw, 'MISC'); | |
350 | ||
351 | xmlwriter_start_element($xw, 'VERSION'); | |
352 | xmlwriter_text($xw, '1'); | |
353 | xmlwriter_end_element($xw); | |
354 | ||
355 | xmlwriter_start_element($xw, 'NAME'); | |
356 | xmlwriter_text($xw, $item['m_name']); | |
357 | xmlwriter_end_element($xw); | |
358 | ||
359 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
360 | xmlwriter_text($xw, $misctype[$item['m_type']]); |
177 | 361 | xmlwriter_end_element($xw); |
362 | ||
363 | xmlwriter_start_element($xw, 'AMOUNT'); | |
364 | xmlwriter_text($xw, sprintf("%.5f",floatval($item['m_amount']))); | |
365 | xmlwriter_end_element($xw); | |
366 | ||
367 | xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); | |
368 | ($item['m_amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); | |
369 | xmlwriter_end_element($xw); | |
370 | ||
371 | xmlwriter_start_element($xw, 'USE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
372 | xmlwriter_text($xw, $miscuse[$item['m_use_use']]); |
177 | 373 | xmlwriter_end_element($xw); |
374 | ||
375 | xmlwriter_start_element($xw, 'TIME'); | |
376 | xmlwriter_text($xw, sprintf("%.0f",floatval($item['m_time']))); | |
377 | xmlwriter_end_element($xw); | |
378 | ||
379 | xmlwriter_end_element($xw); // MISC | |
380 | } | |
381 | xmlwriter_end_element($xw); // MISCS | |
382 | ||
383 | xmlwriter_start_element($xw, 'YEASTS'); | |
384 | $arr = json_decode($row['json_yeasts'], true); | |
385 | foreach($arr as $item) { //foreach element in $arr | |
386 | ||
387 | xmlwriter_start_element($xw, 'YEAST'); | |
388 | ||
389 | xmlwriter_start_element($xw, 'VERSION'); | |
390 | xmlwriter_text($xw, '1'); | |
391 | xmlwriter_end_element($xw); | |
392 | ||
393 | xmlwriter_start_element($xw, 'NAME'); | |
394 | xmlwriter_text($xw, $item['y_name']); | |
395 | xmlwriter_end_element($xw); | |
396 | ||
397 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
398 | xmlwriter_text($xw, $yeasttype[$item['y_type']]); |
177 | 399 | xmlwriter_end_element($xw); |
400 | ||
401 | xmlwriter_start_element($xw, 'FORM'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
402 | xmlwriter_text($xw, $yeastform[$item['y_form']]); |
177 | 403 | xmlwriter_end_element($xw); |
404 | ||
405 | xmlwriter_start_element($xw, 'AMOUNT'); | |
406 | xmlwriter_text($xw, sprintf("%.5f",floatval($item['y_amount']))); | |
407 | xmlwriter_end_element($xw); | |
408 | ||
409 | xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
410 | ($item['y_form'] == 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
177 | 411 | xmlwriter_end_element($xw); |
412 | ||
413 | xmlwriter_start_element($xw, 'LABORATORY'); | |
414 | xmlwriter_text($xw, $item['y_laboratory']); | |
415 | xmlwriter_end_element($xw); | |
416 | ||
417 | xmlwriter_start_element($xw, 'PRODUCT_ID'); | |
418 | xmlwriter_text($xw, $item['y_product_id']); | |
419 | xmlwriter_end_element($xw); | |
420 | ||
421 | xmlwriter_start_element($xw, 'MIN_TEMPERATURE'); | |
422 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_min_temperature']))); | |
423 | xmlwriter_end_element($xw); | |
424 | ||
425 | xmlwriter_start_element($xw, 'MAX_TEMPERATURE'); | |
426 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_max_temperature']))); | |
427 | xmlwriter_end_element($xw); | |
428 | ||
429 | xmlwriter_start_element($xw, 'ATTENUATION'); | |
430 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_attenuation']))); | |
431 | xmlwriter_end_element($xw); | |
432 | ||
433 | xmlwriter_start_element($xw, 'ADD_TO_SECONDARY'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
434 | ($item['y_use'] == 0) ? xmlwriter_text($xw, 'FALSE') : xmlwriter_text($xw, 'TRUE'); |
177 | 435 | xmlwriter_end_element($xw); |
436 | ||
437 | xmlwriter_end_element($xw); // YEAST | |
438 | } | |
439 | xmlwriter_end_element($xw); // YEASTS | |
440 | ||
441 | xmlwriter_start_element($xw, 'WATERS'); | |
442 | xmlwriter_start_element($xw, 'WATER'); // Source 1 | |
443 | ||
444 | xmlwriter_start_element($xw, 'VERSION'); | |
445 | xmlwriter_text($xw, '1'); | |
446 | xmlwriter_end_element($xw); | |
447 | ||
448 | xmlwriter_start_element($xw, 'NAME'); | |
449 | xmlwriter_text($xw, $row['w1_name']); | |
450 | xmlwriter_end_element($xw); | |
451 | ||
452 | xmlwriter_start_element($xw, 'AMOUNT'); | |
453 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_amount']))); | |
454 | xmlwriter_end_element($xw); | |
455 | ||
456 | xmlwriter_start_element($xw, 'CALCIUM'); | |
457 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_calcium']))); | |
458 | xmlwriter_end_element($xw); | |
459 | ||
460 | xmlwriter_start_element($xw, 'BICARBONATE'); | |
461 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_total_alkalinity']) * 1.22)); | |
462 | xmlwriter_end_element($xw); | |
463 | ||
464 | xmlwriter_start_element($xw, 'SULFATE'); | |
465 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_sulfate']))); | |
466 | xmlwriter_end_element($xw); | |
467 | ||
468 | xmlwriter_start_element($xw, 'CHLORIDE'); | |
469 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_chloride']))); | |
470 | xmlwriter_end_element($xw); | |
471 | ||
472 | xmlwriter_start_element($xw, 'SODIUM'); | |
473 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_sodium']))); | |
474 | xmlwriter_end_element($xw); | |
475 | ||
476 | xmlwriter_start_element($xw, 'PH'); | |
477 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['w1_ph']))); | |
478 | xmlwriter_end_element($xw); | |
479 | ||
480 | xmlwriter_start_element($xw, 'TOTAL_ALKALINITY'); | |
481 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_total_alkalinity']))); | |
482 | xmlwriter_end_element($xw); | |
483 | ||
484 | xmlwriter_end_element($xw); // WATER | |
485 | ||
486 | if (strlen($row['w2_name'])) { | |
487 | xmlwriter_start_element($xw, 'WATER'); // Source 2 | |
488 | ||
489 | xmlwriter_start_element($xw, 'VERSION'); | |
490 | xmlwriter_text($xw, '1'); | |
491 | xmlwriter_end_element($xw); | |
492 | ||
493 | xmlwriter_start_element($xw, 'NAME'); | |
494 | xmlwriter_text($xw, $row['w2_name']); | |
495 | xmlwriter_end_element($xw); | |
496 | ||
497 | xmlwriter_start_element($xw, 'AMOUNT'); | |
498 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_amount']))); | |
499 | xmlwriter_end_element($xw); | |
500 | ||
501 | xmlwriter_start_element($xw, 'CALCIUM'); | |
502 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_calcium']))); | |
503 | xmlwriter_end_element($xw); | |
504 | ||
505 | xmlwriter_start_element($xw, 'BICARBONATE'); | |
506 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_total_alkalinity']) * 1.22)); | |
507 | xmlwriter_end_element($xw); | |
508 | ||
509 | xmlwriter_start_element($xw, 'SULFATE'); | |
510 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_sulfate']))); | |
511 | xmlwriter_end_element($xw); | |
512 | ||
513 | xmlwriter_start_element($xw, 'CHLORIDE'); | |
514 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_chloride']))); | |
515 | xmlwriter_end_element($xw); | |
516 | ||
517 | xmlwriter_start_element($xw, 'SODIUM'); | |
518 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_sodium']))); | |
519 | xmlwriter_end_element($xw); | |
520 | ||
521 | xmlwriter_start_element($xw, 'PH'); | |
522 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['w2_ph']))); | |
523 | xmlwriter_end_element($xw); | |
524 | ||
525 | xmlwriter_start_element($xw, 'TOTAL_ALKALINITY'); | |
526 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_total_alkalinity']))); | |
527 | xmlwriter_end_element($xw); | |
528 | ||
529 | xmlwriter_end_element($xw); // WATER | |
530 | } | |
531 | xmlwriter_end_element($xw); // WATERS | |
532 | ||
533 | xmlwriter_start_element($xw, 'MASH'); | |
534 | ||
535 | xmlwriter_start_element($xw, 'VERSION'); | |
536 | xmlwriter_text($xw, '1'); | |
537 | xmlwriter_end_element($xw); | |
538 | ||
539 | xmlwriter_start_element($xw, 'NAME'); | |
540 | xmlwriter_text($xw, $row['mash_name']); | |
541 | xmlwriter_end_element($xw); | |
542 | ||
543 | xmlwriter_start_element($xw, 'GRAIN_TEMP'); | |
544 | xmlwriter_text($xw, '10.0'); | |
545 | xmlwriter_end_element($xw); | |
546 | ||
547 | xmlwriter_start_element($xw, 'PH'); | |
548 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['sparge_ph']))); | |
549 | xmlwriter_end_element($xw); | |
550 | ||
551 | xmlwriter_start_element($xw, 'SPARGE_TEMP'); | |
552 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['sparge_temp']))); | |
553 | xmlwriter_end_element($xw); | |
554 | ||
555 | xmlwriter_start_element($xw, 'MASH_STEPS'); | |
556 | $arr = json_decode($row['json_mashs'], true); | |
557 | foreach($arr as $item) { //foreach element in $arr | |
558 | xmlwriter_start_element($xw, 'MASH_STEP'); | |
559 | ||
560 | xmlwriter_start_element($xw, 'VERSION'); | |
561 | xmlwriter_text($xw, '1'); | |
562 | xmlwriter_end_element($xw); | |
563 | ||
564 | xmlwriter_start_element($xw, 'NAME'); | |
565 | xmlwriter_text($xw, $item['step_name']); | |
566 | xmlwriter_end_element($xw); | |
567 | ||
568 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
569 | xmlwriter_text($xw, $mashsteptype[$item['step_type']]); |
177 | 570 | xmlwriter_end_element($xw); |
571 | ||
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
572 | if ($item['step_type'] == 0) { |
177 | 573 | xmlwriter_start_element($xw, 'INFUSE_AMOUNT'); |
574 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_infuse_amount']))); | |
575 | xmlwriter_end_element($xw); | |
576 | } | |
577 | ||
578 | xmlwriter_start_element($xw, 'STEP_TEMP'); | |
579 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_temp']))); | |
580 | xmlwriter_end_element($xw); | |
581 | ||
582 | xmlwriter_start_element($xw, 'STEP_TIME'); | |
583 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_time']))); | |
584 | xmlwriter_end_element($xw); | |
585 | ||
586 | xmlwriter_start_element($xw, 'RAMP_TIME'); | |
587 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['ramp_time']))); | |
588 | xmlwriter_end_element($xw); | |
589 | ||
590 | xmlwriter_start_element($xw, 'END_TEMP'); | |
591 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['end_temp']))); | |
592 | xmlwriter_end_element($xw); | |
593 | ||
594 | xmlwriter_start_element($xw, 'PH'); | |
595 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['mash_ph']))); | |
596 | xmlwriter_end_element($xw); | |
597 | ||
598 | xmlwriter_end_element($xw); // MASH_STEP | |
599 | } | |
600 | xmlwriter_end_element($xw); // MASH_STEPS | |
601 | xmlwriter_end_element($xw); // MASH | |
602 | xmlwriter_end_element($xw); // RECIPE | |
603 | xmlwriter_end_element($xw); // RECIPES | |
604 | xmlwriter_end_document($xw); | |
605 | ||
606 | $beerxml = xmlwriter_output_memory($xw); | |
607 | ||
608 | Header('Content-type: text/xml'); | |
609 | header('Content-Disposition: attachment; filename="' . $row['name'] . '.xml"'); | |
610 | header('Content-Transfer-Encoding: binary'); | |
611 | header('Expires: 0'); | |
612 | header('Pragma: no-cache'); | |
613 | header('Content-Length: '.strlen($beerxml)); | |
614 | exit($beerxml); |