www/includes/db_recipes.php

Thu, 27 Sep 2018 23:13:41 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 27 Sep 2018 23:13:41 +0200
changeset 71
e1c50b21b7e3
parent 61
3469979f83be
child 72
93a0be4f5be3
permissions
-rw-r--r--

Added new recipe screens and wizzard.

<?php

require($_SERVER['DOCUMENT_ROOT']."/config.php");
require($_SERVER['DOCUMENT_ROOT']."/version.php");

#Connect to the database
$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME);
if (! $connect) {
	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}

$escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
$replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
$rescapers = array("'");
$rreplacements = array("\\'");
$disallowed = array('visibleindex','uniqueid','boundindex','uid');

// get data and store in a json array
$query = "SELECT * FROM recipes ORDER BY st_guide,st_letter,st_name,name";
if (isset($_POST['insert']) || isset($_POST['update'])) {
	if (isset($_POST['insert'])) {
		// INSERT COMMAND
		$sql  = "INSERT INTO `recipes` SET ";
	}
	if (isset($_POST['update'])) {
		// UPDATE COMMAND
		$sql  = "UPDATE `recipes` SET ";
	}
	// Basic settings
	$sql .=    "st_name='" . mysqli_real_escape_string($connect, $_POST['st_name']);
	$sql .= "', st_letter='" . mysqli_real_escape_string($connect, $_POST['st_letter']);
	$sql .= "', st_guide='" . mysqli_real_escape_string($connect, $_POST['st_guide']);
	// st_category st_category_number st_type
	$sql .= "', st_og_min='" . $_POST['st_og_min'];
	$sql .= "', st_og_max='" . $_POST['st_og_max'];
	$sql .= "', st_fg_min='" . $_POST['st_fg_min'];
	$sql .= "', st_fg_max='" . $_POST['st_fg_max'];
	$sql .= "', st_ibu_min='" . $_POST['st_ibu_min'];
	$sql .= "', st_ibu_max='" . $_POST['st_ibu_max'];
	$sql .= "', st_color_min='" . $_POST['st_color_min'];
	$sql .= "', st_color_max='" . $_POST['st_color_max'];
	$sql .= "', st_carb_min='" . $_POST['st_carb_min'];
	$sql .= "', st_carb_max='" . $_POST['st_carb_max'];
	$sql .= "', st_abv_min='" . $_POST['st_abv_min'];
	$sql .= "', st_abv_max='" . $_POST['st_abv_max'];
	$sql .= "', name='" . mysqli_real_escape_string($connect, $_POST['name']);
	$sql .= "', notes='" . mysqli_real_escape_string($connect, $_POST['notes']);
	$sql .= "', type='" . $_POST['type'];
	$sql .= "', batch_size='" . $_POST['batch_size'];
	$sql .= "', boil_time='" . $_POST['boil_time'];
	$sql .= "', efficiency='" . $_POST['efficiency'];
	$sql .= "', est_og='" . $_POST['est_og'];
	$sql .= "', est_fg='" . $_POST['est_fg'];
	$sql .= "', est_color='" . $_POST['est_color'];
	$sql .= "', color_method='" . $_POST['color_method'];
	$sql .= "', est_ibu='" . $_POST['est_ibu'];
	$sql .= "', ibu_method='" . $_POST['ibu_method'];
	$sql .= "', mash_sparge_temp='" . $_POST['mash_sparge_temp'];
	$sql .= "', mash_ph='" . $_POST['mash_ph'];
	$sql .= "', mash_name='" . $_POST['mash_name'];
	syslog(LOG_NOTICE, $sql);

	if (isset($_POST['fermentables'])) {
		$array = $_POST['fermentables'];
		foreach($array as $key => $item){
			foreach ($disallowed as $disallowed_key) {
				unset($array[$key]["$disallowed_key"]);
			}
		}
		syslog(LOG_NOTICE, "json_fermentables=: ".str_replace($rescapers,$rreplacements,json_encode($array)));
		$sql .= "', json_fermentables='" . str_replace($rescapers,$rreplacements,json_encode($array));
	}

	if (isset($_POST['hops'])) {
		$array = $_POST['hops'];
		foreach($array as $key => $item){
			foreach ($disallowed as $disallowed_key) {
				unset($array[$key]["$disallowed_key"]);
			}
		}
		syslog(LOG_NOTICE, "json_hops: ".str_replace($rescapers,$rreplacements,json_encode($array)));
		$sql .= "', json_hops='" . str_replace($rescapers,$rreplacements,json_encode($array));
	}

	if (isset($_POST['miscs'])) {
		$array = $_POST['miscs'];
		foreach($array as $key => $item){ 
			foreach ($disallowed as $disallowed_key) {
				unset($array[$key]["$disallowed_key"]);
			}
		}
		syslog(LOG_NOTICE, "json_miscs: ".str_replace($rescapers,$rreplacements,json_encode($array)));
		$sql .= "', json_miscs='" . str_replace($rescapers,$rreplacements,json_encode($array));
	}

	if (isset($_POST['yeasts'])) {
		$array = $_POST['yeasts'];
		foreach($array as $key => $item){
			foreach ($disallowed as $disallowed_key) {
				unset($array[$key]["$disallowed_key"]);
			}
		}
		syslog(LOG_NOTICE, "json_yeasts: ". str_replace($rescapers,$rreplacements,json_encode($array)));
		$sql .= "', json_yeasts='" . str_replace($rescapers,$rreplacements,json_encode($array));
	}

	if (isset($_POST['waters'])) {
		$array = $_POST['waters'];
		foreach($array as $key => $item){
			foreach ($disallowed as $disallowed_key) {
				unset($array[$key]["$disallowed_key"]);
			}
		}
		syslog(LOG_NOTICE, "json_waters: ".str_replace($rescapers,$rreplacements,json_encode($array)));
		$sql .= "', json_waters='" . str_replace($rescapers,$rreplacements,json_encode($array));
	}

	if (isset($_POST['mashs'])) {
		$array = $_POST['mashs'];
		foreach($array as $key => $item){
			foreach ($disallowed as $disallowed_key) {
				unset($array[$key]["$disallowed_key"]);
			}
		}
		syslog(LOG_NOTICE, "json_mashs: ".str_replace($rescapers,$rreplacements,json_encode($array)));
		$sql .= "', json_mashs='" . str_replace($rescapers,$rreplacements,json_encode($array));
	}

	if (isset($_POST['insert'])) {
		$sql .= "';";
	}
	if (isset($_POST['update'])) {
		$sql .= "' WHERE record='" . $_POST['record'] . "';";
	}

	$result = mysqli_query($connect, $sql);
	if (! $result) {
		syslog(LOG_NOTICE, "db_recipes: result: ".mysqli_error($connect));
	} else {
		if (isset($_POST['update'])) {
			syslog(LOG_NOTICE, "db_recipes: updated record ".$_POST['record']);
		} else {
			syslog(LOG_NOTICE, "db_recipes: inserted ".$_POST['name']);
		}
	}
	echo $result;

} else if (isset($_POST['delete'])) {
	// DELETE COMMAND
	$sql = "DELETE FROM `recipes` WHERE record='".$_POST['record']."';";
	$result = mysqli_query($connect, $sql);
	if (! $result) {
//		syslog(LOG_NOTICE, "db_recipes: ".$sql." result: ".mysqli_error($connect));
		syslog(LOG_NOTICE, "db_recipes: result: ".mysqli_error($connect));
	} else {
		syslog(LOG_NOTICE, "db_recipes: deleted record ".$_POST['record']);
	}
	echo $result;

} else {
	// SELECT COMMAND
	$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
	$recipes = '[';
	$comma = FALSE;
	while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
		// Manual encode to JSON.
		if ($comma) {
			$recipes .= ',';
		}
		$comma = TRUE;
		$recipes .= '{"record":' . $row['record'];
		$recipes .=  ',"st_guide":"' . str_replace($escapers, $replacements, $row['st_guide']);
		$recipes .= '","st_letter":"' . str_replace($escapers, $replacements, $row['st_letter']);
		$recipes .= '","st_name":"'  . str_replace($escapers, $replacements, $row['st_name']);
		$recipes .= '","st_og_min":' . floatval($row['st_og_min']);
		$recipes .= ',"st_og_max":' . floatval($row['st_og_max']);
		$recipes .= ',"st_fg_min":' . floatval($row['st_fg_min']);
		$recipes .= ',"st_fg_max":' . floatval($row['st_fg_max']);
		$recipes .= ',"st_ibu_min":' . floatval($row['st_ibu_min']);
		$recipes .= ',"st_ibu_max":' . floatval($row['st_ibu_max']);
		$recipes .= ',"st_color_min":' . floatval($row['st_color_min']);
		$recipes .= ',"st_color_max":' . floatval($row['st_color_max']);
		$recipes .= ',"st_carb_min":' . floatval($row['st_carb_min']);
		$recipes .= ',"st_carb_max":' . floatval($row['st_carb_max']);
		$recipes .= ',"st_abv_min":' . floatval($row['st_abv_min']);
		$recipes .= ',"st_abv_max":' . floatval($row['st_abv_max']);
		$recipes .= ',"name":"' . str_replace($escapers, $replacements, $row['name']);
		$recipes .= '","notes":"' . str_replace($escapers, $replacements, $row['notes']);
		$recipes .= '","type":"' . $row['type'];
		$recipes .= '","batch_size":' . floatval($row['batch_size']);
		$recipes .= ',"boil_time":' . floatval($row['boil_time']);
		$recipes .= ',"efficiency":' . floatval($row['efficiency']);
		$recipes .= ',"est_og":' . floatval($row['est_og']);
		$recipes .= ',"est_fg":' . floatval($row['est_fg']);
		$recipes .= ',"est_color":' . floatval($row['est_color']);
		$recipes .= ',"color_method":"' . $row['color_method'];
		$recipes .= '","est_ibu":' . floatval($row['est_ibu']);
		$recipes .= ',"ibu_method":"' . $row['ibu_method'];
		$recipes .= '","mash_sparge_temp":' . $row['mash_sparge_temp'];
		$recipes .= ',"mash_ph":' . $row['mash_ph'];
		$recipes .= ',"mash_name":"' . $row['mash_name'];
		$recipes .= '","fermentables":' . $row['json_fermentables'];
		$recipes .= ',"hops":' . $row['json_hops'];
		$recipes .= ',"miscs":' . $row['json_miscs'];
		$recipes .= ',"yeasts":' . $row['json_yeasts'];
		$recipes .= ',"waters":' . $row['json_waters'];
		$recipes .= ',"mashs":' . $row['json_mashs'];
		$recipes .= '}';
	}
	$recipes .= ']';
	header("Content-type: application/json");
	echo $recipes;
}
?>

mercurial