www/rec_beerxml.php

changeset 667
1246550451ca
parent 605
538627a5555c
--- a/www/rec_beerxml.php	Fri May 01 21:37:23 2020 +0200
+++ b/www/rec_beerxml.php	Wed May 06 14:14:14 2020 +0200
@@ -38,6 +38,13 @@
 $ibumethod = array( 'Tinseth', 'Rager', 'Daniels', 'Garetz', 'Mosher', 'Noonan' );
 
 
+function field($x, $field, $value) {
+	xmlwriter_start_element($x, $field);
+	xmlwriter_text($x, $value);
+	xmlwriter_end_element($x);
+}
+
+
 /*
  * Create beerxml output
  */
@@ -51,597 +58,216 @@
 xmlwriter_start_element($xw, 'RECIPE');
 
 // Recipe basics
-xmlwriter_start_element($xw, 'VERSION');
-xmlwriter_text($xw, '1');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'NAME');
-xmlwriter_text($xw, $row['name']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'NOTES');
-xmlwriter_text($xw, $row['notes']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'TYPE');
-xmlwriter_text($xw, $recipetype[$row['type']]);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BREWER');
-xmlwriter_text($xw, 'Anonymous');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BATCH_SIZE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['batch_size'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BOIL_SIZE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['boil_size'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BOIL_TIME');
-xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'EFFICIENCY');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['efficiency'])));
-xmlwriter_end_element($xw);
+field($xw, 'VERSION', '1');
+field($xw, 'NAME', $row['name']);
+field($xw, 'NOTES', $row['notes']);
+field($xw, 'TYPE', $recipetype[$row['type']]);
+field($xw, 'BREWER', 'Anonymous');
+field($xw, 'BATCH_SIZE', sprintf("%.4f",floatval($row['batch_size'])));
+field($xw, 'BOIL_SIZE', sprintf("%.4f",floatval($row['boil_size'])));
+field($xw, 'BOIL_TIME', sprintf("%.3f",floatval($row['boil_time'])));
+field($xw, 'EFFICIENCY', sprintf("%.4f",floatval($row['efficiency'])));
 
 if (floatval($row['est_og']) > 0) {
-	xmlwriter_start_element($xw, 'EST_OG');
-	xmlwriter_text($xw, sprintf("%.3f",floatval($row['est_og'])));
-	xmlwriter_end_element($xw);
+        field($xw, 'EST_OG', sprintf("%.3f",floatval($row['est_og'])));
 }
 
 if (floatval($row['est_fg']) > 0) {
-        xmlwriter_start_element($xw, 'EST_FG');
-        xmlwriter_text($xw, sprintf("%.3f",floatval($row['est_fg'])));
-        xmlwriter_end_element($xw);
+        field($xw, 'EST_FG', sprintf("%.3f",floatval($row['est_fg'])));
 }
 
 if (floatval($row['est_abv']) > 0) {
-        xmlwriter_start_element($xw, 'EST_ABV');
-        xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_abv'])));
-        xmlwriter_end_element($xw);
+        field($xw, 'EST_ABV', sprintf("%.1f",floatval($row['est_abv'])));
 }
 
 if (floatval($row['est_color']) > 0) {
-        xmlwriter_start_element($xw, 'EST_COLOR');
-        xmlwriter_text($xw, sprintf("%.6f", ebc_to_srm(floatval($row['est_color']))));
-        xmlwriter_end_element($xw);
-	xmlwriter_start_element($xw, 'COLOR_METHOD');
-	xmlwriter_text($xw, $colormethod[$row['color_method']]);
-	xmlwriter_end_element($xw);
+        field($xw, 'EST_COLOR', sprintf("%.6f", ebc_to_srm(floatval($row['est_color']))));
+        field($xw, 'COLOR_METHOD', $colormethod[$row['color_method']]);
 }
 
 if (floatval($row['est_ibu']) > 0) {
-        xmlwriter_start_element($xw, 'EST_IBU');
-        xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_ibu'])));
-        xmlwriter_end_element($xw);
-	xmlwriter_start_element($xw, 'IBU_METHOD');
-	xmlwriter_text($xw, $ibumethod[$row['ibu_method']]);
-	xmlwriter_end_element($xw);
+        field($xw, 'EST_IBU', sprintf("%.1f",floatval($row['est_ibu'])));
+        field($xw, 'IBU_METHOD', $ibumethod[$row['ibu_method']]);
 }
 
 
 // Style
 xmlwriter_start_element($xw, 'STYLE');
-
-xmlwriter_start_element($xw, 'VERSION');
-xmlwriter_text($xw, '1');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'NAME');
-xmlwriter_text($xw, $row['st_name']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'CATEGORY');
-xmlwriter_text($xw, $row['st_category']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'CATEGORY_NUMBER');
-xmlwriter_text($xw, $row['st_category_number']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'STYLE_LETTER');
-xmlwriter_text($xw, $row['st_letter']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'STYLE_GUIDE');
-xmlwriter_text($xw, $row['st_guide']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'TYPE');
-xmlwriter_text($xw, $styletype[$row['st_type']]);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'OG_MIN');
-xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_min'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'OG_MAX');
-xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_og_max'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'FG_MIN');
-xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_fg_min'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'FG_MAX');
-xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_fg_max'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'IBU_MIN');
-xmlwriter_text($xw, sprintf("%.0f",floatval($row['st_ibu_min'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'IBU_MAX');
-xmlwriter_text($xw, sprintf("%.0f",floatval($row['st_ibu_max'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'COLOR_MIN');
-xmlwriter_text($xw, sprintf("%.2f",ebc_to_srm(floatval($row['st_color_min']))));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'COLOR_MAX');
-xmlwriter_text($xw, sprintf("%.2f",ebc_to_srm(floatval($row['st_color_max']))));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'CARB_MIN');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_carb_min'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'CARB_MAX');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_carb_max'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'ABV_MIN');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_min'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'ABV_MAX');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['st_abv_max'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_end_element($xw);	// STYLE
-
+field($xw, 'VERSION', '1');
+field($xw, 'NAME', $row['st_name']);
+field($xw, 'CATEGORY', $row['st_category']);
+field($xw, 'CATEGORY_NUMBER', $row['st_category_number']);
+field($xw, 'STYLE_LETTER', $row['st_letter']);
+field($xw, 'STYLE_GUIDE', $row['st_guide']);
+field($xw, 'TYPE', $styletype[$row['st_type']]);
+field($xw, 'OG_MIN', sprintf("%.3f",floatval($row['st_og_min'])));
+field($xw, 'OG_MAX', sprintf("%.3f",floatval($row['st_og_max'])));
+field($xw, 'FG_MIN', sprintf("%.3f",floatval($row['st_fg_min'])));
+field($xw, 'FG_MAX', sprintf("%.3f",floatval($row['st_fg_max'])));
+field($xw, 'IBU_MIN', sprintf("%.0f",floatval($row['st_ibu_min'])));
+field($xw, 'IBU_MAX', sprintf("%.0f",floatval($row['st_ibu_max'])));
+field($xw, 'COLOR_MIN', sprintf("%.2f",ebc_to_srm(floatval($row['st_color_min']))));
+field($xw, 'COLOR_MAX', sprintf("%.2f",ebc_to_srm(floatval($row['st_color_max']))));
+field($xw, 'CARB_MIN', sprintf("%.1f",floatval($row['st_carb_min'])));
+field($xw, 'CARB_MAX', sprintf("%.1f",floatval($row['st_carb_max'])));
+field($xw, 'ABV_MIN', sprintf("%.1f",floatval($row['st_abv_min'])));
+field($xw, 'ABV_MAX', sprintf("%.1f",floatval($row['st_abv_max'])));
+xmlwriter_end_element($xw);     // STYLE
 
 xmlwriter_start_element($xw, 'EQUIPMENT');
-
-xmlwriter_start_element($xw, 'VERSION');
-xmlwriter_text($xw, '1');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'NAME');
-xmlwriter_text($xw, 'Dummy brewery');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BATCH_SIZE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['batch_size'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BOIL_SIZE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['boil_size'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BOIL_TIME');
-xmlwriter_text($xw, sprintf("%.0f",floatval($row['boil_time'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_end_element($xw);	// EQUIPMENT
-
+field($xw, 'VERSION', '1');
+field($xw, 'NAME', 'Dummy Brewery');
+field($xw, 'BATCH_SIZE', sprintf("%.2f",floatval($row['batch_size'])));
+field($xw, 'BOIL_SIZE', sprintf("%.2f",floatval($row['boil_size'])));
+field($xw, 'BOIL_TIME', sprintf("%.0f",floatval($row['boil_time'])));
+xmlwriter_end_element($xw);     // EQUIPMENT
 
 xmlwriter_start_element($xw, 'HOPS');
 $arr = json_decode($row['json_hops'], true);
 foreach($arr as $item) { //foreach element in $arr
-
-	xmlwriter_start_element($xw, 'HOP');
-
-	xmlwriter_start_element($xw, 'VERSION');
-	xmlwriter_text($xw, '1');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'NAME');
-	xmlwriter_text($xw, $item['h_name']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'ALPHA');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_alpha'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT');
-	xmlwriter_text($xw, sprintf("%.4f",floatval($item['h_amount'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'USE');
-	xmlwriter_text($xw, $hopuse[$item['h_useat']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TIME');
-	xmlwriter_text($xw, $item['h_time']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TYPE');
-	xmlwriter_text($xw, $hoptype[$item['h_type']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'FORM');
-	xmlwriter_text($xw, $hopform[$item['h_form']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'BETA');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_beta'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'HSI');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_hsi'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'ORIGIN');
-	xmlwriter_text($xw, $item['h_origin']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_end_element($xw);	// HOP
+        xmlwriter_start_element($xw, 'HOP');
+        field($xw, 'VERSION', '1');
+        field($xw, 'NAME', $item['h_name']);
+        field($xw, 'ALPHA', sprintf("%.1f",floatval($item['h_alpha'])));
+        field($xw, 'AMOUNT', sprintf("%.4f",floatval($item['h_amount'])));
+        field($xw, 'USE', $hopuse[$item['h_useat']]);
+        field($xw, 'TIME', $item['h_time']);
+        field($xw, 'TYPE', $hoptype[$item['h_type']]);
+        field($xw, 'FORM', $hopform[$item['h_form']]);
+        field($xw, 'BETA', sprintf("%.1f",floatval($item['h_beta'])));
+        field($xw, 'HSI', sprintf("%.1f",floatval($item['h_hsi'])));
+        field($xw, 'ORIGIN', $item['h_origin']);
+        xmlwriter_end_element($xw);     // HOP
 }
-xmlwriter_end_element($xw);	// HOPS
-
+xmlwriter_end_element($xw);     // HOPS
 
 xmlwriter_start_element($xw, 'FERMENTABLES');
 $arr = json_decode($row['json_fermentables'], true);
 foreach($arr as $item) { //foreach element in $arr
     if ($item['f_added'] <= 3) {
-	xmlwriter_start_element($xw, 'FERMENTABLE');
-
-	xmlwriter_start_element($xw, 'VERSION');
-	xmlwriter_text($xw, '1');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'NAME');
-	xmlwriter_text($xw, $item['f_name']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TYPE');
-	xmlwriter_text($xw, $fermentabletype[$item['f_type']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT');
-	xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_amount'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'YIELD');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_yield'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'COLOR');
-	xmlwriter_text($xw, sprintf("%.1f",ebc_to_srm(floatval($item['f_color']))));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'ADD_AFTER_BOIL');
-	($item['f_added'] > 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'ORIGIN');
-	xmlwriter_text($xw, $item['f_origin']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'SUPPLIER');
-	xmlwriter_text($xw, $item['f_supplier']);
-	xmlwriter_end_element($xw);
-
-	if (floatval($item['f_coarse_fine_diff'])) {
-		xmlwriter_start_element($xw, 'COARSE_FINE_DIFF');
-		xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_coarse_fine_diff'])));
-		xmlwriter_end_element($xw);
-	}
-
-	if (floatval($item['f_moisture'])) {
-		xmlwriter_start_element($xw, 'MOISTURE');
-		xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_moisture'])));
-		xmlwriter_end_element($xw);
-	}
-
-	if (floatval($item['f_diastatic_power'])) {
-		xmlwriter_start_element($xw, 'DIASTATIC_POWER');
-		xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_diastatic_power'])));
-		xmlwriter_end_element($xw);
-	}
-
-	if (floatval($item['f_protein'])) {
-		xmlwriter_start_element($xw, 'PROTEIN');
-		xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_protein'])));
-		xmlwriter_end_element($xw);
-	}
-
-	if (floatval($item['f_max_in_batch'])) {
-		xmlwriter_start_element($xw, 'MAX_IN_BATCH');
-		xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_max_in_batch'])));
-		xmlwriter_end_element($xw);
-	}
-
-	xmlwriter_start_element($xw, 'RECOMMEND_MASH');
-	($item['f_recommend_mash']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'GRAINTYPE');
-	xmlwriter_text($xw, $graintype[$item['f_graintype']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_end_element($xw);	// FERMENTABLE
+        xmlwriter_start_element($xw, 'FERMENTABLE');
+        field($xw, 'VERSION', '1');
+        field($xw, 'NAME', $item['f_name']);
+        field($xw, 'TYPE', $fermentabletype[$item['f_type']]);
+        field($xw, 'AMOUNT', sprintf("%.4f",floatval($item['f_amount'])));
+        field($xw, 'YIELD', sprintf("%.1f",floatval($item['f_yield'])));
+        field($xw, 'COLOR', sprintf("%.1f",ebc_to_srm(floatval($item['f_color']))));
+        field($xw, 'ADD_AFTER_BOIL', ($item['f_added'] > 1) ? 'TRUE':'FALSE');
+        field($xw, 'ORIGIN', $item['f_origin']);
+        field($xw, 'SUPPLIER', $item['f_supplier']);
+        if (floatval($item['f_coarse_fine_diff']))
+                field($xw, 'COARSE_FINE_DIFF', sprintf("%.4f",floatval($item['f_coarse_fine_diff'])));
+        if (floatval($item['f_moisture']))
+                field($xw, 'MOISTURE', sprintf("%.4f",floatval($item['f_moisture'])));
+        if (floatval($item['f_diastatic_power']))
+                field($xw, 'DIASTATIC_POWER', sprintf("%.4f",floatval($item['f_diastatic_power'])));
+        if (floatval($item['f_protein']))
+                field($xw, 'PROTEIN', sprintf("%.4f",floatval($item['f_protein'])));
+        if (floatval($item['f_max_in_batch']))
+                field($xw, 'MAX_IN_BATCH', sprintf("%.1f",floatval($item['f_max_in_batch'])));
+        field($xw, 'RECOMMEND_MASH', ($item['f_recommend_mash']) ? 'TRUE':'FALSE');
+        field($xw, 'GRAINTYPE', $graintype[$item['f_graintype']]);
+        xmlwriter_end_element($xw);     // FERMENTABLE
     }
 }
-xmlwriter_end_element($xw);	// FERMENTABLES
-
+xmlwriter_end_element($xw);     // FERMENTABLES
 
 xmlwriter_start_element($xw, 'MISCS');
 $arr = json_decode($row['json_miscs'], true);
 foreach($arr as $item) {
-
-	xmlwriter_start_element($xw, 'MISC');
-
-	xmlwriter_start_element($xw, 'VERSION');
-	xmlwriter_text($xw, '1');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'NAME');
-	xmlwriter_text($xw, $item['m_name']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TYPE');
-	xmlwriter_text($xw, $misctype[$item['m_type']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT');
-	xmlwriter_text($xw, sprintf("%.5f",floatval($item['m_amount'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT');
-	($item['m_amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'USE');
-	xmlwriter_text($xw, $miscuse[$item['m_use_use']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TIME');
-	xmlwriter_text($xw, sprintf("%.0f",floatval($item['m_time'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_end_element($xw);	// MISC
+        xmlwriter_start_element($xw, 'MISC');
+        field($xw, 'VERSION', '1');
+        field($xw, 'NAME', $item['m_name']);
+        field($xw, 'TYPE', $misctype[$item['m_type']]);
+        field($xw, 'AMOUNT', sprintf("%.5f",floatval($item['m_amount'])));
+        field($xw, 'AMOUNT_IS_WEIGHT', ($item['m_amount_is_weight']) ? 'TRUE':'FALSE');
+        field($xw, 'USE', $miscuse[$item['m_use_use']]);
+        field($xw, 'TIME', sprintf("%.0f",floatval($item['m_time'])));
+        xmlwriter_end_element($xw);     // MISC
 }
-xmlwriter_end_element($xw);	// MISCS
-
+xmlwriter_end_element($xw);     // MISCS
 
 xmlwriter_start_element($xw, 'YEASTS');
 $arr = json_decode($row['json_yeasts'], true);
 foreach($arr as $item) { //foreach element in $arr
-
-	xmlwriter_start_element($xw, 'YEAST');
-
-	xmlwriter_start_element($xw, 'VERSION');
-	xmlwriter_text($xw, '1');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'NAME');
-	xmlwriter_text($xw, $item['y_name']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TYPE');
-	xmlwriter_text($xw, $yeasttype[$item['y_type']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'FORM');
-	xmlwriter_text($xw, $yeastform[$item['y_form']]);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT');
-	xmlwriter_text($xw, sprintf("%.5f",floatval($item['y_amount'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT');
-	($item['y_form'] == 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'LABORATORY');
-	xmlwriter_text($xw, $item['y_laboratory']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'PRODUCT_ID');
-	xmlwriter_text($xw, $item['y_product_id']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'MIN_TEMPERATURE');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_min_temperature'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'MAX_TEMPERATURE');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_max_temperature'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'ATTENUATION');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['y_attenuation'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'ADD_TO_SECONDARY');
-	($item['y_use'] == 0) ? xmlwriter_text($xw, 'FALSE') : xmlwriter_text($xw, 'TRUE');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_end_element($xw);	// YEAST
+        xmlwriter_start_element($xw, 'YEAST');
+        field($xw, 'VERSION', '1');
+        field($xw, 'NAME', $item['y_name']);
+        field($xw, 'TYPE', $yeasttype[$item['y_type']]);
+        field($xw, 'FORM', $yeastform[$item['y_form']]);
+        field($xw, 'AMOUNT', sprintf("%.5f",floatval($item['y_amount'])));
+        field($xw, 'AMOUNT_IS_WEIGHT', ($item['y_form'] == 1) ? 'TRUE':'FALSE');
+        field($xw, 'LABORATORY', $item['y_laboratory']);
+        field($xw, 'PRODUCT_ID', $item['y_product_id']);
+        field($xw, 'MIN_TEMPERATURE', sprintf("%.1f",floatval($item['y_min_temperature'])));
+        field($xw, 'MAX_TEMPERATURE', sprintf("%.1f",floatval($item['y_max_temperature'])));
+        field($xw, 'ATTENUATION', sprintf("%.1f",floatval($item['y_attenuation'])));
+        field($xw, 'ADD_TO_SECONDARY', ($item['y_use'] == 0) ? 'FALSE':'TRUE');
+        xmlwriter_end_element($xw);     // YEAST
 }
-xmlwriter_end_element($xw);	// YEASTS
-
+xmlwriter_end_element($xw);     // YEASTS
 
 xmlwriter_start_element($xw, 'WATERS');
-xmlwriter_start_element($xw, 'WATER');	// Source 1
-
-xmlwriter_start_element($xw, 'VERSION');
-xmlwriter_text($xw, '1');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'NAME');
-xmlwriter_text($xw, $row['w1_name']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'AMOUNT');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_amount'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'CALCIUM');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_calcium'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'MAGNESIUM');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_magnesium'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'BICARBONATE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_total_alkalinity']) * 1.22));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'SULFATE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_sulfate'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'CHLORIDE');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_chloride'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'SODIUM');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_sodium'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'PH');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['w1_ph'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'TOTAL_ALKALINITY');
-xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_total_alkalinity'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_end_element($xw);	// WATER
-
+xmlwriter_start_element($xw, 'WATER');  // Source 1
+field($xw, 'VERSION', '1');
+field($xw, 'NAME', $row['w1_name']);
+field($xw, 'AMOUNT', sprintf("%.2f",floatval($row['w1_amount'])));
+field($xw, 'CALCIUM', sprintf("%.2f",floatval($row['w1_calcium'])));
+field($xw, 'MAGNESIUM', sprintf("%.2f",floatval($row['w1_magnesium'])));
+field($xw, 'BICARBONATE', sprintf("%.2f",floatval($row['w1_total_alkalinity']) * 1.22));
+field($xw, 'SULFATE', sprintf("%.2f",floatval($row['w1_sulfate'])));
+field($xw, 'CHLORIDE', sprintf("%.2f",floatval($row['w1_chloride'])));
+field($xw, 'SODIUM', sprintf("%.2f",floatval($row['w1_sodium'])));
+field($xw, 'PH', sprintf("%.1f",floatval($row['w1_ph'])));
+field($xw, 'TOTAL_ALKALINITY', sprintf("%.2f",floatval($row['w1_total_alkalinity'])));
+xmlwriter_end_element($xw);     // WATER
 if (strlen($row['w2_name'])) {
-	xmlwriter_start_element($xw, 'WATER');	// Source 2
-
-	xmlwriter_start_element($xw, 'VERSION');
-	xmlwriter_text($xw, '1');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'NAME');
-	xmlwriter_text($xw, $row['w2_name']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'AMOUNT');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_amount'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'CALCIUM');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_calcium'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'MAGNESIUM');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_magnesium'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'BICARBONATE');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_total_alkalinity']) * 1.22));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'SULFATE');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_sulfate'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'CHLORIDE');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_chloride'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'SODIUM');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_sodium'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'PH');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($row['w2_ph'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TOTAL_ALKALINITY');
-	xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_total_alkalinity'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_end_element($xw);	// WATER
+        xmlwriter_start_element($xw, 'WATER');  // Source 2
+        field($xw, 'VERSION', '1');
+        field($xw, 'NAME', $row['w2_name']);
+        field($xw, 'AMOUNT', sprintf("%.2f",floatval($row['w2_amount'])));
+        field($xw, 'CALCIUM', sprintf("%.2f",floatval($row['w2_calcium'])));
+        field($xw, 'MAGNESIUM', sprintf("%.2f",floatval($row['w2_magnesium'])));
+        field($xw, 'BICARBONATE', sprintf("%.2f",floatval($row['w2_total_alkalinity']) * 1.22));
+        field($xw, 'SULFATE', sprintf("%.2f",floatval($row['w2_sulfate'])));
+        field($xw, 'CHLORIDE', sprintf("%.2f",floatval($row['w2_chloride'])));
+        field($xw, 'SODIUM', sprintf("%.2f",floatval($row['w2_sodium'])));
+        field($xw, 'PH', sprintf("%.1f",floatval($row['w2_ph'])));
+        field($xw, 'TOTAL_ALKALINITY', sprintf("%.2f",floatval($row['w2_total_alkalinity'])));
+        xmlwriter_end_element($xw);     // WATER
 }
-xmlwriter_end_element($xw);	// WATERS
-
+xmlwriter_end_element($xw);     // WATERS
 
 xmlwriter_start_element($xw, 'MASH');
-
-xmlwriter_start_element($xw, 'VERSION');
-xmlwriter_text($xw, '1');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'NAME');
-xmlwriter_text($xw, $row['mash_name']);
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'GRAIN_TEMP');
-xmlwriter_text($xw, '10.0');
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'PH');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['sparge_ph'])));
-xmlwriter_end_element($xw);
-
-xmlwriter_start_element($xw, 'SPARGE_TEMP');
-xmlwriter_text($xw, sprintf("%.1f",floatval($row['sparge_temp'])));
-xmlwriter_end_element($xw);
-
+field($xw, 'VERSION', '1');
+field($xw, 'NAME', $row['mash_name']);
+field($xw, 'GRAIN_TEMP', '10.0');
+field($xw, 'PH', sprintf("%.1f",floatval($row['sparge_ph'])));
+field($xw, 'SPARGE_TEMP', sprintf("%.1f",floatval($row['sparge_temp'])));
 xmlwriter_start_element($xw, 'MASH_STEPS');
 $arr = json_decode($row['json_mashs'], true);
 foreach($arr as $item) { //foreach element in $arr
-	xmlwriter_start_element($xw, 'MASH_STEP');
-
-	xmlwriter_start_element($xw, 'VERSION');
-	xmlwriter_text($xw, '1');
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'NAME');
-	xmlwriter_text($xw, $item['step_name']);
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'TYPE');
-	xmlwriter_text($xw, $mashsteptype[$item['step_type']]);
-	xmlwriter_end_element($xw);
-
-	if ($item['step_type'] == 0) {
-		xmlwriter_start_element($xw, 'INFUSE_AMOUNT');
-		xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_infuse_amount'])));
-		xmlwriter_end_element($xw);
-	}
-
-	xmlwriter_start_element($xw, 'STEP_TEMP');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_temp'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'STEP_TIME');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['step_time'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'RAMP_TIME');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['ramp_time'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'END_TEMP');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($item['end_temp'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_start_element($xw, 'PH');
-	xmlwriter_text($xw, sprintf("%.1f",floatval($row['mash_ph'])));
-	xmlwriter_end_element($xw);
-
-	xmlwriter_end_element($xw);	// MASH_STEP
+        xmlwriter_start_element($xw, 'MASH_STEP');
+        field($xw, 'VERSION', '1');
+        field($xw, 'NAME', $item['step_name']);
+        field($xw, 'TYPE', $mashsteptype[$item['step_type']]);
+        if ($item['step_type'] == 0) {
+                field($xw, 'INFUSE_AMOUNT', sprintf("%.3f",floatval($item['step_infuse_amount'])));
+                field($xw, 'INFUSE_TEMP', sprintf("%.3f",floatval($item['step_infuse_temp'])));
+        }
+        if ($item['step_type'] == 2) {
+                field($xw, 'DECOCTION_AMT', sprintf("%.3f",floatval($item['step_infuse_amount'])));
+        }
+        field($xw, 'STEP_TEMP', sprintf("%.1f",floatval($item['step_temp'])));
+        field($xw, 'STEP_TIME', sprintf("%.1f",floatval($item['step_time'])));
+        field($xw, 'RAMP_TIME', sprintf("%.1f",floatval($item['ramp_time'])));
+        field($xw, 'END_TEMP', sprintf("%.1f",floatval($item['end_temp'])));
+        field($xw, 'PH', sprintf("%.1f",floatval($row['mash_ph'])));
+        xmlwriter_end_element($xw);     // MASH_STEP
 }
-xmlwriter_end_element($xw);	// MASH_STEPS
-xmlwriter_end_element($xw);	// MASH
-
-xmlwriter_end_element($xw);	// RECIPE
+xmlwriter_end_element($xw);     // MASH_STEPS
+xmlwriter_end_element($xw);     // MASH
+xmlwriter_end_element($xw);     // RECIPE
 xmlwriter_end_element($xw);	// RECIPES
 xmlwriter_end_document($xw);
 

mercurial