www/rec_beerxml.php

changeset 667
1246550451ca
parent 605
538627a5555c
equal deleted inserted replaced
666:029e65ca3678 667:1246550451ca
36 $mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' ); 36 $mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' );
37 $colormethod = array( 'Morey', 'Mosher', 'Daniels', 'Halberstadt', 'Naudts' ); 37 $colormethod = array( 'Morey', 'Mosher', 'Daniels', 'Halberstadt', 'Naudts' );
38 $ibumethod = array( 'Tinseth', 'Rager', 'Daniels', 'Garetz', 'Mosher', 'Noonan' ); 38 $ibumethod = array( 'Tinseth', 'Rager', 'Daniels', 'Garetz', 'Mosher', 'Noonan' );
39 39
40 40
41 function field($x, $field, $value) {
42 xmlwriter_start_element($x, $field);
43 xmlwriter_text($x, $value);
44 xmlwriter_end_element($x);
45 }
46
47
41 /* 48 /*
42 * Create beerxml output 49 * Create beerxml output
43 */ 50 */
44 $xw = xmlwriter_open_memory(); 51 $xw = xmlwriter_open_memory();
45 xmlwriter_set_indent($xw, 1); 52 xmlwriter_set_indent($xw, 1);
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

mercurial