www/prod_forum.php

Wed, 04 Mar 2020 10:48:21 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 04 Mar 2020 10:48:21 +0100
changeset 622
39902353b159
parent 565
dfc850e6ee1f
child 666
029e65ca3678
permissions
-rw-r--r--

Workaround for hang during startup. Changed order of displayed fields on the yeast tab. Tooltip text changes. More decimals on the checklist for misc ingredients. More decimals for the starter on product print.

<?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 products 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['code'].' '.$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) {
	if ($item['m_use_use'] == 2)      // Boil
        	$gebruik = sprintf("%s %d min",$miscuse[$item['m_use_use']],floatval($item['m_time']));
        else
        	$gebruik = $miscuse[$item['m_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;
$memo .= $rows.$datas.'Spoelwater geschat'.$datae.$datas.sprintf("%.1f",$row['brew_sparge_est'])." 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('Product naar forum', 'prod_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 product 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