www/prod_beerxml.php

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

mercurial