diff -r fa4eb830c151 -r 9c4bc199be9e www/prod_forum.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/prod_forum.php Tue Apr 23 19:53:26 2019 +0200 @@ -0,0 +1,237 @@ + + + + + + BMS v<?php echo $my_version;?> - Export recipe + + + +
+':
+                                        $strout .= '>';
+                                        break;
+                        case '&':
+                                        $strout .= '&';
+                                        break;
+                        case '"':
+                                        $strout .= '"';
+                                        break;
+                        default:
+                                        $strout .= $strin[$i];
+        	}
+
+		if ($cnt >= $len)
+			break;
+        }
+
+	for ($i = $cnt; $i < $len; $i++)
+		$strout .= " ";
+        return $strout;
+}
+
+
+echo "BMS v" . $my_version . " - Datum export: " . $prdate . PHP_EOL;
+echo "----------------------------------------------------------" . PHP_EOL;
+itemline("Bier naam", $row['code'].' '.$row['name']);
+itemline("Bier stijl", $row['st_name']);
+itemline("Recept type", $recipetype[$row['type']]);
+itemline("Batch grootte", $row['batch_size'].' liter');
+itemline("Kooktijd", $row['boil_time'].' minuten');
+itemline("Brouwzaal rendement", $row['efficiency'].' %');
+itemline("Geschatte begin densiteit", sprintf("%.3f",$row['est_og']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_og'])).'°P');
+itemline("Geschatte eind densiteit", sprintf("%.3f",$row['est_fg']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_fg'])).'°P');
+itemline("Geschat alcohol", sprintf("%.1f",$row['est_abv']).'% vol');
+itemline("Kleur (" . $colormethod[$row['color_method']] . ")", $row['est_color'] . ' EBC');
+itemline("Bitterheid (" . $ibumethod[$row['ibu_method']] . ")", $row['est_ibu'] . ' IBU');
+echo PHP_EOL . PHP_EOL;
+
+$sugarsm = 0;
+$grainabsorbtion = 0;
+$mashwater = 0;
+
+$arr = json_decode($row['json_fermentables'], true);
+echo "Mout, granen en suikers                  EBC Gewicht kg     % Gebruik tijdens" . PHP_EOL;
+echo "---------------------------------------- --- ---------- ----- ----------------" . PHP_EOL;
+foreach($arr as $item) {
+	$name = formatstr($item['f_name'] . " (" . $item['f_supplier'] . ")", 40);
+	$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'];
+        }
+	echo sprintf("%s %3.0f %10.3f %5.1f ", $name, floatval($item['f_color']), $amount, floatval($item['f_percentage']));
+	echo $added[$item['f_added']] . PHP_EOL;
+}
+$preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size']));
+echo PHP_EOL . PHP_EOL;
+
+
+echo "Hop                                      Vorm      α %   IBU   Gram Toevoegen moment" . PHP_EOL;
+echo "---------------------------------------- ------- ----- ----- ------ --------------------" . PHP_EOL;
+$arr = json_decode($row['json_hops'], true);
+foreach($arr as $item) {
+	$name   = formatstr($item['h_name'] . " (" . $item['h_origin'] . ")", 40);
+	$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']);
+	$moment = $hopuse[$item['h_useat']];
+        if ($item['h_useat'] == 2) {    // Boil
+        	$moment = "Kook ".$time." minuten";
+        }
+
+	echo sprintf("%s %-7s %5.1f %5.1f %6.1f %-20s", $name, $hopform[$item['h_form']], $alpha, $ibu, $amount, $moment);
+	echo PHP_EOL;
+}
+echo PHP_EOL . PHP_EOL;
+
+echo "Specerij, kruid, brouwzout etc Type grondstof  Gebruik tijdens         Hoeveel" . PHP_EOL;
+echo "------------------------------ --------------- -------------------- ----------" . PHP_EOL;
+$arr = json_decode($row['json_miscs'], true);
+foreach($arr as $item) {
+	$amount  = floatval($item['m_amount']) * 1000;
+	$aiw     = $item['m_amount_is_weight'];
+	$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("%.1f %s",$amount,$aiw ? "gr":"ml");
+
+	echo sprintf("%s %-15s %-20s %10s", formatstr($item['m_name'], 30), $misctype[$item['m_type']], $gebruik, $hoeveel) . PHP_EOL;
+}
+echo PHP_EOL . PHP_EOL;
+
+echo "Gistlab en code      Omschrijving                   Gebruik      Vorm            Hoeveel" . PHP_EOL;
+echo "-------------------- ------------------------------ ------------ ------------ ----------" . PHP_EOL;
+$arr = json_decode($row['json_yeasts'], true);
+foreach($arr as $item) {
+	$name    = formatstr($item['y_name'], 30);
+	$product = formatstr($item['y_laboratory']." ".$item['y_product_id'], 20);
+
+	if ($item['y_form'] == 0)       // Liquid
+                $amount = sprintf("%.0f",floatval($item['y_amount']))." pak";
+        else if ($item['y_form'] == 1)  // Dry
+                $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr";
+        else
+                $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml";
+
+	echo sprintf("%s %s %-12s %-12s %10s", $product, $name, $yeastuse[$item['y_use']], $yeastform[$item['y_form']], $amount) . 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]);
+		}
+	}
+	echo PHP_EOL . "Maak een giststarter van " . sprintf("%.1f", $sv) . " liter." . PHP_EOL;
+}
+echo PHP_EOL . PHP_EOL;
+
+if ($row['w1_name'])
+	$mashwater += floatval($row['w1_amount']);
+if ($row['w2_name'])
+	$mashwater += floatval($row['w2_amount']);
+
+echo "Maisch stap          stap type              stap temp    rusten  opwarmen" . PHP_EOL;
+echo "-------------------- ---------------------- --------- --------- ---------" . PHP_EOL;
+$arr = json_decode($row['json_mashs'], true);
+foreach($arr as $item) {
+	
+	if ($item['step_type'] == 1) {
+		$stype = formatstr($steptype[$item['step_type']], 22);
+	} else {
+		$stype = formatstr($steptype[$item['step_type']].' '.sprintf("%.1f", $item['step_infuse_amount']).' liter', 22);
+	}
+	echo sprintf("%s %s %s %s %s", 
+		formatstr($item['step_name'], 20), $stype, sprintf("%6.1f °C", $item['step_temp']),
+		sprintf("%4.0f min.", $item['step_time']), sprintf("%4.0f min.", $item['ramp_time'])) . PHP_EOL;
+}
+echo PHP_EOL;
+if ($row['w1_name'] && $row['w2_name']) {
+	itemline("Maischwater 1", sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name']);
+	itemline("Maischwater 2", sprintf("%.1f",floatval($row['w2_amount'])).' liter water '.$row['w2_name']);
+} else {
+	itemline("Maischwater", sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name']);
+}
+itemline("Maischwater aanzuren tot pH", $row['mash_ph'].' pH');
+$spoelw = ($row['boil_size'] - $mashwater + $grainabsorbtion + $row['eq_lauter_deadspace']) * 1.03;     // A small heat correction
+itemline("Spoelwater geschat", sprintf("%.1f", $spoelw)." liter");
+itemline("Spoelwater temperatuur", $row['sparge_temp'].' °C');
+itemline("Spoelwater aanzuren tot pH", sprintf("%.1f",$row['sparge_ph']).' pH');
+echo PHP_EOL . PHP_EOL;
+
+
+?>
+  
+ +