diff -r 3435646b230e -r 75f8b569043c www/upl_recipe.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/www/upl_recipe.php Sat Mar 02 17:32:50 2019 +0100
@@ -0,0 +1,708 @@
+ 500000 && $uploadOk) {
+ echo "Fout 2: het bestand is te groot. ";
+ $uploadOk = 0;
+}
+// Allow certain file formats
+if ($imageFileType != "xml" && $uploadOk) {
+ echo "Fout 3: alleen XML bestanden toegestaan. ";
+ $uploadOk = 0;
+}
+// Check if $uploadOk is set to 0 by an error
+if ($uploadOk == 0) {
+ exit;
+}
+
+if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
+ echo "Verwerken bestand ". basename( $_FILES["fileToUpload"]["name"]). "
";
+} else {
+ echo "Fout 4: er ging iets fout met de upload.";
+ exit;
+}
+
+
+$db = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME);
+if (! $db) {
+ echo "Fout 5: ".mysqli_connect_errno()." ".mysqli_connect_error();
+ exit;
+}
+mysqli_set_charset($db, "utf8" );
+date_default_timezone_set('Europe/Amsterdam');
+
+
+$pCara = 0;
+$pSugar = 0;
+$svg = 77;
+$efficiency = 75;
+$batch_size = 20;
+$colorw = 0;
+$f_sugars = 0;
+
+
+
+function get_miscs_cost($miscname) {
+ global $db;
+
+ if ($result = mysqli_query($db, "SELECT cost FROM inventory_miscs WHERE name='$miscname'")) {
+ if ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
+ return floatval($row['cost']);
+ }
+ }
+ return 0.0;
+}
+
+
+
+function recipe_style($recipe)
+{
+ global $db;
+
+ if ($recipe->STYLE->NAME)
+ $sql = "', st_name='" . mysqli_real_escape_string($db, $recipe->STYLE->NAME);
+ if ($recipe->STYLE->STYLE_LETTER)
+ $sql .= "', st_letter='" . mysqli_real_escape_string($db, $recipe->STYLE->STYLE_LETTER);
+ if ($recipe->STYLE->STYLE_GUIDE) {
+ if ($recipe->STYLE->STYLE_GUIDE == "Biertypengids Derek Walsh") {
+ $sql .= "', st_guide='BKG 2015";
+ } else if ($recipe->STYLE->STYLE_GUIDE == "BKG Biertypen") {
+ $sql .= "', st_guide='BKG 2015";
+ } else {
+ $sql .= "', st_guide='" . mysqli_real_escape_string($db, $recipe->STYLE->STYLE_GUIDE);
+ }
+ }
+ if ($recipe->STYLE->CATEGORY)
+ $sql .= "', st_category='" . mysqli_real_escape_string($db, $recipe->STYLE->CATEGORY);
+ if ($recipe->STYLE->CATEGORY_NUMBER)
+ $sql .= "', st_category_number='" . floatval($recipe->STYLE->CATEGORY_NUMBER);
+ if ($recipe->STYLE->TYPE == 'Lager')
+ $sql .= "', st_type='0";
+ else if (($recipe->STYLE->TYPE == 'Ale') || ($recipe->STYLE->TYPE == 'Strong Ale'))
+ $sql .= "', st_type='1";
+ else if ($recipe->STYLE->TYPE == 'Mead')
+ $sql .= "', st_type='2";
+ else if ($recipe->STYLE->TYPE == 'Wheat')
+ $sql .= "', st_type='3";
+ else if ($recipe->STYLE->TYPE == 'Mixed')
+ $sql .= "', st_type='4";
+ else if ($recipe->STYLE->TYPE == 'Cider')
+ $sql .= "', st_type='5";
+ else
+ echo "Unknown TYPE " . $recipe->STYLE->TYPE . "
";
+
+ if ($recipe->STYLE->OG_MIN)
+ $sql .= "', st_og_min='" . floatval($recipe->STYLE->OG_MIN);
+ if ($recipe->STYLE->OG_MAX)
+ $sql .= "', st_og_max='" . floatval($recipe->STYLE->OG_MAX);
+ if ($recipe->STYLE->FG_MIN)
+ $sql .= "', st_fg_min='" . floatval($recipe->STYLE->FG_MIN);
+ if ($recipe->STYLE->FG_MAX)
+ $sql .= "', st_fg_max='" . floatval($recipe->STYLE->FG_MAX);
+ if ($recipe->STYLE->IBU_MIN)
+ $sql .= "', st_ibu_min='" . floatval($recipe->STYLE->IBU_MIN);
+ if ($recipe->STYLE->IBU_MAX)
+ $sql .= "', st_ibu_max='" . floatval($recipe->STYLE->IBU_MAX);
+ if ($recipe->STYLE->COLOR_MIN) {
+ $srm = floatval($recipe->STYLE->COLOR_MIN);
+ $sql .= "', st_color_min='" . srm_to_ebc($srm);
+ }
+ if ($recipe->STYLE->COLOR_MAX) {
+ $srm = floatval($recipe->STYLE->COLOR_MAX);
+ $sql .= "', st_color_max='" . srm_to_ebc($srm);
+ }
+ if ($recipe->STYLE->CARB_MIN)
+ $sql .= "', st_carb_min='" . floatval($recipe->STYLE->CARB_MIN);
+ if ($recipe->STYLE->CARB_MAX)
+ $sql .= "', st_carb_max='" . floatval($recipe->STYLE->CARB_MAX);
+ if ($recipe->STYLE->ABV_MIN)
+ $sql .= "', st_abv_min='" . floatval($recipe->STYLE->ABV_MIN);
+ if ($recipe->STYLE->ABV_MAX)
+ $sql .= "', st_abv_max='" . floatval($recipe->STYLE->ABV_MAX);
+ return $sql;
+}
+
+
+
+function recipe_fermentables($recipe)
+{
+ global $db;
+ global $pCara;
+ global $pSugar;
+ global $batch_size;
+ global $efficiency;
+ global $colorw;
+ global $f_sugars;
+
+ $fermentables = "[";
+ $comma = FALSE;
+ foreach ($recipe->FERMENTABLES->FERMENTABLE as $fermentable) {
+ if ($comma)
+ $fermentables .= ',';
+ $comma = TRUE;
+ $fermentables .= '{"f_name":"' . mysqli_real_escape_string($db, $fermentable->NAME) . '"';
+ $fermentables .= ',"f_origin":"' . mysqli_real_escape_string($db, $fermentable->ORIGIN) . '"';
+ $fermentables .= ',"f_supplier":"' . mysqli_real_escape_string($db, $fermentable->SUPPLIER) . '"';
+ $famount = floatval($fermentable->AMOUNT);
+ $fermentables .= ',"f_amount":' . $famount;
+ $fermentables .= ',"f_cost":' . floatval($fermentable->COST);
+
+ if ($fermentable->TYPE == 'Grain')
+ $fermentables .= ',"f_type":0';
+ else if ($fermentable->TYPE == 'Sugar')
+ $fermentables .= ',"f_type":1';
+ else if ($fermentable->TYPE == 'Extract')
+ $fermentables .= ',"f_type":2';
+ else if ($fermentable->TYPE == 'Dry extract')
+ $fermentables .= ',"f_type":3';
+ else if ($fermentable->TYPE == 'Adjunct')
+ $fermentables .= ',"f_type":4';
+ else
+ echo "Unknown TYPE " . $fermentable->TYPE . "
";
+
+ $fyield = floatval($fermentable->YIELD);
+ $fermentables .= ',"f_yield":' . $fyield;
+ if ($fermentable->COLOR) {
+ $srm = floatval($fermentable->COLOR);
+ $ebc = srm_to_ebc($srm);
+ } else {
+ $srm = 0;
+ $ebc = 0;
+ }
+ $colorw += ($famount * $srm / $batch_size) * 8.34436; /* Kleurwerking */
+ $fermentables .= ',"f_color":' . $ebc;
+ if ($fermentable->COARSE_FINE_DIFF)
+ $fermentables .= ',"f_coarse_fine_diff":' . floatval($fermentable->COARSE_FINE_DIFF);
+ else
+ $fermentables .= ',"f_coarse_fine_diff":0';
+ if ($fermentable->MOISTURE)
+ $fmoisture = floatval($fermentable->MOISTURE);
+ else
+ $fmoisture = 0;
+ $fermentables .= ',"f_moisture":' . $fmoisture;
+ if ($fermentable->DIASTATIC_POWER)
+ $fermentables .= ',"f_diastatic_power":' . floatval($fermentable->DIASTATIC_POWER);
+ else
+ $fermentables .= ',"f_diastatic_power":0';
+ if ($fermentable->PROTEIN)
+ $fermentables .= ',"f_protein":' . floatval($fermentable->PROTEIN);
+ else
+ $fermentables .= ',"f_protein":0';
+ if ($fermentable->MAX_IN_BATCH)
+ $fermentables .= ',"f_max_in_batch":' . floatval($fermentable->MAX_IN_BATCH);
+ else
+ $fermentables .= ',"f_max_in_batch":100.0';
+
+ if ($fermentable->GRAINTYPE == 'Roast')
+ $fermentables .= ',"f_graintype":1';
+ else if ($fermentable->GRAINTYPE == 'Crystal')
+ $fermentables .= ',"f_graintype":2';
+ else if ($fermentable->GRAINTYPE == 'Kilned')
+ $fermentables .= ',"f_graintype":3';
+ else if ($fermentable->GRAINTYPE == 'Sour malt')
+ $fermentables .= ',"f_graintype":4';
+ else if ($fermentable->GRAINTYPE == 'Special')
+ $fermentables .= ',"f_graintype":5';
+ else if ($fermentable->GRAINTYPE == 'No malt')
+ $fermentables .= ',"f_graintype":6';
+ else
+ $fermentables .= ',"f_graintype":0'; // Base, default
+
+ if ($fermentable->ADDED == 'Boil')
+ $fermentables .= ',"f_added":1';
+ else if ($fermentable->ADDED == 'Fermentation')
+ $fermentables .= ',"f_added":2';
+ else if ($fermentable->ADDED == 'Lagering')
+ $fermentables .= ',"f_added":3';
+ else if ($fermentable->ADDED == 'Bottle')
+ $fermentables .= ',"f_added":4';
+ else
+ $fermentables .= ',"f_added":0'; // Mash, default.
+
+ ($fermentable->ADD_AFTER_BOIL== "TRUE") ? $fermentables .= ',"f_add_after_boil":1' : $fermentables .= ',"f_add_after_boil":0';
+ ($fermentable->RECOMMEND_MASH== "TRUE") ? $fermentables .= ',"f_recommend_mash":1' : $fermentables .= ',"f_recommend_mash":0';
+ if ($fermentable->DISSOLVED_PROTEIN)
+ $fermentables .= ',"f_dissolved_protein":' . floatval($fermentable->DISSOLVED_PROTEIN);
+ else
+ $fermentables .= ',"f_dissolved_protein":0';
+ ($fermentable->ADJUST_TO_TOTAL_100 == "TRUE") ? $fermentables .= ',"f_adjust_to_total_100":1' : $fermentables .= ',"f_adjust_to_total_100":0';
+ $percent = floatval($fermentable->PERCENTAGE);
+ $fermentables .= ',"f_percentage":' . round($percent * 10) / 10.0;
+ if ($fermentable->DI_pH)
+ $fermentables .= ',"f_di_ph":' . floatval($fermentable->DI_pH);
+ else
+ $fermentables .= ',"f_di_ph":0.0';
+ if ($fermentable->{'ACID_TO_pH_5.7'})
+ $fermentables .= ',"f_acid_to_ph_57":' . floatval($fermentable->{'ACID_TO_pH_5.7'});
+ else
+ $fermentables .= ',"f_acid_to_ph_57":0.0';
+ $fermentables .= "}";
+
+ /* Sugars */
+ $d = $famount * ($fyield / 100) * (1 - $fmoisture / 100);
+ if ($fermentable->ADDED == 'Mash')
+ $d = floatval($efficiency) / 100 * $d;
+ $f_sugars += $d;
+ if ($fermentable->GRAINTYPE == 'Crystal')
+ $pCara += $percent;
+ if ($fermentable->TYPE == 'Sugar')
+ $pSugar += $percent;
+ }
+ $fermentables .= ']';
+ return $fermentables;
+}
+
+
+
+function recipe_hops($recipe)
+{
+ global $db;
+
+ $hops = "[";
+ $comma = FALSE;
+ foreach ($recipe->HOPS->HOP as $hop) {
+ if ($comma)
+ $hops .= ',';
+ $comma = TRUE;
+ $hops .= '{"h_name":"' . mysqli_real_escape_string($db, $hop->NAME) . '"';
+ $hops .= ',"h_amount":' . floatval($hop->AMOUNT);
+ $hops .= ',"h_cost":' . floatval($hop->COST);
+
+ if ($hop->TYPE == 'Aroma')
+ $hops .= ',"h_type":1';
+ else if ($hop->TYPE == 'Both')
+ $hops .= ',"h_type":2';
+ else
+ $hops .= ',"h_type":0'; // Default bittering
+
+ if ($hop->FORM == 'Pellet')
+ $hops .= ',"h_form":0';
+ else if ($hop->FORM == 'Plug')
+ $hops .= ',"h_form":1';
+ else
+ $hops .= ',"h_form":2'; // Default.
+
+ if ($hop->USE == 'Mash')
+ $hops .= ',"h_useat":0';
+ else if (($hop->USE == 'First wort') || ($hop->USE == 'First Wort'))
+ $hops .= ',"h_useat":1';
+ else if ($hop->USE == 'Aroma')
+ $hops .= ',"h_useat":3';
+ else if ($hop->USE == 'Whirlpool')
+ $hops .= ',"h_useat":4';
+ else if (($hop->USE == 'Dry hop') || ($hop->USE == 'Dry Hop'))
+ $hops .= ',"h_useat":5';
+ else
+ $hops .= ',"h_useat":2'; // Default boil.
+
+ if ($hop->TIME)
+ $hops .= ',"h_time":' . floatval($hop->TIME);
+ else
+ $hops .= ',"h_time":0';
+ $hops .= ',"h_alpha":' . floatval($hop->ALPHA);
+ $hops .= ',"h_beta":' . floatval($hop->BETA);
+ $hops .= ',"h_hsi":' . floatval($hop->HSI);
+ $hops .= ',"h_humulene":' . floatval($hop->HUMULENE);
+ $hops .= ',"h_caryophyllene":' . floatval($hop->CAROPHYLLENE);
+ $hops .= ',"h_cohumulone":' . floatval($hop->COHUMULONE);
+ $hops .= ',"h_myrcene":' . floatval($hop->MYRCENE);
+ if ($hop->TOTAL_OIL)
+ $hops .= ',"h_total_oil":' . floatval($hop->TOTAL_OIL);
+ else
+ $hops .= ',"h_total_oil":0';
+ if ($hop->ORIGIN)
+ $hops .= ',"h_origin":"' . mysqli_real_escape_string($db, $hop->ORIGIN) . '"';
+ else
+ $hops .= ',"h_origin":""';
+ $hops .= "}";
+ }
+ $hops .= ']';
+ return $hops;
+}
+
+
+
+function recipe_miscs($recipe)
+{
+ global $db;
+
+ $miscs = "[";
+ $comma = FALSE;
+ foreach ($recipe->MISCS->MISC as $misc) {
+ if ($comma)
+ $miscs .= ',';
+ $comma = TRUE;
+ $mname = mysqli_real_escape_string($db, $misc->NAME);
+ $miscs .= '{"m_name":"' . $mname . '"';
+ $miscs .= ',"m_amount":' . floatval($misc->AMOUNT);
+ if ($misc->COST) {
+ $miscs .= ',"m_cost":' . floatval($misc->COST);
+ } else {
+ /* Brouwhulp bug, added water agents have no cost field. */
+ if ($misc->TYPE == "Water agent") {
+ $miscs .= ',"m_cost":'. get_miscs_cost($mname);
+ } else {
+ $miscs .= ',"m_cost":0';
+ }
+ }
+
+ if ($misc->TYPE == 'Spice')
+ $miscs .= ',"m_type":0';
+ else if ($misc->TYPE == 'Herb')
+ $miscs .= ',"m_type":1';
+ else if ($misc->TYPE == 'Flavor')
+ $miscs .= ',"m_type":2';
+ else if ($misc->TYPE == 'Fining')
+ $miscs .= ',"m_type":3';
+ else if (($misc->TYPE == 'Water agent') || ($misc->TYPE == 'Water Agent'))
+ $miscs .= ',"m_type":4';
+ else if ($misc->TYPE == 'Yeast nutrient')
+ $miscs .= ',"m_type":5';
+ else if ($misc->TYPE == 'Other')
+ $miscs .= ',"m_type":6';
+ else
+ echo "Unknown TYPE " . $misc->TYPE . "
";
+
+ if ($misc->USE == 'Starter')
+ $miscs .= ',"m_use_use":0';
+ else if ($misc->USE == 'Mash')
+ $miscs .= ',"m_use_use":1';
+ else if ($misc->USE == 'Primary')
+ $miscs .= ',"m_use_use":3';
+ else if ($misc->USE == 'Secondary')
+ $miscs .= ',"m_use_use":4';
+ else if ($misc->USE == 'Bottling')
+ $miscs .= ',"m_use_use":5';
+ else
+ $miscs .= ',"m_use_use":2'; // Default boil. BrewFather defines 'Sparge', we don't support this even if it's a nice idea.
+
+ ($misc->AMOUNT_IS_WEIGHT== "TRUE") ? $miscs .= ',"m_amount_is_weight":1' : $miscs.= ',"m_amount_is_weight":0';
+ if ($misc->TIME) {
+ $miscs .= ',"m_time":' . floatval($misc->TIME);
+ } else
+ $miscs .= ',"m_time":0';
+ $miscs .= "}";
+ }
+ $miscs .= ']';
+ return $miscs;
+}
+
+
+
+function recipe_yeasts($recipe)
+{
+ global $db;
+ global $svg;
+
+ $yeasts = "[";
+ $comma = FALSE;
+ foreach ($recipe->YEASTS->YEAST as $yeast) {
+ if ($comma)
+ $yeasts .= ',';
+ $comma = TRUE;
+ $yeasts .= '{"y_name":"' . mysqli_real_escape_string($db, $yeast->NAME) . '"';
+ if ($yeast->FORM == "Liquid") {
+ $paks = floatval($yeast->AMOUNT) / 0.0588;
+ $yeasts .= ',"y_amount":' . $paks;
+ $yeasts .= ',"y_cost":' . floatval($yeast->COST);
+ } else {
+ $yeasts .= ',"y_amount":' . floatval($yeast->AMOUNT);
+ $yeasts .= ',"y_cost":' . floatval($yeast->COST) * 1000;
+ }
+
+ $yeasts .= ',"y_laboratory":"' . mysqli_real_escape_string($db, $yeast->LABORATORY) . '"';
+ $yeasts .= ',"y_product_id":"' . mysqli_real_escape_string($db, $yeast->PRODUCT_ID) . '"';
+
+ if ($yeast->TYPE == 'Lager')
+ $yeasts .= ',"y_type":0';
+ else if ($yeast->TYPE == 'Ale')
+ $yeasts .= ',"y_type":1';
+ else if ($yeast->TYPE == 'Wheat')
+ $yeasts .= ',"y_type":2';
+ else if ($yeast->TYPE == 'Wine')
+ $yeasts .= ',"y_type":3';
+ else if ($yeast->TYPE == 'Champagne')
+ $yeasts .= ',"y_type":4';
+ else
+ echo "Unknown TYPE " . $yeast->TYPE . "
";
+
+ if ($yeast->FORM == 'Liquid') {
+ if ($yeast->LABORATORY == 'Imperial Yeast')
+ $yeasts .= ',"y_form":0,"y_cells":200000000000';
+ else
+ $yeasts .= ',"y_form":0,"y_cells":100000000000';
+ } else if ($yeast->FORM == 'Dry')
+ $yeasts .= ',"y_form":1,"y_cells":15000000000';
+ else if ($yeast->FORM == 'Slant')
+ $yeasts .= ',"y_form":2,"y_cells":1700000000';
+ else if ($yeast->FORM == 'Culture')
+ $yeasts .= ',"y_form":3,"y_cells":1700000000';
+ else if ($yeast->FORM == 'Frozen')
+ $yeasts .= ',"y_form":4,"y_cells":1700000000';
+ else if ($yeast->FORM == 'Bottle')
+ $yeasts .= ',"y_form":5,"y_cells":1700000000';
+ else
+ echo "Unknown FORM " . $yeast->FORM . "
";
+
+ if ($yeast->FLOCCULATION == 'Medium')
+ $yeasts .= ',"y_flocculation":1';
+ else if ($yeast->FLOCCULATION == 'High')
+ $yeasts .= ',"y_flocculation":2';
+ else if ($yeast->FLOCCULATION == 'Very high')
+ $yeasts .= ',"y_flocculation":3';
+ else
+ $yeasts .= ',"y_flocculation":0'; // Low, default.
+
+ if ($yeast->PRODUCT_ID=="F2" || $yeast->PRODUCT_ID=="CBC-1") {
+ $yeasts .= ',"y_use":3'; // Bottle
+ } else if ($yeast->ADD_TO_SECONDARY=="TRUE") {
+ $yeasts .= ',"y_use":1'; // Secondary
+ } else {
+ $yeasts .= ',"y_use":0'; // Primary
+ $svg = floatval($yeast->ATTENUATION);
+ }
+ $yeasts .= ',"y_min_temperature":' . floatval($yeast->MIN_TEMPERATURE);
+ $yeasts .= ',"y_max_temperature":' . floatval($yeast->MAX_TEMPERATURE);
+ $yeasts .= ',"y_attenuation":' . floatval($yeast->ATTENUATION);
+ $yeasts .= "}";
+ }
+ $yeasts .= ']';
+ return $yeasts;
+}
+
+
+
+function recipe_waters($recipe, $db)
+{
+ $waters = "";
+ $index = 0;
+ foreach ($recipe->WATERS->WATER as $water) {
+ $index++;
+ $waters .= "', w" . $index . "_name='" . mysqli_real_escape_string($db, $water->NAME);
+ $waters .= "', w" . $index . "_amount='" . floatval($water->AMOUNT);
+ if ($water->CALCIUM)
+ $waters .= "', w" . $index . "_calcium='" . floatval($water->CALCIUM);
+ if ($water->SULFATE)
+ $waters .= "', w" . $index . "_sulfate='" . floatval($water->SULFATE);
+ if ($water->CHLORIDE)
+ $waters .= "', w" . $index . "_chloride='" . floatval($water->CHLORIDE);
+ if ($water->SODIUM)
+ $waters .= "', w" . $index . "_sodium='" . floatval($water->SODIUM);
+ if ($water->MAGNESIUM)
+ $waters .= "', w" . $index . "_magnesium='" . floatval($water->MAGNESIUM);
+ if ($water->PH)
+ $waters .= "', w" . $index . "_ph='" . floatval($water->PH);
+ if ($water->TOTAL_ALKALINITY)
+ $waters .= "', w" . $index . "_total_alkalinity='" . floatval($water->TOTAL_ALKALINITY);
+ if ($water->COST)
+ $waters .= "', w" . $index . "_cost='" . floatval($water->COST);
+ else
+ $waters .= "', w" . $index . "_cost='0";
+ }
+ return $waters;
+}
+
+
+
+function recipe_mash_steps($recipe)
+{
+ global $db;
+
+ $steps = '[';
+ $comma = FALSE;
+ foreach ($recipe->MASH->MASH_STEPS->MASH_STEP as $step) {
+ if ($comma)
+ $steps .= ',';
+ $comma = TRUE;
+ $steps .= '{"step_name":"' . mysqli_real_escape_string($db, $step->NAME) . '"';
+
+ if ($step->TYPE == 'Infusion')
+ $steps .= ',"step_type":0';
+ else if ($step->TYPE == 'Temperature')
+ $steps .= ',"step_type":1';
+ else if ($step->TYPE == 'Decoction')
+ $steps .= ',"step_type":2';
+ else
+ echo "Unknown step TYPE " . $step->TYPE . "
";
+
+ if ($step->INFUSE_AMOUNT)
+ $steps .= ',"step_infuse_amount":' . floatval($step->INFUSE_AMOUNT);
+ else
+ $steps .= ',"step_infuse_amount":0';
+ if ($step->STEP_TEMP)
+ $steps .= ',"step_temp":' . floatval($step->STEP_TEMP);
+ if ($step->STEP_TIME)
+ $steps .= ',"step_time":' . floatval($step->STEP_TIME);
+ if ($step->RAMP_TIME)
+ $steps .= ',"ramp_time":' . floatval($step->RAMP_TIME);
+ if ($step->END_TEMP)
+ $steps .= ',"end_temp":' . floatval($step->END_TEMP);
+ $steps .= "}";
+ }
+ $steps .= ']';
+ return $steps;
+}
+
+
+$imported = 0;
+$recipes = simplexml_load_file($target_file);
+foreach ($recipes->RECIPE as $recipe) {
+ $f_sugars = 0;
+ $efficiency = 75;
+ $batch_size = 20;
+ $boil_size = 22;
+ $pCara = 0;
+ $pSugar = 0;
+ $svg = 77;
+ $colorw = 0;
+ $uuid = str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid'));
+
+ $sql = "INSERT INTO recipes SET uuid='" . $uuid;
+ $sql .= "', name='" . mysqli_real_escape_string($db, $recipe->NAME);
+ $sql .= "', locked='0";
+ if ($recipe->NOTES)
+ $sql .= "', notes='" . mysqli_real_escape_string($db, $recipe->NOTES);
+ else
+ $sql .= "', notes='";
+
+ if ($recipe->TYPE == 'Extract')
+ $sql .= "', type='0";
+ else if ($recipe->TYPE == 'Partial Mash')
+ $sql .= "', type='1";
+ else if ($recipe->TYPE == 'All Grain')
+ $sql .= "', type='2";
+ else
+ echo "Unknown TYPE " . $recipe->TYPE . "
";
+
+ if ($recipe->BATCH_SIZE)
+ $batch_size = floatval($recipe->BATCH_SIZE);
+ $sql .= "', batch_size='" . $batch_size;
+ if ($recipe->BOIL_SIZE)
+ $boil_size = floatval($recipe->BOIL_SIZE);
+ $sql .= "', boil_size='" . $boil_size;
+ if ($recipe->BOIL_TIME)
+ $sql .= "', boil_time='" . floatval($recipe->BOIL_TIME);
+ else
+ $sql .= "', boil_time='90";
+ if ($recipe->EFFICIENCY)
+ $efficiency = floatval($recipe->EFFICIENCY);
+ $sql .= "', efficiency='" . $efficiency;
+
+ $color_method = 0; // Morey
+ if ($recipe->COLOR_METHOD == 'Mosher') {
+ $color_method = 1;
+ } else if ($recipe->COLOR_METHOD == 'Daniels') {
+ $color_method = 2;
+ }
+ $sql .= "', color_method='" . $color_method;;
+
+
+ if ($recipe->IBU)
+ $sql .= "', est_ibu='" . floatval($recipe->IBU);
+ if ($recipe->IBU_METHOD == 'Rager')
+ $sql .= "', ibu_method='1";
+ else if ($recipe->IBU_METHOD == 'Daniels')
+ $sql .= "', ibu_method='2";
+ else
+ $sql .= "', ibu_method='0"; // Tinseth, default
+
+ if ($recipe->CARBONATION)
+ $sql .= "', est_carb='" . floatval($recipe->CARBONATION);
+
+ if ($recipe->STYLE) {
+ $sql .= recipe_style($recipe);
+ }
+ if ($recipe->CALC_ACID) {
+ ($recipe->CALC_ACID == "TRUE") ? $sql .= "', calc_acid='1" : $sql .= "', calc_acid='0";
+ }
+ if ($recipe->TARGET_PH) {
+ $sql .= "', mash_ph='" . floatval($recipe->TARGET_PH);
+ }
+ if ($recipe->SPARGE_ACID_TYPE && ($recipe->SPARGE_ACID_TYPE == "Lactic")) {
+ $sql .= "', sparge_acid_type='0";
+ } else if ($recipe->SPARGE_ACID_TYPE && ($recipe->SPARGE_ACID_TYPE == "Hydrochloric")) {
+ $sql .= "', sparge_acid_type='1";
+ } else if ($recipe->SPARGE_ACID_TYPE && ($recipe->SPARGE_ACID_TYPE == "Phosphoric")) {
+ $sql .= "', sparge_acid_type='2";
+ } else if ($recipe->SPARGE_ACID_TYPE && ($recipe->SPARGE_ACID_TYPE == "Sulfuric")) {
+ $sql .= "', sparge_acid_type='3";
+ }
+ if ($recipe->ACID_SPARGE_PERC) {
+ $sql .= "', sparge_acid_perc='" . floatval($recipe->ACID_SPARGE_PERC);
+ }
+ if ($recipe->LACTIC_SPARGE) {
+ $sql .= "', sparge_acid_amount='" . floatval($recipe->LACTIC_SPARGE);
+ }
+ if ($recipe->VOLUME_HLT) {
+ $sql .= "', sparge_volume='" . floatval($recipe->VOLUME_HLT);
+ }
+ $sql .= "', sparge_source='0";
+
+ /*
+ * Put all ingredients in json arrays
+ */
+ if ($recipe->FERMENTABLES)
+ $sql .= "', json_fermentables='" . recipe_fermentables($recipe);
+ if ($recipe->HOPS)
+ $sql .= "', json_hops='" . recipe_hops($recipe);
+ if ($recipe->MISCS)
+ $sql .= "', json_miscs='" . recipe_miscs($recipe);
+ if ($recipe->YEASTS)
+ $sql .= "', json_yeasts='" . recipe_yeasts($recipe);
+ if ($recipe->WATERS)
+ $sql .= recipe_waters($recipe, $db);
+ if ($recipe->MASH) {
+ $sql .= "',sparge_temp='" . floatval($recipe->MASH->SPARGE_TEMP);
+ $sql .= "',sparge_ph='" . floatval($recipe->MASH->PH);
+ if ($recipe->MASH->NAME)
+ $sql .= "',mash_name='" . mysqli_real_escape_string($db, $recipe->MASH->NAME);
+ if ($recipe->MASH->MASH_STEPS)
+ $sql .= "', json_mashs='" . recipe_mash_steps($recipe);
+ }
+
+ /*
+ * Added the calculated values
+ * OG, FG, color, IBU
+ */
+ $og = estimate_sg($f_sugars, $batch_size);
+ $sql .= "', est_og='" . floatval($og);
+ $fg = estimate_fg($pSugar, $pCara, 0, 0, 0, $svg, $og);
+ $sql .= "', est_fg='" . floatval($fg);
+ $abv = abvol($og, $fg);
+ $sql .= "', est_abv='" . floatval($abv);
+ $color = kw_to_ebc($color_method, $colorw);
+ $sql .= "', est_color='" . floatval($color);
+ $sql .= "';";
+ if (! $result = mysqli_query($db, $sql)) {
+ echo "Fout 6: " . mysqli_error($db) . "
";
+ syslog(LOG_NOTICE, "upl_recipe: result: ".mysqli_error($db));
+ } else {
+ echo "Recept `" . $recipe->NAME . "' toegevoegd
";
+ $lastid = mysqli_insert_id($db);
+ syslog(LOG_NOTICE, "upl_recipe: inserted record ".$lastid);
+ }
+ $imported++;
+}
+if ($imported == 0) {
+ echo "Fout 7: geen recepten in dit bestand.
";
+}
+
+
+// Don't clutter the upload directory.
+unlink($target_file);
+
+?>