www/prod_beerxml.php

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

mercurial