www/rec_forum.php

Tue, 10 Dec 2019 20:11:37 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 10 Dec 2019 20:11:37 +0100
changeset 565
dfc850e6ee1f
parent 539
fe9ac6d49c4f
child 666
029e65ca3678
permissions
-rw-r--r--

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();
?>

mercurial