Tue, 10 Dec 2019 20:11:37 +0100
Fix upgrade of the yeast data in products and recipes if the original yeast is not found. Export product or recipe for forum is now coded in forum format and copied to the clipboard ready to paste on a forum.
<?php require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/constants.php'); $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); if (! $link) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } if (! mysqli_set_charset($link, "utf8" )) { echo "error"; return 1; } setlocale ( LC_ALL, 'nl_NL.UTF-8'); $record = $_GET["record"]; $result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'"); $row = mysqli_fetch_array($result); $preboil_sg = 0; date_default_timezone_set('Europe/Amsterdam'); $prdate = date(DATE_RFC2822); /* * Generate the output in a string. */ $tabus = '[tabular]'; $tabue = '[/tabular]'; $heads = '[head]'; $heade = '[/head]'; $rows = '[row]'; $rowe = '[/row]'; $datas = '[data]'; $datae = '[/data]'; $memo = "[u][b]BMS v".$my_version." - Datum export: ".$prdate.'[/b][/u]'.PHP_EOL; $memo .= PHP_EOL; $memo .= PHP_EOL; $memo .= '[u][b]Basis[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Omschrijving'.$heade.$heads.'Waarde'.$heade.PHP_EOL; $memo .= $rows.$datas.'Bier naam'.$datae.$datas.$row['name'].$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Bier stijl'.$datae.$datas.$row['st_name'].$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Recept type'.$datae.$datas.$recipetype[$row['type']].$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Batch grootte'.$datae.$datas.$row['batch_size'].' liter'.$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Kooktijd'.$datae.$datas.$row['boil_time'].' minuten'.$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Brouwzaal rendement'.$datae.$datas.$row['efficiency'].' %'.$datae.$rowe.PHP_EOL; $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; $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; $memo .= $rows.$datas.'Geschat alcohol'.$datae.$datas.sprintf("%.1f",$row['est_abv']).'% vol'.$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Kleur ('.$colormethod[$row['color_method']].')'.$datae.$datas.$row['est_color'].' EBC'.$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Bitterheid ('.$ibumethod[$row['ibu_method']].')'.$datae.$datas.$row['est_ibu'].' IBU'.$datae.$rowe.PHP_EOL; if ($row['divide_parts']) $memo .= $rows.$datas.'Split batch (' .$splitat[$row['divide_type']].')'.$datae.$datas.($row['divide_part'] + 1)." van ".($row['divide_parts'] + 1).$datae.$rowe.PHP_EOL; $memo .= $tabue.PHP_EOL; $memo .= PHP_EOL; $sugarsm = 0; $grainabsorbtion = 0; $mashwater = 0; $memo .= '[u][b]Vergistbare ingrediënten[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Mout, granen en suikers'.$heade.$heads.'EBC'. $heade.$heads.'Gewicht kg'.$heade.$heads.'%'.$heade.$heads.'Gebruik tijdens'.$heade.PHP_EOL; $arr = json_decode($row['json_fermentables'], true); foreach($arr as $item) { $name = $item['f_name']." (".$item['f_supplier'].")"; $amount = floatval($item['f_amount']); $d = $amount * (floatval($item['f_yield']) / 100) * (1 - floatval($item['f_moisture']) / 100); if ($item['f_added'] == 0) { $d = floatval($row['efficiency']) / 100 * $d; $sugarsm += $d; $grainabsorbtion += $item['f_amount']; } $pct = ''; if ($item['f_added'] < 4) $pct = sprintf("%.1f", floatval($item['f_percentage'])); $memo .= $rows.$datas.$name.$datae.$datas.sprintf("%.0f", floatval($item['f_color'])).$datae.$datas; $memo .= sprintf("%.3f", $amount).$datae.$datas.$pct.$datae.$datas; $memo .= $added[$item['f_added']].$datae.$rowe .PHP_EOL; } $preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size'])); $memo .= $tabue.PHP_EOL; $memo .= PHP_EOL; $memo .= '[u][b]Hop[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Hop'.$heade.$heads.'Vorm'.$heade.$heads.'Alpha'.$heade.$heads.'IBU'.$heade.$heads.'Gram'.$heade.$heads.'Toevoegen moment'.$heade.PHP_EOL; $arr = json_decode($row['json_hops'], true); foreach($arr as $item) { $name = $item['h_name']." (".$item['h_origin'].")"; $amount = floatval($item['h_amount']) * 1000; $time = floatval($item['h_time']); $alpha = floatval($item['h_alpha']); $ibu = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $amount, $time, $alpha, $row['ibu_method'], $row['brew_whirlpool9'], $row['brew_whirlpool7'], $row['brew_whirlpool6']); $moment = $hopuse[$item['h_useat']]; if (($item['h_useat'] == 2) || ($item['h_useat'] == 4)) { // Boil or Whirlpool $moment = $hopuse[$item['h_useat']].' '.$time." minuten"; } else if ($item['h_useat'] == 5) { // Dryhop $moment = $hopuse[$item['h_useat']].' '.sprintf("%.0f", $time / 1440).' dagen'; } $memo .= $rows.$datas.$name.$datae.$datas.$hopform[$item['h_form']].$datae.$datas.sprintf("%.1f", $alpha).'%'.$datae.$datas; $memo .= sprintf("%.1f", $ibu).$datae.$datas.sprintf("%.1f", $amount).$datae.$datas.$moment.$datae.$rowe.PHP_EOL; } $memo .= $tabue.PHP_EOL; $memo .= PHP_EOL; $memo .= '[u][b]Diversen[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Specerij, kruid, brouwzout'.$heade.$heads.'Type grondstof'.$heade.$heads.'Gebruik tijdens'.$heade.$heads.'Hoeveel'.$heade.PHP_EOL; $arr = json_decode($row['json_miscs'], true); foreach($arr as $item) { $use_use = $item['m_use_use']; $time = floatval($item['m_time']); if ($use_use == 2) // Boil $gebruik = sprintf("%s %d min",$miscuse[$use_use],$time); else $gebruik = $miscuse[$use_use]; $hoeveel = sprintf("%.2f %s",floatval($item['m_amount']) * 1000,$item['m_amount_is_weight'] ? "gr":"ml"); $memo .= $rows.$datas.$item['m_name'].$datae.$datas.$misctype[$item['m_type']].$datae.$datas; $memo .= $gebruik.$datae.$datas.$hoeveel.$datae.$rowe.PHP_EOL; } $memo .= $tabue.PHP_EOL; $memo .= PHP_EOL; $memo .= '[u][b]Gist[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Gistlab en code'.$heade.$heads.'Omschrijving'.$heade.$heads.'Gebruik'.$heade.$heads.'Vorm'.$heade.$heads.'Hoeveel'.$heade.PHP_EOL; $arr = json_decode($row['json_yeasts'], true); foreach($arr as $item) { $product = $item['y_laboratory']." ".$item['y_product_id']; if ($item['y_form'] == 0) // Liquid $amount = sprintf("%.0f",floatval($item['y_amount']))." pak"; else if ($item['y_form'] == 1 || $item['y_form'] == 6) // Dry $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr"; else $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml"; $memo .= $rows.$datas.$product.$datae.$datas.$item['y_name'].$datae.$datas.$yeastuse[$item['y_use']].$datae.$datas; $memo .= $yeastform[$item['y_form']].$datae.$datas.$amount.$datae.$rowe.PHP_EOL; } $memo .= $tabue.PHP_EOL; if ($row['starter_enable'] && $row['prop1_volume']) { $sv = 0; for ($i = 1; $i < 5; $i++) { $pv = "prop".$i."_volume"; if (floatval($row[$pv]) && (floatval($row[$pv]) > $sv)) { $sv = floatval($row[$pv]); } } $memo .= "Maak een giststarter van ".sprintf("%.1f", $sv)." liter.".PHP_EOL; } $memo .= PHP_EOL; if ($row['w1_name']) $mashwater += floatval($row['w1_amount']); if ($row['w2_name']) $mashwater += floatval($row['w2_amount']); $memo .= '[u][b]Maischschema[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Maisch stap'.$heade.$heads.'Stap type'.$heade.$heads.'Temperatuur'.$heade.$heads.'Rust tijd'.$heade.$heads.'Opwarmen tijd'.$heade.PHP_EOL; $arr = json_decode($row['json_mashs'], true); foreach($arr as $item) { if ($item['step_type'] == 1) { $stype = $mashtype[$item['step_type']]; } else { $stype = $mashtype[$item['step_type']].' '.sprintf("%.1f", $item['step_infuse_amount']).' liter'; } $memo .= $rows.$datas.$item['step_name'].$datae.$datas.$stype.$datae.$datas.sprintf("%.1f °C", $item['step_temp']); $memo .= $datae.$datas.sprintf("%.0f min.", $item['step_time']).$datae.$datas.sprintf("%.0f min.", $item['ramp_time']); $memo .= $datae.$rowe.PHP_EOL; } $memo .= $tabue.PHP_EOL; $memo .= PHP_EOL; $memo .= '[u][b]Brouwwater[/b][/u]'.PHP_EOL; $memo .= $tabus.PHP_EOL; $memo .= $heads.'Omschrijving'.$heade.$heads.'Waarde'.$heade.PHP_EOL; if ($row['w1_name'] && $row['w2_name']) { $memo .= $rows.$datas.'Maischwater 1'.$datae.$datas.sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name'].$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Maischwater 2'.$datae.$datas.sprintf("%.1f",floatval($row['w2_amount'])).' liter water '.$row['w2_name'].$datae.$rowe.PHP_EOL; } else { $memo .= $rows.$datas.'Maischwater'.$datae.$datas.sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name'].$datae.$rowe.PHP_EOL; } $memo .= $rows.$datas.'Maischwater aanzuren tot pH'.$datae.$datas.$row['mash_ph'].' pH'.$datae.$rowe.PHP_EOL; $spoelw = ($row['boil_size'] - $mashwater + $grainabsorbtion + $row['eq_lauter_deadspace']) * 1.03; // A small heat correction $memo .= $rows.$datas.'Spoelwater geschat'.$datae.$datas.sprintf("%.1f",$spoelw)." liter".$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Spoelwater temperatuur'.$datae.$datas.$row['sparge_temp'].' °C'.$datae.$rowe.PHP_EOL; $memo .= $rows.$datas.'Spoelwater aanzuren tot pH'.$datae.$datas.sprintf("%.1f",$row['sparge_ph']).' pH'.$datae.$rowe.PHP_EOL; $memo .= $tabue.PHP_EOL; page_header('Recept naar forum', 'rec_forum'); ?> <script> // json_encode() seems to do the right thing. var forumstr = <?= json_encode($memo) ?>; </script> <div id="MainPanel"> <div class="section"> <div style="overflow: hidden; margin: 25px;"><br> <p>Het recept met alle gegevens staan gereed.</p> <p>Zodra je de "Klembord" toets gebruikt zullen deze gegevens naar het klembord gekopieerd<br> worden. In het scherm van het forum kun je deze gegevens vervolgens "plakken".</p> <p>Na het drukken van de toets wordt dit scherm gesloten.</p> <p><input type="button" value="Klembord" id="copytoClipboard" /></p> </div> </div> </div> <?php page_footer(); ?>