49 |
56 |
50 xmlwriter_start_element($xw, 'RECIPES'); |
57 xmlwriter_start_element($xw, 'RECIPES'); |
51 xmlwriter_start_element($xw, 'RECIPE'); |
58 xmlwriter_start_element($xw, 'RECIPE'); |
52 |
59 |
53 // Recipe basics |
60 // Recipe basics |
54 xmlwriter_start_element($xw, 'VERSION'); |
61 field($xw, 'VERSION', '1'); |
55 xmlwriter_text($xw, '1'); |
62 field($xw, 'NAME', $row['name']); |
56 xmlwriter_end_element($xw); |
63 field($xw, 'NOTES', $row['notes']); |
57 |
64 field($xw, 'TYPE', $recipetype[$row['type']]); |
58 xmlwriter_start_element($xw, 'NAME'); |
65 field($xw, 'BREWER', 'Anonymous'); |
59 xmlwriter_text($xw, $row['name']); |
66 field($xw, 'BATCH_SIZE', sprintf("%.4f",floatval($row['batch_size']))); |
60 xmlwriter_end_element($xw); |
67 field($xw, 'BOIL_SIZE', sprintf("%.4f",floatval($row['boil_size']))); |
61 |
68 field($xw, 'BOIL_TIME', sprintf("%.3f",floatval($row['boil_time']))); |
62 xmlwriter_start_element($xw, 'NOTES'); |
69 field($xw, 'EFFICIENCY', sprintf("%.4f",floatval($row['efficiency']))); |
63 xmlwriter_text($xw, $row['notes']); |
|
64 xmlwriter_end_element($xw); |
|
65 |
|
66 xmlwriter_start_element($xw, 'TYPE'); |
|
67 xmlwriter_text($xw, $recipetype[$row['type']]); |
|
68 xmlwriter_end_element($xw); |
|
69 |
|
70 xmlwriter_start_element($xw, 'BREWER'); |
|
71 xmlwriter_text($xw, 'Anonymous'); |
|
72 xmlwriter_end_element($xw); |
|
73 |
|
74 xmlwriter_start_element($xw, 'BATCH_SIZE'); |
|
75 xmlwriter_text($xw, sprintf("%.2f",floatval($row['batch_size']))); |
|
76 xmlwriter_end_element($xw); |
|
77 |
|
78 xmlwriter_start_element($xw, 'BOIL_SIZE'); |
|
79 xmlwriter_text($xw, sprintf("%.2f",floatval($row['boil_size']))); |
|
80 xmlwriter_end_element($xw); |
|
81 |
|
82 xmlwriter_start_element($xw, 'BOIL_TIME'); |
|
83 xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time']))); |
|
84 xmlwriter_end_element($xw); |
|
85 |
|
86 xmlwriter_start_element($xw, 'EFFICIENCY'); |
|
87 xmlwriter_text($xw, sprintf("%.1f",floatval($row['efficiency']))); |
|
88 xmlwriter_end_element($xw); |
|
89 |
70 |
90 if (floatval($row['est_og']) > 0) { |
71 if (floatval($row['est_og']) > 0) { |
91 xmlwriter_start_element($xw, 'EST_OG'); |
72 field($xw, 'EST_OG', sprintf("%.3f",floatval($row['est_og']))); |
92 xmlwriter_text($xw, sprintf("%.3f",floatval($row['est_og']))); |
|
93 xmlwriter_end_element($xw); |
|
94 } |
73 } |
95 |
74 |
96 if (floatval($row['est_fg']) > 0) { |
75 if (floatval($row['est_fg']) > 0) { |
97 xmlwriter_start_element($xw, 'EST_FG'); |
76 field($xw, 'EST_FG', sprintf("%.3f",floatval($row['est_fg']))); |
98 xmlwriter_text($xw, sprintf("%.3f",floatval($row['est_fg']))); |
|
99 xmlwriter_end_element($xw); |
|
100 } |
77 } |
101 |
78 |
102 if (floatval($row['est_abv']) > 0) { |
79 if (floatval($row['est_abv']) > 0) { |
103 xmlwriter_start_element($xw, 'EST_ABV'); |
80 field($xw, 'EST_ABV', sprintf("%.1f",floatval($row['est_abv']))); |
104 xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_abv']))); |
|
105 xmlwriter_end_element($xw); |
|
106 } |
81 } |
107 |
82 |
108 if (floatval($row['est_color']) > 0) { |
83 if (floatval($row['est_color']) > 0) { |
109 xmlwriter_start_element($xw, 'EST_COLOR'); |
84 field($xw, 'EST_COLOR', sprintf("%.6f", ebc_to_srm(floatval($row['est_color'])))); |
110 xmlwriter_text($xw, sprintf("%.6f", ebc_to_srm(floatval($row['est_color'])))); |
85 field($xw, 'COLOR_METHOD', $colormethod[$row['color_method']]); |
111 xmlwriter_end_element($xw); |
|
112 xmlwriter_start_element($xw, 'COLOR_METHOD'); |
|
113 xmlwriter_text($xw, $colormethod[$row['color_method']]); |
|
114 xmlwriter_end_element($xw); |
|
115 } |
86 } |
116 |
87 |
117 if (floatval($row['est_ibu']) > 0) { |
88 if (floatval($row['est_ibu']) > 0) { |
118 xmlwriter_start_element($xw, 'EST_IBU'); |
89 field($xw, 'EST_IBU', sprintf("%.1f",floatval($row['est_ibu']))); |
119 xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_ibu']))); |
90 field($xw, 'IBU_METHOD', $ibumethod[$row['ibu_method']]); |
120 xmlwriter_end_element($xw); |
|
121 xmlwriter_start_element($xw, 'IBU_METHOD'); |
|
122 xmlwriter_text($xw, $ibumethod[$row['ibu_method']]); |
|
123 xmlwriter_end_element($xw); |
|
124 } |
91 } |
125 |
92 |
126 |
93 |
127 // Style |
94 // Style |
128 xmlwriter_start_element($xw, 'STYLE'); |
95 xmlwriter_start_element($xw, 'STYLE'); |
129 |
96 field($xw, 'VERSION', '1'); |
130 xmlwriter_start_element($xw, 'VERSION'); |
97 field($xw, 'NAME', $row['st_name']); |
131 xmlwriter_text($xw, '1'); |
98 field($xw, 'CATEGORY', $row['st_category']); |
132 xmlwriter_end_element($xw); |
99 field($xw, 'CATEGORY_NUMBER', $row['st_category_number']); |
133 |
100 field($xw, 'STYLE_LETTER', $row['st_letter']); |
134 xmlwriter_start_element($xw, 'NAME'); |
101 field($xw, 'STYLE_GUIDE', $row['st_guide']); |
135 xmlwriter_text($xw, $row['st_name']); |
102 field($xw, 'TYPE', $styletype[$row['st_type']]); |
136 xmlwriter_end_element($xw); |
103 field($xw, 'OG_MIN', sprintf("%.3f",floatval($row['st_og_min']))); |
137 |
104 field($xw, 'OG_MAX', sprintf("%.3f",floatval($row['st_og_max']))); |
138 xmlwriter_start_element($xw, 'CATEGORY'); |
105 field($xw, 'FG_MIN', sprintf("%.3f",floatval($row['st_fg_min']))); |
139 xmlwriter_text($xw, $row['st_category']); |
106 field($xw, 'FG_MAX', sprintf("%.3f",floatval($row['st_fg_max']))); |
140 xmlwriter_end_element($xw); |
107 field($xw, 'IBU_MIN', sprintf("%.0f",floatval($row['st_ibu_min']))); |
141 |
108 field($xw, 'IBU_MAX', sprintf("%.0f",floatval($row['st_ibu_max']))); |
142 xmlwriter_start_element($xw, 'CATEGORY_NUMBER'); |
109 field($xw, 'COLOR_MIN', sprintf("%.2f",ebc_to_srm(floatval($row['st_color_min'])))); |
143 xmlwriter_text($xw, $row['st_category_number']); |
110 field($xw, 'COLOR_MAX', sprintf("%.2f",ebc_to_srm(floatval($row['st_color_max'])))); |
144 xmlwriter_end_element($xw); |
111 field($xw, 'CARB_MIN', sprintf("%.1f",floatval($row['st_carb_min']))); |
145 |
112 field($xw, 'CARB_MAX', sprintf("%.1f",floatval($row['st_carb_max']))); |
146 xmlwriter_start_element($xw, 'STYLE_LETTER'); |
113 field($xw, 'ABV_MIN', sprintf("%.1f",floatval($row['st_abv_min']))); |
147 xmlwriter_text($xw, $row['st_letter']); |
114 field($xw, 'ABV_MAX', sprintf("%.1f",floatval($row['st_abv_max']))); |
148 xmlwriter_end_element($xw); |
115 xmlwriter_end_element($xw); // STYLE |
149 |
|
150 xmlwriter_start_element($xw, 'STYLE_GUIDE'); |
|
151 xmlwriter_text($xw, $row['st_guide']); |
|
152 xmlwriter_end_element($xw); |
|
153 |
|
154 xmlwriter_start_element($xw, 'TYPE'); |
|
155 xmlwriter_text($xw, $styletype[$row['st_type']]); |
|
156 xmlwriter_end_element($xw); |
|
157 |
|
158 xmlwriter_start_element($xw, 'OG_MIN'); |
|
159 xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_min']))); |
|
160 xmlwriter_end_element($xw); |
|
161 |
|
162 xmlwriter_start_element($xw, 'OG_MAX'); |
|
163 xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_max']))); |
|
164 xmlwriter_end_element($xw); |
|
165 |
|
166 xmlwriter_start_element($xw, 'FG_MIN'); |
|
167 xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_fg_min']))); |
|
168 xmlwriter_end_element($xw); |
|
169 |
|
170 xmlwriter_start_element($xw, 'FG_MAX'); |
|
171 xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_fg_max']))); |
|
172 xmlwriter_end_element($xw); |
|
173 |
|
174 xmlwriter_start_element($xw, 'IBU_MIN'); |
|
175 xmlwriter_text($xw, sprintf("%.0f",floatval($row['st_ibu_min']))); |
|
176 xmlwriter_end_element($xw); |
|
177 |
|
178 xmlwriter_start_element($xw, 'IBU_MAX'); |
|
179 xmlwriter_text($xw, sprintf("%.0f",floatval($row['st_ibu_max']))); |
|
180 xmlwriter_end_element($xw); |
|
181 |
|
182 xmlwriter_start_element($xw, 'COLOR_MIN'); |
|
183 xmlwriter_text($xw, sprintf("%.2f",ebc_to_srm(floatval($row['st_color_min'])))); |
|
184 xmlwriter_end_element($xw); |
|
185 |
|
186 xmlwriter_start_element($xw, 'COLOR_MAX'); |
|
187 xmlwriter_text($xw, sprintf("%.2f",ebc_to_srm(floatval($row['st_color_max'])))); |
|
188 xmlwriter_end_element($xw); |
|
189 |
|
190 xmlwriter_start_element($xw, 'CARB_MIN'); |
|
191 xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_carb_min']))); |
|
192 xmlwriter_end_element($xw); |
|
193 |
|
194 xmlwriter_start_element($xw, 'CARB_MAX'); |
|
195 xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_carb_max']))); |
|
196 xmlwriter_end_element($xw); |
|
197 |
|
198 xmlwriter_start_element($xw, 'ABV_MIN'); |
|
199 xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_min']))); |
|
200 xmlwriter_end_element($xw); |
|
201 |
|
202 xmlwriter_start_element($xw, 'ABV_MAX'); |
|
203 xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_max']))); |
|
204 xmlwriter_end_element($xw); |
|
205 |
|
206 xmlwriter_end_element($xw); // STYLE |
|
207 |
|
208 |
116 |
209 xmlwriter_start_element($xw, 'EQUIPMENT'); |
117 xmlwriter_start_element($xw, 'EQUIPMENT'); |
210 |
118 field($xw, 'VERSION', '1'); |
211 xmlwriter_start_element($xw, 'VERSION'); |
119 field($xw, 'NAME', 'Dummy Brewery'); |
212 xmlwriter_text($xw, '1'); |
120 field($xw, 'BATCH_SIZE', sprintf("%.2f",floatval($row['batch_size']))); |
213 xmlwriter_end_element($xw); |
121 field($xw, 'BOIL_SIZE', sprintf("%.2f",floatval($row['boil_size']))); |
214 |
122 field($xw, 'BOIL_TIME', sprintf("%.0f",floatval($row['boil_time']))); |
215 xmlwriter_start_element($xw, 'NAME'); |
123 xmlwriter_end_element($xw); // EQUIPMENT |
216 xmlwriter_text($xw, 'Dummy brewery'); |
|
217 xmlwriter_end_element($xw); |
|
218 |
|
219 xmlwriter_start_element($xw, 'BATCH_SIZE'); |
|
220 xmlwriter_text($xw, sprintf("%.2f",floatval($row['batch_size']))); |
|
221 xmlwriter_end_element($xw); |
|
222 |
|
223 xmlwriter_start_element($xw, 'BOIL_SIZE'); |
|
224 xmlwriter_text($xw, sprintf("%.2f",floatval($row['boil_size']))); |
|
225 xmlwriter_end_element($xw); |
|
226 |
|
227 xmlwriter_start_element($xw, 'BOIL_TIME'); |
|
228 xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time']))); |
|
229 xmlwriter_end_element($xw); |
|
230 |
|
231 xmlwriter_end_element($xw); // EQUIPMENT |
|
232 |
|
233 |
124 |
234 xmlwriter_start_element($xw, 'HOPS'); |
125 xmlwriter_start_element($xw, 'HOPS'); |
235 $arr = json_decode($row['json_hops'], true); |
126 $arr = json_decode($row['json_hops'], true); |
236 foreach($arr as $item) { //foreach element in $arr |
127 foreach($arr as $item) { //foreach element in $arr |
237 |
128 xmlwriter_start_element($xw, 'HOP'); |
238 xmlwriter_start_element($xw, 'HOP'); |
129 field($xw, 'VERSION', '1'); |
239 |
130 field($xw, 'NAME', $item['h_name']); |
240 xmlwriter_start_element($xw, 'VERSION'); |
131 field($xw, 'ALPHA', sprintf("%.1f",floatval($item['h_alpha']))); |
241 xmlwriter_text($xw, '1'); |
132 field($xw, 'AMOUNT', sprintf("%.4f",floatval($item['h_amount']))); |
242 xmlwriter_end_element($xw); |
133 field($xw, 'USE', $hopuse[$item['h_useat']]); |
243 |
134 field($xw, 'TIME', $item['h_time']); |
244 xmlwriter_start_element($xw, 'NAME'); |
135 field($xw, 'TYPE', $hoptype[$item['h_type']]); |
245 xmlwriter_text($xw, $item['h_name']); |
136 field($xw, 'FORM', $hopform[$item['h_form']]); |
246 xmlwriter_end_element($xw); |
137 field($xw, 'BETA', sprintf("%.1f",floatval($item['h_beta']))); |
247 |
138 field($xw, 'HSI', sprintf("%.1f",floatval($item['h_hsi']))); |
248 xmlwriter_start_element($xw, 'ALPHA'); |
139 field($xw, 'ORIGIN', $item['h_origin']); |
249 xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_alpha']))); |
140 xmlwriter_end_element($xw); // HOP |
250 xmlwriter_end_element($xw); |
141 } |
251 |
142 xmlwriter_end_element($xw); // HOPS |
252 xmlwriter_start_element($xw, 'AMOUNT'); |
|
253 xmlwriter_text($xw, sprintf("%.4f",floatval($item['h_amount']))); |
|
254 xmlwriter_end_element($xw); |
|
255 |
|
256 xmlwriter_start_element($xw, 'USE'); |
|
257 xmlwriter_text($xw, $hopuse[$item['h_useat']]); |
|
258 xmlwriter_end_element($xw); |
|
259 |
|
260 xmlwriter_start_element($xw, 'TIME'); |
|
261 xmlwriter_text($xw, $item['h_time']); |
|
262 xmlwriter_end_element($xw); |
|
263 |
|
264 xmlwriter_start_element($xw, 'TYPE'); |
|
265 xmlwriter_text($xw, $hoptype[$item['h_type']]); |
|
266 xmlwriter_end_element($xw); |
|
267 |
|
268 xmlwriter_start_element($xw, 'FORM'); |
|
269 xmlwriter_text($xw, $hopform[$item['h_form']]); |
|
270 xmlwriter_end_element($xw); |
|
271 |
|
272 xmlwriter_start_element($xw, 'BETA'); |
|
273 xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_beta']))); |
|
274 xmlwriter_end_element($xw); |
|
275 |
|
276 xmlwriter_start_element($xw, 'HSI'); |
|
277 xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_hsi']))); |
|
278 xmlwriter_end_element($xw); |
|
279 |
|
280 xmlwriter_start_element($xw, 'ORIGIN'); |
|
281 xmlwriter_text($xw, $item['h_origin']); |
|
282 xmlwriter_end_element($xw); |
|
283 |
|
284 xmlwriter_end_element($xw); // HOP |
|
285 } |
|
286 xmlwriter_end_element($xw); // HOPS |
|
287 |
|
288 |
143 |
289 xmlwriter_start_element($xw, 'FERMENTABLES'); |
144 xmlwriter_start_element($xw, 'FERMENTABLES'); |
290 $arr = json_decode($row['json_fermentables'], true); |
145 $arr = json_decode($row['json_fermentables'], true); |
291 foreach($arr as $item) { //foreach element in $arr |
146 foreach($arr as $item) { //foreach element in $arr |
292 if ($item['f_added'] <= 3) { |
147 if ($item['f_added'] <= 3) { |
293 xmlwriter_start_element($xw, 'FERMENTABLE'); |
148 xmlwriter_start_element($xw, 'FERMENTABLE'); |
294 |
149 field($xw, 'VERSION', '1'); |
295 xmlwriter_start_element($xw, 'VERSION'); |
150 field($xw, 'NAME', $item['f_name']); |
296 xmlwriter_text($xw, '1'); |
151 field($xw, 'TYPE', $fermentabletype[$item['f_type']]); |
297 xmlwriter_end_element($xw); |
152 field($xw, 'AMOUNT', sprintf("%.4f",floatval($item['f_amount']))); |
298 |
153 field($xw, 'YIELD', sprintf("%.1f",floatval($item['f_yield']))); |
299 xmlwriter_start_element($xw, 'NAME'); |
154 field($xw, 'COLOR', sprintf("%.1f",ebc_to_srm(floatval($item['f_color'])))); |
300 xmlwriter_text($xw, $item['f_name']); |
155 field($xw, 'ADD_AFTER_BOIL', ($item['f_added'] > 1) ? 'TRUE':'FALSE'); |
301 xmlwriter_end_element($xw); |
156 field($xw, 'ORIGIN', $item['f_origin']); |
302 |
157 field($xw, 'SUPPLIER', $item['f_supplier']); |
303 xmlwriter_start_element($xw, 'TYPE'); |
158 if (floatval($item['f_coarse_fine_diff'])) |
304 xmlwriter_text($xw, $fermentabletype[$item['f_type']]); |
159 field($xw, 'COARSE_FINE_DIFF', sprintf("%.4f",floatval($item['f_coarse_fine_diff']))); |
305 xmlwriter_end_element($xw); |
160 if (floatval($item['f_moisture'])) |
306 |
161 field($xw, 'MOISTURE', sprintf("%.4f",floatval($item['f_moisture']))); |
307 xmlwriter_start_element($xw, 'AMOUNT'); |
162 if (floatval($item['f_diastatic_power'])) |
308 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_amount']))); |
163 field($xw, 'DIASTATIC_POWER', sprintf("%.4f",floatval($item['f_diastatic_power']))); |
309 xmlwriter_end_element($xw); |
164 if (floatval($item['f_protein'])) |
310 |
165 field($xw, 'PROTEIN', sprintf("%.4f",floatval($item['f_protein']))); |
311 xmlwriter_start_element($xw, 'YIELD'); |
166 if (floatval($item['f_max_in_batch'])) |
312 xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_yield']))); |
167 field($xw, 'MAX_IN_BATCH', sprintf("%.1f",floatval($item['f_max_in_batch']))); |
313 xmlwriter_end_element($xw); |
168 field($xw, 'RECOMMEND_MASH', ($item['f_recommend_mash']) ? 'TRUE':'FALSE'); |
314 |
169 field($xw, 'GRAINTYPE', $graintype[$item['f_graintype']]); |
315 xmlwriter_start_element($xw, 'COLOR'); |
170 xmlwriter_end_element($xw); // FERMENTABLE |
316 xmlwriter_text($xw, sprintf("%.1f",ebc_to_srm(floatval($item['f_color'])))); |
|
317 xmlwriter_end_element($xw); |
|
318 |
|
319 xmlwriter_start_element($xw, 'ADD_AFTER_BOIL'); |
|
320 ($item['f_added'] > 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
|
321 xmlwriter_end_element($xw); |
|
322 |
|
323 xmlwriter_start_element($xw, 'ORIGIN'); |
|
324 xmlwriter_text($xw, $item['f_origin']); |
|
325 xmlwriter_end_element($xw); |
|
326 |
|
327 xmlwriter_start_element($xw, 'SUPPLIER'); |
|
328 xmlwriter_text($xw, $item['f_supplier']); |
|
329 xmlwriter_end_element($xw); |
|
330 |
|
331 if (floatval($item['f_coarse_fine_diff'])) { |
|
332 xmlwriter_start_element($xw, 'COARSE_FINE_DIFF'); |
|
333 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_coarse_fine_diff']))); |
|
334 xmlwriter_end_element($xw); |
|
335 } |
|
336 |
|
337 if (floatval($item['f_moisture'])) { |
|
338 xmlwriter_start_element($xw, 'MOISTURE'); |
|
339 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_moisture']))); |
|
340 xmlwriter_end_element($xw); |
|
341 } |
|
342 |
|
343 if (floatval($item['f_diastatic_power'])) { |
|
344 xmlwriter_start_element($xw, 'DIASTATIC_POWER'); |
|
345 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_diastatic_power']))); |
|
346 xmlwriter_end_element($xw); |
|
347 } |
|
348 |
|
349 if (floatval($item['f_protein'])) { |
|
350 xmlwriter_start_element($xw, 'PROTEIN'); |
|
351 xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_protein']))); |
|
352 xmlwriter_end_element($xw); |
|
353 } |
|
354 |
|
355 if (floatval($item['f_max_in_batch'])) { |
|
356 xmlwriter_start_element($xw, 'MAX_IN_BATCH'); |
|
357 xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_max_in_batch']))); |
|
358 xmlwriter_end_element($xw); |
|
359 } |
|
360 |
|
361 xmlwriter_start_element($xw, 'RECOMMEND_MASH'); |
|
362 ($item['f_recommend_mash']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
|
363 xmlwriter_end_element($xw); |
|
364 |
|
365 xmlwriter_start_element($xw, 'GRAINTYPE'); |
|
366 xmlwriter_text($xw, $graintype[$item['f_graintype']]); |
|
367 xmlwriter_end_element($xw); |
|
368 |
|
369 xmlwriter_end_element($xw); // FERMENTABLE |
|
370 } |
171 } |
371 } |
172 } |
372 xmlwriter_end_element($xw); // FERMENTABLES |
173 xmlwriter_end_element($xw); // FERMENTABLES |
373 |
|
374 |
174 |
375 xmlwriter_start_element($xw, 'MISCS'); |
175 xmlwriter_start_element($xw, 'MISCS'); |
376 $arr = json_decode($row['json_miscs'], true); |
176 $arr = json_decode($row['json_miscs'], true); |
377 foreach($arr as $item) { |
177 foreach($arr as $item) { |
378 |
178 xmlwriter_start_element($xw, 'MISC'); |
379 xmlwriter_start_element($xw, 'MISC'); |
179 field($xw, 'VERSION', '1'); |
380 |
180 field($xw, 'NAME', $item['m_name']); |
381 xmlwriter_start_element($xw, 'VERSION'); |
181 field($xw, 'TYPE', $misctype[$item['m_type']]); |
382 xmlwriter_text($xw, '1'); |
182 field($xw, 'AMOUNT', sprintf("%.5f",floatval($item['m_amount']))); |
383 xmlwriter_end_element($xw); |
183 field($xw, 'AMOUNT_IS_WEIGHT', ($item['m_amount_is_weight']) ? 'TRUE':'FALSE'); |
384 |
184 field($xw, 'USE', $miscuse[$item['m_use_use']]); |
385 xmlwriter_start_element($xw, 'NAME'); |
185 field($xw, 'TIME', sprintf("%.0f",floatval($item['m_time']))); |
386 xmlwriter_text($xw, $item['m_name']); |
186 xmlwriter_end_element($xw); // MISC |
387 xmlwriter_end_element($xw); |
187 } |
388 |
188 xmlwriter_end_element($xw); // MISCS |
389 xmlwriter_start_element($xw, 'TYPE'); |
|
390 xmlwriter_text($xw, $misctype[$item['m_type']]); |
|
391 xmlwriter_end_element($xw); |
|
392 |
|
393 xmlwriter_start_element($xw, 'AMOUNT'); |
|
394 xmlwriter_text($xw, sprintf("%.5f",floatval($item['m_amount']))); |
|
395 xmlwriter_end_element($xw); |
|
396 |
|
397 xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); |
|
398 ($item['m_amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
|
399 xmlwriter_end_element($xw); |
|
400 |
|
401 xmlwriter_start_element($xw, 'USE'); |
|
402 xmlwriter_text($xw, $miscuse[$item['m_use_use']]); |
|
403 xmlwriter_end_element($xw); |
|
404 |
|
405 xmlwriter_start_element($xw, 'TIME'); |
|
406 xmlwriter_text($xw, sprintf("%.0f",floatval($item['m_time']))); |
|
407 xmlwriter_end_element($xw); |
|
408 |
|
409 xmlwriter_end_element($xw); // MISC |
|
410 } |
|
411 xmlwriter_end_element($xw); // MISCS |
|
412 |
|
413 |
189 |
414 xmlwriter_start_element($xw, 'YEASTS'); |
190 xmlwriter_start_element($xw, 'YEASTS'); |
415 $arr = json_decode($row['json_yeasts'], true); |
191 $arr = json_decode($row['json_yeasts'], true); |
416 foreach($arr as $item) { //foreach element in $arr |
192 foreach($arr as $item) { //foreach element in $arr |
417 |
193 xmlwriter_start_element($xw, 'YEAST'); |
418 xmlwriter_start_element($xw, 'YEAST'); |
194 field($xw, 'VERSION', '1'); |
419 |
195 field($xw, 'NAME', $item['y_name']); |
420 xmlwriter_start_element($xw, 'VERSION'); |
196 field($xw, 'TYPE', $yeasttype[$item['y_type']]); |
421 xmlwriter_text($xw, '1'); |
197 field($xw, 'FORM', $yeastform[$item['y_form']]); |
422 xmlwriter_end_element($xw); |
198 field($xw, 'AMOUNT', sprintf("%.5f",floatval($item['y_amount']))); |
423 |
199 field($xw, 'AMOUNT_IS_WEIGHT', ($item['y_form'] == 1) ? 'TRUE':'FALSE'); |
424 xmlwriter_start_element($xw, 'NAME'); |
200 field($xw, 'LABORATORY', $item['y_laboratory']); |
425 xmlwriter_text($xw, $item['y_name']); |
201 field($xw, 'PRODUCT_ID', $item['y_product_id']); |
426 xmlwriter_end_element($xw); |
202 field($xw, 'MIN_TEMPERATURE', sprintf("%.1f",floatval($item['y_min_temperature']))); |
427 |
203 field($xw, 'MAX_TEMPERATURE', sprintf("%.1f",floatval($item['y_max_temperature']))); |
428 xmlwriter_start_element($xw, 'TYPE'); |
204 field($xw, 'ATTENUATION', sprintf("%.1f",floatval($item['y_attenuation']))); |
429 xmlwriter_text($xw, $yeasttype[$item['y_type']]); |
205 field($xw, 'ADD_TO_SECONDARY', ($item['y_use'] == 0) ? 'FALSE':'TRUE'); |
430 xmlwriter_end_element($xw); |
206 xmlwriter_end_element($xw); // YEAST |
431 |
207 } |
432 xmlwriter_start_element($xw, 'FORM'); |
208 xmlwriter_end_element($xw); // YEASTS |
433 xmlwriter_text($xw, $yeastform[$item['y_form']]); |
|
434 xmlwriter_end_element($xw); |
|
435 |
|
436 xmlwriter_start_element($xw, 'AMOUNT'); |
|
437 xmlwriter_text($xw, sprintf("%.5f",floatval($item['y_amount']))); |
|
438 xmlwriter_end_element($xw); |
|
439 |
|
440 xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT'); |
|
441 ($item['y_form'] == 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
|
442 xmlwriter_end_element($xw); |
|
443 |
|
444 xmlwriter_start_element($xw, 'LABORATORY'); |
|
445 xmlwriter_text($xw, $item['y_laboratory']); |
|
446 xmlwriter_end_element($xw); |
|
447 |
|
448 xmlwriter_start_element($xw, 'PRODUCT_ID'); |
|
449 xmlwriter_text($xw, $item['y_product_id']); |
|
450 xmlwriter_end_element($xw); |
|
451 |
|
452 xmlwriter_start_element($xw, 'MIN_TEMPERATURE'); |
|
453 xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_min_temperature']))); |
|
454 xmlwriter_end_element($xw); |
|
455 |
|
456 xmlwriter_start_element($xw, 'MAX_TEMPERATURE'); |
|
457 xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_max_temperature']))); |
|
458 xmlwriter_end_element($xw); |
|
459 |
|
460 xmlwriter_start_element($xw, 'ATTENUATION'); |
|
461 xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_attenuation']))); |
|
462 xmlwriter_end_element($xw); |
|
463 |
|
464 xmlwriter_start_element($xw, 'ADD_TO_SECONDARY'); |
|
465 ($item['y_use'] == 0) ? xmlwriter_text($xw, 'FALSE') : xmlwriter_text($xw, 'TRUE'); |
|
466 xmlwriter_end_element($xw); |
|
467 |
|
468 xmlwriter_end_element($xw); // YEAST |
|
469 } |
|
470 xmlwriter_end_element($xw); // YEASTS |
|
471 |
|
472 |
209 |
473 xmlwriter_start_element($xw, 'WATERS'); |
210 xmlwriter_start_element($xw, 'WATERS'); |
474 xmlwriter_start_element($xw, 'WATER'); // Source 1 |
211 xmlwriter_start_element($xw, 'WATER'); // Source 1 |
475 |
212 field($xw, 'VERSION', '1'); |
476 xmlwriter_start_element($xw, 'VERSION'); |
213 field($xw, 'NAME', $row['w1_name']); |
477 xmlwriter_text($xw, '1'); |
214 field($xw, 'AMOUNT', sprintf("%.2f",floatval($row['w1_amount']))); |
478 xmlwriter_end_element($xw); |
215 field($xw, 'CALCIUM', sprintf("%.2f",floatval($row['w1_calcium']))); |
479 |
216 field($xw, 'MAGNESIUM', sprintf("%.2f",floatval($row['w1_magnesium']))); |
480 xmlwriter_start_element($xw, 'NAME'); |
217 field($xw, 'BICARBONATE', sprintf("%.2f",floatval($row['w1_total_alkalinity']) * 1.22)); |
481 xmlwriter_text($xw, $row['w1_name']); |
218 field($xw, 'SULFATE', sprintf("%.2f",floatval($row['w1_sulfate']))); |
482 xmlwriter_end_element($xw); |
219 field($xw, 'CHLORIDE', sprintf("%.2f",floatval($row['w1_chloride']))); |
483 |
220 field($xw, 'SODIUM', sprintf("%.2f",floatval($row['w1_sodium']))); |
484 xmlwriter_start_element($xw, 'AMOUNT'); |
221 field($xw, 'PH', sprintf("%.1f",floatval($row['w1_ph']))); |
485 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_amount']))); |
222 field($xw, 'TOTAL_ALKALINITY', sprintf("%.2f",floatval($row['w1_total_alkalinity']))); |
486 xmlwriter_end_element($xw); |
223 xmlwriter_end_element($xw); // WATER |
487 |
|
488 xmlwriter_start_element($xw, 'CALCIUM'); |
|
489 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_calcium']))); |
|
490 xmlwriter_end_element($xw); |
|
491 |
|
492 xmlwriter_start_element($xw, 'MAGNESIUM'); |
|
493 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_magnesium']))); |
|
494 xmlwriter_end_element($xw); |
|
495 |
|
496 xmlwriter_start_element($xw, 'BICARBONATE'); |
|
497 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_total_alkalinity']) * 1.22)); |
|
498 xmlwriter_end_element($xw); |
|
499 |
|
500 xmlwriter_start_element($xw, 'SULFATE'); |
|
501 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_sulfate']))); |
|
502 xmlwriter_end_element($xw); |
|
503 |
|
504 xmlwriter_start_element($xw, 'CHLORIDE'); |
|
505 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_chloride']))); |
|
506 xmlwriter_end_element($xw); |
|
507 |
|
508 xmlwriter_start_element($xw, 'SODIUM'); |
|
509 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_sodium']))); |
|
510 xmlwriter_end_element($xw); |
|
511 |
|
512 xmlwriter_start_element($xw, 'PH'); |
|
513 xmlwriter_text($xw, sprintf("%.1f",floatval($row['w1_ph']))); |
|
514 xmlwriter_end_element($xw); |
|
515 |
|
516 xmlwriter_start_element($xw, 'TOTAL_ALKALINITY'); |
|
517 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_total_alkalinity']))); |
|
518 xmlwriter_end_element($xw); |
|
519 |
|
520 xmlwriter_end_element($xw); // WATER |
|
521 |
|
522 if (strlen($row['w2_name'])) { |
224 if (strlen($row['w2_name'])) { |
523 xmlwriter_start_element($xw, 'WATER'); // Source 2 |
225 xmlwriter_start_element($xw, 'WATER'); // Source 2 |
524 |
226 field($xw, 'VERSION', '1'); |
525 xmlwriter_start_element($xw, 'VERSION'); |
227 field($xw, 'NAME', $row['w2_name']); |
526 xmlwriter_text($xw, '1'); |
228 field($xw, 'AMOUNT', sprintf("%.2f",floatval($row['w2_amount']))); |
527 xmlwriter_end_element($xw); |
229 field($xw, 'CALCIUM', sprintf("%.2f",floatval($row['w2_calcium']))); |
528 |
230 field($xw, 'MAGNESIUM', sprintf("%.2f",floatval($row['w2_magnesium']))); |
529 xmlwriter_start_element($xw, 'NAME'); |
231 field($xw, 'BICARBONATE', sprintf("%.2f",floatval($row['w2_total_alkalinity']) * 1.22)); |
530 xmlwriter_text($xw, $row['w2_name']); |
232 field($xw, 'SULFATE', sprintf("%.2f",floatval($row['w2_sulfate']))); |
531 xmlwriter_end_element($xw); |
233 field($xw, 'CHLORIDE', sprintf("%.2f",floatval($row['w2_chloride']))); |
532 |
234 field($xw, 'SODIUM', sprintf("%.2f",floatval($row['w2_sodium']))); |
533 xmlwriter_start_element($xw, 'AMOUNT'); |
235 field($xw, 'PH', sprintf("%.1f",floatval($row['w2_ph']))); |
534 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_amount']))); |
236 field($xw, 'TOTAL_ALKALINITY', sprintf("%.2f",floatval($row['w2_total_alkalinity']))); |
535 xmlwriter_end_element($xw); |
237 xmlwriter_end_element($xw); // WATER |
536 |
238 } |
537 xmlwriter_start_element($xw, 'CALCIUM'); |
239 xmlwriter_end_element($xw); // WATERS |
538 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_calcium']))); |
|
539 xmlwriter_end_element($xw); |
|
540 |
|
541 xmlwriter_start_element($xw, 'MAGNESIUM'); |
|
542 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_magnesium']))); |
|
543 xmlwriter_end_element($xw); |
|
544 |
|
545 xmlwriter_start_element($xw, 'BICARBONATE'); |
|
546 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_total_alkalinity']) * 1.22)); |
|
547 xmlwriter_end_element($xw); |
|
548 |
|
549 xmlwriter_start_element($xw, 'SULFATE'); |
|
550 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_sulfate']))); |
|
551 xmlwriter_end_element($xw); |
|
552 |
|
553 xmlwriter_start_element($xw, 'CHLORIDE'); |
|
554 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_chloride']))); |
|
555 xmlwriter_end_element($xw); |
|
556 |
|
557 xmlwriter_start_element($xw, 'SODIUM'); |
|
558 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_sodium']))); |
|
559 xmlwriter_end_element($xw); |
|
560 |
|
561 xmlwriter_start_element($xw, 'PH'); |
|
562 xmlwriter_text($xw, sprintf("%.1f",floatval($row['w2_ph']))); |
|
563 xmlwriter_end_element($xw); |
|
564 |
|
565 xmlwriter_start_element($xw, 'TOTAL_ALKALINITY'); |
|
566 xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_total_alkalinity']))); |
|
567 xmlwriter_end_element($xw); |
|
568 |
|
569 xmlwriter_end_element($xw); // WATER |
|
570 } |
|
571 xmlwriter_end_element($xw); // WATERS |
|
572 |
|
573 |
240 |
574 xmlwriter_start_element($xw, 'MASH'); |
241 xmlwriter_start_element($xw, 'MASH'); |
575 |
242 field($xw, 'VERSION', '1'); |
576 xmlwriter_start_element($xw, 'VERSION'); |
243 field($xw, 'NAME', $row['mash_name']); |
577 xmlwriter_text($xw, '1'); |
244 field($xw, 'GRAIN_TEMP', '10.0'); |
578 xmlwriter_end_element($xw); |
245 field($xw, 'PH', sprintf("%.1f",floatval($row['sparge_ph']))); |
579 |
246 field($xw, 'SPARGE_TEMP', sprintf("%.1f",floatval($row['sparge_temp']))); |
580 xmlwriter_start_element($xw, 'NAME'); |
|
581 xmlwriter_text($xw, $row['mash_name']); |
|
582 xmlwriter_end_element($xw); |
|
583 |
|
584 xmlwriter_start_element($xw, 'GRAIN_TEMP'); |
|
585 xmlwriter_text($xw, '10.0'); |
|
586 xmlwriter_end_element($xw); |
|
587 |
|
588 xmlwriter_start_element($xw, 'PH'); |
|
589 xmlwriter_text($xw, sprintf("%.1f",floatval($row['sparge_ph']))); |
|
590 xmlwriter_end_element($xw); |
|
591 |
|
592 xmlwriter_start_element($xw, 'SPARGE_TEMP'); |
|
593 xmlwriter_text($xw, sprintf("%.1f",floatval($row['sparge_temp']))); |
|
594 xmlwriter_end_element($xw); |
|
595 |
|
596 xmlwriter_start_element($xw, 'MASH_STEPS'); |
247 xmlwriter_start_element($xw, 'MASH_STEPS'); |
597 $arr = json_decode($row['json_mashs'], true); |
248 $arr = json_decode($row['json_mashs'], true); |
598 foreach($arr as $item) { //foreach element in $arr |
249 foreach($arr as $item) { //foreach element in $arr |
599 xmlwriter_start_element($xw, 'MASH_STEP'); |
250 xmlwriter_start_element($xw, 'MASH_STEP'); |
600 |
251 field($xw, 'VERSION', '1'); |
601 xmlwriter_start_element($xw, 'VERSION'); |
252 field($xw, 'NAME', $item['step_name']); |
602 xmlwriter_text($xw, '1'); |
253 field($xw, 'TYPE', $mashsteptype[$item['step_type']]); |
603 xmlwriter_end_element($xw); |
254 if ($item['step_type'] == 0) { |
604 |
255 field($xw, 'INFUSE_AMOUNT', sprintf("%.3f",floatval($item['step_infuse_amount']))); |
605 xmlwriter_start_element($xw, 'NAME'); |
256 field($xw, 'INFUSE_TEMP', sprintf("%.3f",floatval($item['step_infuse_temp']))); |
606 xmlwriter_text($xw, $item['step_name']); |
257 } |
607 xmlwriter_end_element($xw); |
258 if ($item['step_type'] == 2) { |
608 |
259 field($xw, 'DECOCTION_AMT', sprintf("%.3f",floatval($item['step_infuse_amount']))); |
609 xmlwriter_start_element($xw, 'TYPE'); |
260 } |
610 xmlwriter_text($xw, $mashsteptype[$item['step_type']]); |
261 field($xw, 'STEP_TEMP', sprintf("%.1f",floatval($item['step_temp']))); |
611 xmlwriter_end_element($xw); |
262 field($xw, 'STEP_TIME', sprintf("%.1f",floatval($item['step_time']))); |
612 |
263 field($xw, 'RAMP_TIME', sprintf("%.1f",floatval($item['ramp_time']))); |
613 if ($item['step_type'] == 0) { |
264 field($xw, 'END_TEMP', sprintf("%.1f",floatval($item['end_temp']))); |
614 xmlwriter_start_element($xw, 'INFUSE_AMOUNT'); |
265 field($xw, 'PH', sprintf("%.1f",floatval($row['mash_ph']))); |
615 xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_infuse_amount']))); |
266 xmlwriter_end_element($xw); // MASH_STEP |
616 xmlwriter_end_element($xw); |
267 } |
617 } |
268 xmlwriter_end_element($xw); // MASH_STEPS |
618 |
269 xmlwriter_end_element($xw); // MASH |
619 xmlwriter_start_element($xw, 'STEP_TEMP'); |
270 xmlwriter_end_element($xw); // RECIPE |
620 xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_temp']))); |
|
621 xmlwriter_end_element($xw); |
|
622 |
|
623 xmlwriter_start_element($xw, 'STEP_TIME'); |
|
624 xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_time']))); |
|
625 xmlwriter_end_element($xw); |
|
626 |
|
627 xmlwriter_start_element($xw, 'RAMP_TIME'); |
|
628 xmlwriter_text($xw, sprintf("%.1f",floatval($item['ramp_time']))); |
|
629 xmlwriter_end_element($xw); |
|
630 |
|
631 xmlwriter_start_element($xw, 'END_TEMP'); |
|
632 xmlwriter_text($xw, sprintf("%.1f",floatval($item['end_temp']))); |
|
633 xmlwriter_end_element($xw); |
|
634 |
|
635 xmlwriter_start_element($xw, 'PH'); |
|
636 xmlwriter_text($xw, sprintf("%.1f",floatval($row['mash_ph']))); |
|
637 xmlwriter_end_element($xw); |
|
638 |
|
639 xmlwriter_end_element($xw); // MASH_STEP |
|
640 } |
|
641 xmlwriter_end_element($xw); // MASH_STEPS |
|
642 xmlwriter_end_element($xw); // MASH |
|
643 |
|
644 xmlwriter_end_element($xw); // RECIPE |
|
645 xmlwriter_end_element($xw); // RECIPES |
271 xmlwriter_end_element($xw); // RECIPES |
646 xmlwriter_end_document($xw); |
272 xmlwriter_end_document($xw); |
647 |
273 |
648 $beerxml = xmlwriter_output_memory($xw); |
274 $beerxml = xmlwriter_output_memory($xw); |
649 |
275 |