Wed, 29 Jan 2020 16:58:04 +0100
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
177 | 1 | <?php |
563
acdd54144838
Added export inventory and profiles in beerxml format. Small fixes in beerxml recipe and product export.
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
2 | //require_once('config.php'); |
acdd54144838
Added export inventory and profiles in beerxml format. Small fixes in beerxml recipe and product export.
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
3 | //require_once('includes/formulas.php'); |
acdd54144838
Added export inventory and profiles in beerxml format. Small fixes in beerxml recipe and product export.
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
4 | require_once($_SERVER['DOCUMENT_ROOT'].'/config.php'); |
acdd54144838
Added export inventory and profiles in beerxml format. Small fixes in beerxml recipe and product export.
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
5 | require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); |
177 | 6 | |
7 | ||
8 | $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); | |
9 | if (! $link) { | |
10 | die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); | |
11 | } | |
12 | if (! mysqli_set_charset($link, "utf8" )) { | |
13 | echo "error"; | |
14 | return 1; | |
15 | } | |
16 | ||
17 | //setlocale ( LC_ALL, 'nl_NL.UTF-8'); | |
18 | if (isset($_GET["record"])) | |
19 | $record = $_GET["record"]; | |
20 | else | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
21 | $record = 78; |
177 | 22 | $result = mysqli_query($link, "SELECT * FROM products WHERE record='".$record."'"); |
23 | $row = mysqli_fetch_array($result); | |
24 | ||
25 | ||
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
26 | $recipetype = array( 'Extract', 'Partial Mash', 'All Grain' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
27 | $styletype = array( 'Lager', 'Ale', 'Mead', 'Wheat', 'Mixed', 'Cider' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
28 | $hoptype = array( 'Bittering', 'Aroma', 'Both' ); |
449
a1d6b9eec988
Added Cryo Hop support to the export scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
429
diff
changeset
|
29 | $hopform = array( 'Pellet', 'Plug', 'Leaf', 'Leaf', 'Leaf' ); |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
30 | $hopuse = array( 'Mash', 'First wort', 'Boil', 'Aroma', 'Whirlpool', 'Dry hop' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
31 | $fermentabletype = array( 'Grain', 'Sugar', 'Extract', 'Dry extract', 'Adjunct' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
32 | $graintype = array( 'Base', 'Roast', 'Crystal', 'Kilned', 'Sour malt', 'Special', 'No malt' ); |
429
0d2cf505957c
Prepared for new yeast types.
Michiel Broek <mbroek@mbse.eu>
parents:
401
diff
changeset
|
33 | $yeasttype = array( 'Lager', 'Ale', 'Wheat', 'Wine', 'Champagne', 'Other', 'Other', 'Other', 'Other', 'Other' ); |
515
9d771385a8a0
Added dried yeast form. Pitch rate for Kveik initially set at 0.25. Dried Kveik cells set to 9000000000 cells/gram.
Michiel Broek <mbroek@mbse.eu>
parents:
449
diff
changeset
|
34 | $yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle', 'Dry' ); |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
35 | $yeastuse = array( 'Primary', 'Secondary', 'Tertiary', 'Bottle' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
36 | $misctype = array( 'Spice', 'Herb', 'Flavor', 'Fining', 'Water agent', 'Yeast nutrient', 'Other' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
37 | $miscuse = array( 'Starter', 'Mash', 'Boil', 'Primary', 'Secondary', 'Bottling' ); |
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
38 | $mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' ); |
603
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
39 | $colormethod = array( 'Morey', 'Mosher', 'Daniels', 'Halberstadt', 'Naudts' ); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
40 | $ibumethod = array( 'Tinseth', 'Rager', 'Daniels', 'Garetz', 'Mosher', 'Noonan' ); |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
41 | |
177 | 42 | |
43 | /* | |
44 | * Create beerxml output | |
45 | */ | |
46 | $xw = xmlwriter_open_memory(); | |
47 | xmlwriter_set_indent($xw, 1); | |
48 | $res = xmlwriter_set_indent_string($xw, ' '); | |
49 | ||
50 | xmlwriter_start_document($xw, '1.0', 'UTF-8'); | |
51 | ||
52 | xmlwriter_start_element($xw, 'RECIPES'); | |
53 | xmlwriter_start_element($xw, 'RECIPE'); | |
54 | ||
55 | // Recipe basics | |
56 | xmlwriter_start_element($xw, 'VERSION'); | |
57 | xmlwriter_text($xw, '1'); | |
58 | xmlwriter_end_element($xw); | |
59 | ||
60 | xmlwriter_start_element($xw, 'NAME'); | |
61 | xmlwriter_text($xw, $row['name']); | |
62 | xmlwriter_end_element($xw); | |
63 | ||
64 | xmlwriter_start_element($xw, 'NOTES'); | |
65 | xmlwriter_text($xw, $row['notes']); | |
66 | xmlwriter_end_element($xw); | |
67 | ||
68 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
69 | xmlwriter_text($xw, $recipetype[$row['type']]); |
177 | 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 | ||
598
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
100 | if (floatval($row['est_og']) > 0) { |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
101 | xmlwriter_start_element($xw, 'EST_OG'); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
102 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['est_og']))); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
103 | xmlwriter_end_element($xw); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
104 | } |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
105 | |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
106 | if (floatval($row['est_fg']) > 0) { |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
107 | xmlwriter_start_element($xw, 'EST_FG'); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
108 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['est_fg']))); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
109 | xmlwriter_end_element($xw); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
110 | } |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
111 | |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
112 | if (floatval($row['est_abv']) > 0) { |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
113 | xmlwriter_start_element($xw, 'EST_ABV'); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
114 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_abv']))); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
115 | xmlwriter_end_element($xw); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
116 | } |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
117 | |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
118 | if (floatval($row['est_color']) > 0) { |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
119 | xmlwriter_start_element($xw, 'EST_COLOR'); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
120 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_color']))); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
121 | xmlwriter_end_element($xw); |
603
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
122 | xmlwriter_start_element($xw, 'COLOR_METHOD'); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
123 | xmlwriter_text($xw, $colormethod[$row['color_method']]); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
124 | xmlwriter_end_element($xw); |
598
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
125 | } |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
126 | |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
127 | if (floatval($row['est_ibu']) > 0) { |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
128 | xmlwriter_start_element($xw, 'EST_IBU'); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
129 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['est_ibu']))); |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
130 | xmlwriter_end_element($xw); |
603
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
131 | xmlwriter_start_element($xw, 'IBU_METHOD'); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
132 | xmlwriter_text($xw, $ibumethod[$row['ibu_method']]); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
133 | xmlwriter_end_element($xw); |
598
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
134 | } |
890a532701e8
Added missing beerxml fields
Michiel Broek <mbroek@mbse.eu>
parents:
563
diff
changeset
|
135 | |
401
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
136 | if ($row['brew_cooling_to'] > 0) { |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
137 | xmlwriter_start_element($xw, 'BMS_COOLING_TO'); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
138 | xmlwriter_text($xw, sprintf("%.1f",floatval($row['brew_cooling_to']))); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
139 | xmlwriter_end_element($xw); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
140 | } |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
141 | |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
142 | if ($row['brew_whirlpool9'] > 0) { |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
143 | xmlwriter_start_element($xw, 'BMS_WHIRLPOOL9'); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
144 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['brew_whirlpool9']))); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
145 | xmlwriter_end_element($xw); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
146 | } |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
147 | if ($row['brew_whirlpool7'] > 0) { |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
148 | xmlwriter_start_element($xw, 'BMS_WHIRLPOOL7'); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
149 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['brew_whirlpool7']))); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
150 | xmlwriter_end_element($xw); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
151 | } |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
152 | if ($row['brew_whirlpool6'] > 0) { |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
153 | xmlwriter_start_element($xw, 'BMS_WHIRLPOOL6'); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
154 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['brew_whirlpool6']))); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
155 | xmlwriter_end_element($xw); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
156 | } |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
157 | if ($row['brew_whirlpool2'] > 0) { |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
158 | xmlwriter_start_element($xw, 'BMS_WHIRLPOOL2'); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
159 | xmlwriter_text($xw, sprintf("%.0f",floatval($row['brew_whirlpool2']))); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
160 | xmlwriter_end_element($xw); |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
161 | } |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
162 | |
4aad74bde00b
In product beerxml export added BMS specific items: cooling_to and whirlpool stages. These should be picked up by the brew computer and should do no harm to the rest of the world.
Michiel Broek <mbroek@mbse.eu>
parents:
400
diff
changeset
|
163 | |
177 | 164 | // Style |
165 | xmlwriter_start_element($xw, 'STYLE'); | |
166 | ||
167 | xmlwriter_start_element($xw, 'VERSION'); | |
168 | xmlwriter_text($xw, '1'); | |
169 | xmlwriter_end_element($xw); | |
170 | ||
171 | xmlwriter_start_element($xw, 'NAME'); | |
172 | xmlwriter_text($xw, $row['st_name']); | |
173 | xmlwriter_end_element($xw); | |
174 | ||
175 | xmlwriter_start_element($xw, 'CATEGORY'); | |
176 | xmlwriter_text($xw, $row['st_category']); | |
177 | xmlwriter_end_element($xw); | |
178 | ||
179 | xmlwriter_start_element($xw, 'CATEGORY_NUMBER'); | |
180 | xmlwriter_text($xw, $row['st_category_number']); | |
181 | xmlwriter_end_element($xw); | |
182 | ||
183 | xmlwriter_start_element($xw, 'STYLE_LETTER'); | |
184 | xmlwriter_text($xw, $row['st_letter']); | |
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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
192 | xmlwriter_text($xw, $styletype[$row['st_type']]); |
177 | 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'); | |
563
acdd54144838
Added export inventory and profiles in beerxml format. Small fixes in beerxml recipe and product export.
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
204 | xmlwriter_text($xw, sprintf("%.3f",floatval($row['st_fg_min']))); |
177 | 205 | xmlwriter_end_element($xw); |
206 | ||
563
acdd54144838
Added export inventory and profiles in beerxml format. Small fixes in beerxml recipe and product export.
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
207 | xmlwriter_start_element($xw, 'FG_MAX'); |
177 | 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 | |
244 | ||
245 | xmlwriter_start_element($xw, 'EQUIPMENT'); | |
246 | ||
247 | xmlwriter_start_element($xw, 'VERSION'); | |
248 | xmlwriter_text($xw, '1'); | |
249 | xmlwriter_end_element($xw); | |
250 | ||
251 | xmlwriter_start_element($xw, 'NAME'); | |
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 | |
272 | ||
273 | xmlwriter_start_element($xw, 'HOPS'); | |
274 | $arr = json_decode($row['json_hops'], true); | |
275 | foreach($arr as $item) { //foreach element in $arr | |
276 | ||
277 | xmlwriter_start_element($xw, 'HOP'); | |
278 | ||
279 | xmlwriter_start_element($xw, 'VERSION'); | |
280 | xmlwriter_text($xw, '1'); | |
281 | xmlwriter_end_element($xw); | |
282 | ||
283 | xmlwriter_start_element($xw, 'NAME'); | |
284 | xmlwriter_text($xw, $item['h_name']); | |
285 | xmlwriter_end_element($xw); | |
286 | ||
287 | xmlwriter_start_element($xw, 'ALPHA'); | |
288 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['h_alpha']))); | |
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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
296 | xmlwriter_text($xw, $hopuse[$item['h_useat']]); |
177 | 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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
304 | xmlwriter_text($xw, $hoptype[$item['h_type']]); |
177 | 305 | xmlwriter_end_element($xw); |
306 | ||
307 | xmlwriter_start_element($xw, 'FORM'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
308 | xmlwriter_text($xw, $hopform[$item['h_form']]); |
177 | 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 | |
324 | } | |
325 | xmlwriter_end_element($xw); // HOPS | |
326 | ||
327 | xmlwriter_start_element($xw, 'FERMENTABLES'); | |
328 | $arr = json_decode($row['json_fermentables'], true); | |
329 | foreach($arr as $item) { //foreach element in $arr | |
330 | xmlwriter_start_element($xw, 'FERMENTABLE'); | |
331 | ||
332 | xmlwriter_start_element($xw, 'VERSION'); | |
333 | xmlwriter_text($xw, '1'); | |
334 | xmlwriter_end_element($xw); | |
335 | ||
336 | xmlwriter_start_element($xw, 'NAME'); | |
337 | xmlwriter_text($xw, $item['f_name']); | |
338 | xmlwriter_end_element($xw); | |
339 | ||
340 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
341 | xmlwriter_text($xw, $fermentabletype[$item['f_type']]); |
177 | 342 | xmlwriter_end_element($xw); |
343 | ||
344 | xmlwriter_start_element($xw, 'AMOUNT'); | |
345 | xmlwriter_text($xw, sprintf("%.4f",floatval($item['f_amount']))); | |
346 | xmlwriter_end_element($xw); | |
347 | ||
348 | xmlwriter_start_element($xw, 'YIELD'); | |
349 | xmlwriter_text($xw, sprintf("%.1f",floatval($item['f_yield']))); | |
350 | xmlwriter_end_element($xw); | |
351 | ||
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'); | |
400
6d07c51e7540
Fixed beerxml output for fermentables added after the boil.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
357 | ($item['f_added'] > 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
177 | 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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
403 | xmlwriter_text($xw, $graintype[$item['f_graintype']]); |
177 | 404 | xmlwriter_end_element($xw); |
405 | ||
406 | xmlwriter_end_element($xw); // FERMENTABLE | |
407 | } | |
408 | xmlwriter_end_element($xw); // FERMENTABLES | |
409 | ||
410 | xmlwriter_start_element($xw, 'MISCS'); | |
411 | $arr = json_decode($row['json_miscs'], true); | |
412 | foreach($arr as $item) { | |
413 | ||
414 | xmlwriter_start_element($xw, 'MISC'); | |
415 | ||
416 | xmlwriter_start_element($xw, 'VERSION'); | |
417 | xmlwriter_text($xw, '1'); | |
418 | xmlwriter_end_element($xw); | |
419 | ||
420 | xmlwriter_start_element($xw, 'NAME'); | |
421 | xmlwriter_text($xw, $item['m_name']); | |
422 | xmlwriter_end_element($xw); | |
423 | ||
424 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
425 | xmlwriter_text($xw, $misctype[$item['m_type']]); |
177 | 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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
437 | xmlwriter_text($xw, $miscuse[$item['m_use_use']]); |
177 | 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 | |
445 | } | |
446 | xmlwriter_end_element($xw); // MISCS | |
447 | ||
448 | xmlwriter_start_element($xw, 'YEASTS'); | |
449 | $arr = json_decode($row['json_yeasts'], true); | |
450 | foreach($arr as $item) { //foreach element in $arr | |
451 | ||
452 | xmlwriter_start_element($xw, 'YEAST'); | |
453 | ||
454 | xmlwriter_start_element($xw, 'VERSION'); | |
455 | xmlwriter_text($xw, '1'); | |
456 | xmlwriter_end_element($xw); | |
457 | ||
458 | xmlwriter_start_element($xw, 'NAME'); | |
459 | xmlwriter_text($xw, $item['y_name']); | |
460 | xmlwriter_end_element($xw); | |
461 | ||
462 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
463 | xmlwriter_text($xw, $yeasttype[$item['y_type']]); |
177 | 464 | xmlwriter_end_element($xw); |
465 | ||
466 | xmlwriter_start_element($xw, 'FORM'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
467 | xmlwriter_text($xw, $yeastform[$item['y_form']]); |
177 | 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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
475 | ($item['y_form'] == 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE'); |
177 | 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'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
499 | ($item['y_use'] == 0) ? xmlwriter_text($xw, 'FALSE') : xmlwriter_text($xw, 'TRUE'); |
177 | 500 | xmlwriter_end_element($xw); |
501 | ||
502 | xmlwriter_end_element($xw); // YEAST | |
503 | } | |
504 | xmlwriter_end_element($xw); // YEASTS | |
505 | ||
506 | xmlwriter_start_element($xw, 'WATERS'); | |
507 | xmlwriter_start_element($xw, 'WATER'); // Source 1 | |
508 | ||
509 | xmlwriter_start_element($xw, 'VERSION'); | |
510 | xmlwriter_text($xw, '1'); | |
511 | xmlwriter_end_element($xw); | |
512 | ||
513 | xmlwriter_start_element($xw, 'NAME'); | |
514 | xmlwriter_text($xw, $row['w1_name']); | |
515 | xmlwriter_end_element($xw); | |
516 | ||
517 | xmlwriter_start_element($xw, 'AMOUNT'); | |
518 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_amount']))); | |
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 | ||
603
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
525 | xmlwriter_start_element($xw, 'MAGNESIUM'); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
526 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w1_magnesium']))); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
527 | xmlwriter_end_element($xw); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
528 | |
177 | 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 | |
554 | ||
555 | if (strlen($row['w2_name'])) { | |
556 | xmlwriter_start_element($xw, 'WATER'); // Source 2 | |
557 | ||
558 | xmlwriter_start_element($xw, 'VERSION'); | |
559 | xmlwriter_text($xw, '1'); | |
560 | xmlwriter_end_element($xw); | |
561 | ||
562 | xmlwriter_start_element($xw, 'NAME'); | |
563 | xmlwriter_text($xw, $row['w2_name']); | |
564 | xmlwriter_end_element($xw); | |
565 | ||
566 | xmlwriter_start_element($xw, 'AMOUNT'); | |
567 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_amount']))); | |
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 | ||
603
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
574 | xmlwriter_start_element($xw, 'MAGNESIUM'); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
575 | xmlwriter_text($xw, sprintf("%.2f",floatval($row['w2_magnesium']))); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
576 | xmlwriter_end_element($xw); |
c0f638bcec9f
Added COLOR_METHOD, IBU_METHOD, MAGNESIUM fields.
Michiel Broek <mbroek@mbse.eu>
parents:
598
diff
changeset
|
577 | |
177 | 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 | |
603 | } | |
604 | xmlwriter_end_element($xw); // WATERS | |
605 | ||
606 | xmlwriter_start_element($xw, 'MASH'); | |
607 | ||
608 | xmlwriter_start_element($xw, 'VERSION'); | |
609 | xmlwriter_text($xw, '1'); | |
610 | xmlwriter_end_element($xw); | |
611 | ||
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'); | |
629 | $arr = json_decode($row['json_mashs'], true); | |
630 | foreach($arr as $item) { //foreach element in $arr | |
631 | xmlwriter_start_element($xw, 'MASH_STEP'); | |
632 | ||
633 | xmlwriter_start_element($xw, 'VERSION'); | |
634 | xmlwriter_text($xw, '1'); | |
635 | xmlwriter_end_element($xw); | |
636 | ||
637 | xmlwriter_start_element($xw, 'NAME'); | |
638 | xmlwriter_text($xw, $item['step_name']); | |
639 | xmlwriter_end_element($xw); | |
640 | ||
641 | xmlwriter_start_element($xw, 'TYPE'); | |
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
642 | xmlwriter_text($xw, $mashsteptype[$item['step_type']]); |
177 | 643 | xmlwriter_end_element($xw); |
644 | ||
242
97c237654ddd
Product export to beerxml produces a clean recipe. No brewing information added.
Michiel Broek <mbroek@mbse.eu>
parents:
177
diff
changeset
|
645 | if ($item['step_type'] == 0) { |
177 | 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 | |
672 | } | |
673 | xmlwriter_end_element($xw); // MASH_STEPS | |
674 | xmlwriter_end_element($xw); // MASH | |
675 | xmlwriter_end_element($xw); // RECIPE | |
676 | xmlwriter_end_element($xw); // RECIPES | |
677 | xmlwriter_end_document($xw); | |
678 | ||
679 | $beerxml = xmlwriter_output_memory($xw); | |
680 | ||
681 | Header('Content-type: text/xml'); | |
272
0c2ea1c2b858
Product beerxml export filename includes beer code.
Michiel Broek <mbroek@mbse.eu>
parents:
242
diff
changeset
|
682 | header('Content-Disposition: attachment; filename="' . $row['code'] . ' ' . $row['name'] . '.xml"'); |
177 | 683 | header('Content-Transfer-Encoding: binary'); |
684 | header('Expires: 0'); | |
685 | header('Pragma: no-cache'); | |
686 | header('Content-Length: '.strlen($beerxml)); | |
687 | exit($beerxml); |