www/rec_forum.php

changeset 804
ac5c3e97fcf1
parent 803
45e87aa8d02c
child 805
488613f30789
equal deleted inserted replaced
803:45e87aa8d02c 804:ac5c3e97fcf1
1 <?php
2 require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php');
3 require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
4 require_once($_SERVER['DOCUMENT_ROOT'].'/includes/constants.php');
5
6
7 $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
8 if (! $link) {
9 die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
10 }
11 if (! mysqli_set_charset($link, "utf8" )) {
12 echo "error";
13 return 1;
14 }
15
16 setlocale ( LC_ALL, 'nl_NL.UTF-8');
17 $record = $_GET["record"];
18 $result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'");
19 $row = mysqli_fetch_array($result);
20
21 $preboil_sg = 0;
22 date_default_timezone_set('Europe/Amsterdam');
23 $prdate = date(DATE_RFC2822);
24
25 /*
26 * Generate the output in a string.
27 */
28 $tabus = '[tabular]';
29 $tabue = '[/tabular]';
30 $heads = '[head]';
31 $heade = '[/head]';
32 $rows = '[row]';
33 $rowe = '[/row]';
34 $datas = '[data]';
35 $datae = '[/data]';
36
37 $memo = "[u][b]BMS v".$my_version." - Datum export: ".$prdate.'[/b][/u]'.PHP_EOL;
38 $memo .= PHP_EOL;
39 $memo .= PHP_EOL;
40 $memo .= '[u][b]Basis[/b][/u]'.PHP_EOL;
41 $memo .= $tabus.PHP_EOL;
42 $memo .= $heads.'Omschrijving'.$heade.$heads.'Waarde'.$heade.PHP_EOL;
43 $memo .= $rows.$datas.'Bier naam'.$datae.$datas.$row['name'].$datae.$rowe.PHP_EOL;
44 $memo .= $rows.$datas.'Bier stijl'.$datae.$datas.$row['st_name'].$datae.$rowe.PHP_EOL;
45 $memo .= $rows.$datas.'Recept type'.$datae.$datas.$recipetype[$row['type']].$datae.$rowe.PHP_EOL;
46 $memo .= $rows.$datas.'Batch grootte'.$datae.$datas.$row['batch_size'].' liter'.$datae.$rowe.PHP_EOL;
47 $memo .= $rows.$datas.'Kooktijd'.$datae.$datas.$row['boil_time'].' minuten'.$datae.$rowe.PHP_EOL;
48 $memo .= $rows.$datas.'Brouwzaal rendement'.$datae.$datas.$row['efficiency'].' %'.$datae.$rowe.PHP_EOL;
49 $memo .= $rows.$datas.'Geschatte begin densiteit'.$datae.$datas.sprintf("%.3f",$row['est_og']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_og'])).'°P'.$datae.$rowe.PHP_EOL;
50 $memo .= $rows.$datas.'Geschatte eind densiteit'.$datae.$datas.sprintf("%.3f",$row['est_fg']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_fg'])).'°P'.$datae.$rowe.PHP_EOL;
51 $memo .= $rows.$datas.'Geschat alcohol'.$datae.$datas.sprintf("%.1f",$row['est_abv']).'% vol'.$datae.$rowe.PHP_EOL;
52 $memo .= $rows.$datas.'Kleur ('.$colormethod[$row['color_method']].')'.$datae.$datas.$row['est_color'].' EBC'.$datae.$rowe.PHP_EOL;
53 $memo .= $rows.$datas.'Bitterheid ('.$ibumethod[$row['ibu_method']].')'.$datae.$datas.$row['est_ibu'].' IBU'.$datae.$rowe.PHP_EOL;
54 if ($row['divide_parts'])
55 $memo .= $rows.$datas.'Split batch (' .$splitat[$row['divide_type']].')'.$datae.$datas.($row['divide_part'] + 1)." van ".($row['divide_parts'] + 1).$datae.$rowe.PHP_EOL;
56 $memo .= $tabue.PHP_EOL;
57 $memo .= PHP_EOL;
58
59 $sugarsm = 0;
60 $grainabsorbtion = 0;
61 $mashwater = 0;
62
63 $memo .= '[u][b]Vergistbare ingrediënten[/b][/u]'.PHP_EOL;
64 $memo .= $tabus.PHP_EOL;
65 $memo .= $heads.'Mout, granen en suikers'.$heade.$heads.'EBC'. $heade.$heads.'Gewicht kg'.$heade.$heads.'%'.$heade.$heads.'Gebruik tijdens'.$heade.PHP_EOL;
66
67 $arr = json_decode($row['json_fermentables'], true);
68 foreach($arr as $item) {
69 $name = $item['f_name']." (".$item['f_supplier'].")";
70 $amount = floatval($item['f_amount']);
71 $d = $amount * (floatval($item['f_yield']) / 100) * (1 - floatval($item['f_moisture']) / 100);
72 if ($item['f_added'] == 0) {
73 $d = floatval($row['efficiency']) / 100 * $d;
74 $sugarsm += $d;
75 $grainabsorbtion += $item['f_amount'];
76 }
77 $pct = '';
78 if ($item['f_added'] < 4)
79 $pct = sprintf("%.1f", floatval($item['f_percentage']));
80
81 $memo .= $rows.$datas.$name.$datae.$datas.sprintf("%.0f", floatval($item['f_color'])).$datae.$datas;
82 $memo .= sprintf("%.3f", $amount).$datae.$datas.$pct.$datae.$datas;
83 $memo .= $added[$item['f_added']].$datae.$rowe .PHP_EOL;
84 }
85 $preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size']));
86 $memo .= $tabue.PHP_EOL;
87 $memo .= PHP_EOL;
88
89 $memo .= '[u][b]Hop[/b][/u]'.PHP_EOL;
90 $memo .= $tabus.PHP_EOL;
91 $memo .= $heads.'Hop'.$heade.$heads.'Vorm'.$heade.$heads.'Alpha'.$heade.$heads.'IBU'.$heade.$heads.'Gram'.$heade.$heads.'Toevoegen moment'.$heade.PHP_EOL;
92
93 $arr = json_decode($row['json_hops'], true);
94 foreach($arr as $item) {
95 $name = $item['h_name']." (".$item['h_origin'].")";
96 $amount = floatval($item['h_amount']) * 1000;
97 $time = floatval($item['h_time']);
98 $alpha = floatval($item['h_alpha']);
99 $ibu = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $amount, $time, $alpha,
100 $row['ibu_method'], $row['brew_whirlpool9'], $row['brew_whirlpool7'], $row['brew_whirlpool6']);
101 $moment = $hopuse[$item['h_useat']];
102 if (($item['h_useat'] == 2) || ($item['h_useat'] == 4)) { // Boil or Whirlpool
103 $moment = $hopuse[$item['h_useat']].' '.$time." minuten";
104 } else if ($item['h_useat'] == 5) { // Dryhop
105 $moment = $hopuse[$item['h_useat']].' '.sprintf("%.0f", $time / 1440).' dagen';
106 }
107
108 $memo .= $rows.$datas.$name.$datae.$datas.$hopform[$item['h_form']].$datae.$datas.sprintf("%.1f", $alpha).'%'.$datae.$datas;
109 $memo .= sprintf("%.1f", $ibu).$datae.$datas.sprintf("%.1f", $amount).$datae.$datas.$moment.$datae.$rowe.PHP_EOL;
110 }
111 $memo .= $tabue.PHP_EOL;
112 $memo .= PHP_EOL;
113
114 $memo .= '[u][b]Diversen[/b][/u]'.PHP_EOL;
115 $memo .= $tabus.PHP_EOL;
116 $memo .= $heads.'Specerij, kruid, brouwzout'.$heade.$heads.'Type grondstof'.$heade.$heads.'Gebruik tijdens'.$heade.$heads.'Hoeveel'.$heade.PHP_EOL;
117
118 $arr = json_decode($row['json_miscs'], true);
119 foreach($arr as $item) {
120 $use_use = $item['m_use_use'];
121 $time = floatval($item['m_time']);
122
123 if ($use_use == 2) // Boil
124 $gebruik = sprintf("%s %d min",$miscuse[$use_use],$time);
125 else
126 $gebruik = $miscuse[$use_use];
127 $hoeveel = sprintf("%.2f %s",floatval($item['m_amount']) * 1000,$item['m_amount_is_weight'] ? "gr":"ml");
128
129 $memo .= $rows.$datas.$item['m_name'].$datae.$datas.$misctype[$item['m_type']].$datae.$datas;
130 $memo .= $gebruik.$datae.$datas.$hoeveel.$datae.$rowe.PHP_EOL;
131 }
132 $memo .= $tabue.PHP_EOL;
133 $memo .= PHP_EOL;
134
135 $memo .= '[u][b]Gist[/b][/u]'.PHP_EOL;
136 $memo .= $tabus.PHP_EOL;
137 $memo .= $heads.'Gistlab en code'.$heade.$heads.'Omschrijving'.$heade.$heads.'Gebruik'.$heade.$heads.'Vorm'.$heade.$heads.'Hoeveel'.$heade.PHP_EOL;
138
139 $arr = json_decode($row['json_yeasts'], true);
140 foreach($arr as $item) {
141 $product = $item['y_laboratory']." ".$item['y_product_id'];
142
143 if ($item['y_form'] == 0) // Liquid
144 $amount = sprintf("%.0f",floatval($item['y_amount']))." pak";
145 else if ($item['y_form'] == 1 || $item['y_form'] == 6) // Dry
146 $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr";
147 else
148 $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml";
149
150 $memo .= $rows.$datas.$product.$datae.$datas.$item['y_name'].$datae.$datas.$yeastuse[$item['y_use']].$datae.$datas;
151 $memo .= $yeastform[$item['y_form']].$datae.$datas.$amount.$datae.$rowe.PHP_EOL;
152 }
153 $memo .= $tabue.PHP_EOL;
154 if ($row['starter_enable'] && $row['prop1_volume']) {
155 $sv = 0;
156 for ($i = 1; $i < 5; $i++) {
157 $pv = "prop".$i."_volume";
158 if (floatval($row[$pv]) && (floatval($row[$pv]) > $sv)) {
159 $sv = floatval($row[$pv]);
160 }
161 }
162 $memo .= "Maak een giststarter van ".sprintf("%.1f", $sv)." liter.".PHP_EOL;
163 }
164 $memo .= PHP_EOL;
165
166 if ($row['w1_name'])
167 $mashwater += floatval($row['w1_amount']);
168 if ($row['w2_name'])
169 $mashwater += floatval($row['w2_amount']);
170
171 $memo .= '[u][b]Maischschema[/b][/u]'.PHP_EOL;
172 $memo .= $tabus.PHP_EOL;
173 $memo .= $heads.'Maisch stap'.$heade.$heads.'Stap type'.$heade.$heads.'Temperatuur'.$heade.$heads.'Rust tijd'.$heade.$heads.'Opwarmen tijd'.$heade.PHP_EOL;
174
175 $arr = json_decode($row['json_mashs'], true);
176 foreach($arr as $item) {
177
178 if ($item['step_type'] == 1) {
179 $stype = $mashtype[$item['step_type']];
180 } else {
181 $stype = $mashtype[$item['step_type']].' '.sprintf("%.1f", $item['step_infuse_amount']).' liter';
182 }
183 $memo .= $rows.$datas.$item['step_name'].$datae.$datas.$stype.$datae.$datas.sprintf("%.1f °C", $item['step_temp']);
184 $memo .= $datae.$datas.sprintf("%.0f min.", $item['step_time']).$datae.$datas.sprintf("%.0f min.", $item['ramp_time']);
185 $memo .= $datae.$rowe.PHP_EOL;
186 }
187 $memo .= $tabue.PHP_EOL;
188 $memo .= PHP_EOL;
189
190 $memo .= '[u][b]Brouwwater[/b][/u]'.PHP_EOL;
191 $memo .= $tabus.PHP_EOL;
192 $memo .= $heads.'Omschrijving'.$heade.$heads.'Waarde'.$heade.PHP_EOL;
193
194 if ($row['w1_name'] && $row['w2_name'] && floatval($row['w2_amount']) > 0) {
195 $memo .= $rows.$datas.'Maischwater 1'.$datae.$datas.sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name'].$datae.$rowe.PHP_EOL;
196 $memo .= $rows.$datas.'Maischwater 2'.$datae.$datas.sprintf("%.1f",floatval($row['w2_amount'])).' liter water '.$row['w2_name'].$datae.$rowe.PHP_EOL;
197 } else {
198 $memo .= $rows.$datas.'Maischwater'.$datae.$datas.sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name'].$datae.$rowe.PHP_EOL;
199 }
200 $memo .= $rows.$datas.'Maischwater aanzuren tot pH'.$datae.$datas.$row['mash_ph'].' pH'.$datae.$rowe.PHP_EOL;
201 $spoelw = ($row['boil_size'] - $mashwater + $grainabsorbtion + $row['eq_lauter_deadspace']) * 1.03; // A small heat correction
202 $memo .= $rows.$datas.'Spoelwater geschat'.$datae.$datas.sprintf("%.1f",$spoelw)." liter".$datae.$rowe.PHP_EOL;
203 $memo .= $rows.$datas.'Spoelwater temperatuur'.$datae.$datas.$row['sparge_temp'].' °C'.$datae.$rowe.PHP_EOL;
204 $memo .= $rows.$datas.'Spoelwater aanzuren tot pH'.$datae.$datas.sprintf("%.1f",$row['sparge_ph']).' pH'.$datae.$rowe.PHP_EOL;
205 $memo .= $tabue.PHP_EOL;
206 $memo .= PHP_EOL;
207
208 $memo .= '[u][b]Waterprofiel behandeld water[/b][/u]'.PHP_EOL;
209 $memo .= $tabus.PHP_EOL;
210 $memo .= $heads.'Ca'.$heade.$heads.'Mg'.$heade.$heads.'Na'.$heade.$heads.'HCO3'.$heade.$heads.'Cl'.$heade.$heads.'SO4'.$heade.PHP_EOL;
211 $memo .= $rows.$datas.sprintf("%.1f",floatval($row['wb_calcium'])).$datae;
212 $memo .= $datas.sprintf("%.1f",floatval($row['wb_magnesium'])).$datae;
213 $memo .= $datas.sprintf("%.1f",floatval($row['wb_sodium'])).$datae;
214 $memo .= $datas.sprintf("%.1f",floatval($row['wb_total_alkalinity'])*61/50).$datae;
215 $memo .= $datas.sprintf("%.1f",floatval($row['wb_chloride'])).$datae;
216 $memo .= $datas.sprintf("%.1f",floatval($row['wb_sulfate'])).$datae.$rowe.PHP_EOL;
217 $memo .= $tabue.PHP_EOL;
218
219 page_header('Recept naar forum', 'rec_forum');
220 ?>
221 <script>
222 // json_encode() seems to do the right thing.
223 var forumstr = <?= json_encode($memo) ?>;
224 </script>
225 <div id="MainPanel">
226 <div class="section">
227 <div style="overflow: hidden; margin: 25px;"><br>
228 <p>Het recept met alle gegevens staan gereed.</p>
229 <p>Zodra je de "Klembord" toets gebruikt zullen deze gegevens naar het klembord gekopieerd<br>
230 worden. In het scherm van het forum kun je deze gegevens vervolgens "plakken".</p>
231 <p>Na het drukken van de toets wordt dit scherm gesloten.</p>
232 <p><input type="button" value="Klembord" id="copytoClipboard" /></p>
233 </div>
234 </div>
235 </div>
236
237 <?php
238 page_footer();
239 ?>

mercurial