www/includes/db_profile_fermentation.php

Wed, 20 May 2020 21:49:09 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 20 May 2020 21:49:09 +0200
changeset 684
ccb9f24d0fe9
parent 217
318aab371497
child 716
57118e6a4bdb
permissions
-rw-r--r--

Report any online status change via websocket broadcast. When starting, load all in memory tables sorted. The websocket status on the web pages has it's own panel. Prepared the menu system for dynamic updates.

<?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());
}
mysqli_set_charset($connect, "utf8" );

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

if (isset($_POST['insert']) || isset($_POST['update'])) {
	if (isset($_POST['insert'])) {
		$sql  = "INSERT INTO `profile_fermentation` SET ";
	}
	if (isset($_POST['update'])) {
		$sql  = "UPDATE `profile_fermentation` SET ";
	}

	if (isset($_POST['uuid']) && (strlen($_POST['uuid']) == 36)) {
		$sql .= "uuid='" . $_POST['uuid'];
	} else {
		$uuid = str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid'));
		$sql .= "uuid='" . $uuid;
	}

	$sql .= "', name='" . mysqli_real_escape_string($connect, $_POST['name']);
	$sql .= "', inittemp_lo='" . floatval($_POST['inittemp_lo']);
	$sql .= "', inittemp_hi='" . floatval($_POST['inittemp_hi']);
	($_POST['fridgemode'] == 'true') ? $sql .= "', fridgemode='1" : $sql .= "', fridgemode='0";
	$array = $_POST['steps'];
	// Don't believe given duration and number of steps, recalculate.
	$duration = 0;
	$totalsteps = 0;
	$steps = '[';
	foreach($array as $key => $item) {
		if ($totalsteps > 0)
			$steps.= ',';
		$totalsteps++;
		$duration += $item['steptime'] + $item['resttime'];
		$steps .= '{"name":"' . str_replace($rescapers,$rreplacements,$item['name']);
		$steps .= '","steptime":' . $item['steptime'];
		$steps .= ',"resttime":' . $item['resttime'];
		$steps .= ',"target_lo":' . $item['target_lo'];
		$steps .= ',"target_hi":' . $item['target_hi'];
		$steps .= ',"fridgemode":' . $item['fridgemode'] . '}';
	}
	$steps .= ']';
	$sql .= "', totalsteps='" . $totalsteps;
	$sql .= "', duration='" . $duration;
	syslog(LOG_NOTICE, $steps);
	$sql .= "', steps='" . str_replace($rescapers,$rreplacements,json_encode($array));
	if (isset($_POST['insert'])) {
		$sql .= "';";
	}
	if (isset($_POST['update'])) {
		$sql .= "' WHERE record='" . $_POST['record'] . "';";
	}
	syslog(LOG_NOTICE, $sql);
	$result = mysqli_query($connect, $sql);
	if (! $result) {
		syslog(LOG_NOTICE, "db_profile_fermentation: ".$sql." result: ".mysqli_error($connect));
	} else {
		if (isset($_POST['update'])) {
			syslog(LOG_NOTICE, "db_profile_fermentation: updated record ".$_POST['record']);
		} else {
			$lastid = mysqli_insert_id($connect);
			syslog(LOG_NOTICE, "db_profile_fermentation: inserted record ".$lastid);
		}
	}
	echo $result;

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

} else {
	// SELECT COMMAND
	$query = "SELECT * FROM profile_fermentation ORDER BY name;";
	$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
	$profiles = '[';
	$comma = FALSE;
	while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
		// Manual encode to JSON.
		if ($comma) {
			$profiles .= ',';
		}
		$comma = TRUE;
		$profiles .= '{"record":' . $row['record'];
		$profiles .= ',"uuid":"' . $row['uuid'];
		$profiles .= '","name":"'  . str_replace($escapers, $replacements, $row['name']);
		$profiles .= '","inittemp_lo":' . $row['inittemp_lo'];
		$profiles .= ',"inittemp_hi":' . $row['inittemp_hi'];
		$profiles .= ',"fridgemode":' . $row['fridgemode'];
		$profiles .= ',"totalsteps":' . $row['totalsteps'];
		$profiles .= ',"duration":' . $row['duration'];
		$profiles .= ',"steps":' . $row['steps'];
		$profiles .= '}';
	}
	$profiles .= ']';
//	syslog(LOG_NOTICE, $profiles);
	header("Content-type: application/json");
	echo $profiles;
}
?>

mercurial