diff -r 9c69d43bfb06 -r 1e0192b295b9 www-thermferm/profiles.php --- a/www-thermferm/profiles.php Thu Jan 10 16:33:42 2019 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,596 +0,0 @@ - - * - * This file is part of ThermFerm - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * ThermFerm is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ThermFerm; see the file COPYING. If not, write to the Free - * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - *****************************************************************************/ - -require_once('utilities.php'); -$my_style = 'ui-redmond'; - - -/* - * Each time this page is loaded, get the profiles from the server. - * $arr contains the complete reply of he PROFILE LIST command. - */ -$answer = send_cmd("PROFILE LIST"); -$arr = explode("\r\n", $answer); - - - -if (isset($_GET['action'])) { - switch ($_GET['action']) { - case 'edit': profile_edit(); - break; - case 'esteps': profile_steps(); - break; - default: break; - } -} elseif (isset($_POST['action'])) { - switch ($_POST['action']) { - case 'testdata': testdata(); - break; - case 'teststeps': teststeps(); - break; - default: break; - } -} else { - profile_list(); -} - -exit; - - - -/* - * Profile steps - */ -function profile_steps() -{ - global $arr; - $UUID = $_GET['UUID']; - - /* - * $steps contains all steps of a profile - */ - $steps = array ( - 1 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 2 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 3 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 4 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 5 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 6 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 7 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - 8 => array("steptime" => 0, "resttime" => 0, "target_lo" => 19.8, "target_hi" => 20.2, "fridge_mode" => 0 ), - ); - - $answer = send_cmd("PROFILE GETS ".$UUID); - $psteps = explode("\r\n", $answer); - - if (startsWith($arr[0], "212")) { - $j = 1; - while (1) { - if (strcmp($psteps[$j], ".") == 0) - break; - $f = explode(",", $psteps[$j]); - $steps[$j]["steptime"] = $f[0]; - $steps[$j]["resttime"] = $f[1]; - $steps[$j]["target_lo"] = $f[2]; - $steps[$j]["target_hi"] = $f[3]; - $steps[$j]["fridge_mode"] = $f[4]; - $j++; - } - } - - edit_steps($UUID, $steps, "", "ThermFerm - Edit Profile Steps"); -} - - -function edit_steps($UUID, $steps, $error_message, $heading) -{ - $outstr = build_header($heading); - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.$error_message.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - - for ($i = 1; $i <= 8; $i++) { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } - - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= '
StepSteptimeResttimeTemp lowTemp highFridge mode
Step '.$i.' 0) - $outstr .= ' checked'; - $outstr .= '>
 '; - $outstr .= ''; - $outstr .= ' 
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' The steptime is the time to go from the previous to the target temperature.'.PHP_EOL; - $outstr .= ' The resttime is the time in this step holding the target temperature.'.PHP_EOL; - $outstr .= ' The duration of the step is steptime + resttime.'.PHP_EOL; - $outstr .= ' Steps are valid if the steptime or resttime is greater then zero.'.PHP_EOL; - $outstr .= ' Order is important.'.PHP_EOL; - $outstr .= ' Lines with a zero steptime and zero resttime are ignored.'.PHP_EOL; - $outstr .= ' The step- and resttimes are in hours.'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= build_footer(); - echo $outstr; -} - - - - -/* - * Profile add - * - * @param string $_POST['Name'] The rpofile name - */ -function profile_add() { - - if ($_POST['key'] == 'Add') { - send_cmd("PROFILE ADD ".$_POST['Name']); - } - unset($_POST['UUID']); - unset($_POST['Name']); - unset($_POST['Steps']); - unset($_POST['key']); - unset($_POST['command']); - load('profiles.php'); -} - - - -/* - * Profile update or delete - * - * @param string $_POST['UUID'] The profile UUID - * @param string $_POST['Name'] The profile name - * @param string $_POST['Inittemp_lo'] The profile initial temperature low - * @param string $_POST['Inittemp_hi'] The profile initial temperature high - * @param string $_POST['Fridge_mode'] The profile fridge/beer mode - * @param string $_POST['key'] The button pressed. - */ -function profile_update() { - /* - * Build the update command - */ - if ($_POST['key'] == 'Delete') { - send_cmd("PROFILE DEL ".$_POST['UUID']); - } - - if ($_POST['key'] == 'Save') { - $cmd = array("PROFILE PUT ".$_POST['UUID']); - $cmd[] = "NAME,".$_POST['Name']; - $cmd[] = "INITTEMP_LO,".$_POST['Inittemp_lo']; - $cmd[] = "INITTEMP_HI,".$_POST['Inittemp_hi']; - $cmd[] = "FRIDGE_MODE,".$_POST['Fridge_mode']; - $cmd[] = "."; - send_array($cmd); - } - - unset($_POST['UUID']); - unset($_POST['Name']); - unset($_POST['Inittemp_lo']); - unset($_POST['Inittemp_hi']); - unset($_POST['Fridge_mode']); - unset($_POST['key']); - unset($_POST['command']); - load('profiles.php'); -} - - - -/* - * Test input of a modified or new profile. - * - * @param string $_POST['UUID'] Unique record UUID - * @param int $_POST['steptime'n] Profile steptime - * @param int $_POST['resttime'n] Profile resttime - * @param float $_POST['target_lo'n] Profile target temperature low - * @param float $_POST['target_hi'n] Profile target temperature high - * @param int $_POST['fridge_mode'n] Profile fridge mode - * @param string $_POST['key'] Key choice, Save or Cancel - * - * Return: 0 = Ok - * 1 = Missing data - * 3 = A target temperature out of range - * 99 = Cancel key - */ -function test_thesteps() { - - global $arr; - - for ($i = 1; $i <= 8; $i++) { - if ((! isset($_POST['steptime'.$i])) || (! isset($_POST['resttime'.$i])) || (! isset($_POST['target_lo'.$i])) || (! isset($_POST['target_hi'.$i])) || (! isset($_POST['fridge_mode'.$i]))) - return 1; - if ((strlen($_POST['steptime'.$i]) == 0) || (strlen($_POST['resttime'.$i]) == 0) || (strlen($_POST['target_lo'.$i]) == 0) || (strlen($_POST['target_hi'.$i]) == 0) || (strlen($_POST['fridge_mode'.$i]) == 0)) - return 1; - } - - if (isset($_POST['UUID']) && isset($_POST['key'])) { - - if ($_POST['key'] == 'Cancel') - return 99; - - for ($i = 1; $i <= 8; $i++) { - - if (($_POST['target_lo'.$i] < -5) || ($_POST['target_lo'.$i] > 30)) - return 3; - if (($_POST['target_hi'.$i] < -5) || ($_POST['target_hi'.$i] > 30)) - return 3; - if ($_POST['target_lo'.$i] > $_POST['target_hi'.$i]) - return 3; - } - } else { - return 1; - } - - return 0; -} - - - -/* - * Test result from edit_steps screen and do next action - */ -function teststeps() { - - $result = test_thesteps(); - $error = ''; - - switch ($result) { - case 0: $cmd = array("PROFILE PUTS ".$_POST['UUID']); - for ($i = 1; $i <= 8; $i++) { - if (($_POST['steptime'.$i] > 0) || ($_POST['resttime'.$i] > 0)) { - $cmd[] = $_POST['steptime'.$i].','.$_POST['resttime'.$i].','.$_POST['target_lo'.$i].','.$_POST['target_hi'.$i].','.$_POST['fridge_mode'.$i]; - } - unset($_POST['steptime'.$i]); - unset($_POST['resttime'.$i]); - unset($_POST['target_lo'.$i]); - unset($_POST['target_hi'.$i]); - unset($_POST['fridge_mode'.$i]); - } - $cmd[] = "."; - send_array($cmd); - unset($_POST['UUID']); - unset($_POST['key']); - load('profiles.php'); - return; - break; - case 1: $error = 'Missing data'; - break; - case 2: $error = 'A resttime is shorter then the steptime'; - break; - case 3: $error = 'A target temperature is out of range'; - break; - case 99: - load('profiles.php'); - break; - } - - $steps = array ( - 1 => array("steptime" => $_POST['steptime1'], "resttime" => $_POST['resttime1'], "target_lo" => $_POST['target_lo1'], "target_hi" => $_POST['target_hi1'], "fridge_mode" => $_POST['mode_fridge1'] ), - 2 => array("steptime" => $_POST['steptime2'], "resttime" => $_POST['resttime2'], "target_lo" => $_POST['target_lo2'], "target_hi" => $_POST['target_hi2'], "fridge_mode" => $_POST['mode_fridge2'] ), - 3 => array("steptime" => $_POST['steptime3'], "resttime" => $_POST['resttime3'], "target_lo" => $_POST['target_lo3'], "target_hi" => $_POST['target_hi3'], "fridge_mode" => $_POST['mode_fridge3'] ), - 4 => array("steptime" => $_POST['steptime4'], "resttime" => $_POST['resttime4'], "target_lo" => $_POST['target_lo4'], "target_hi" => $_POST['target_hi4'], "fridge_mode" => $_POST['mode_fridge4'] ), - 5 => array("steptime" => $_POST['steptime5'], "resttime" => $_POST['resttime5'], "target_lo" => $_POST['target_lo5'], "target_hi" => $_POST['target_hi5'], "fridge_mode" => $_POST['mode_fridge5'] ), - 6 => array("steptime" => $_POST['steptime6'], "resttime" => $_POST['resttime6'], "target_lo" => $_POST['target_lo6'], "target_hi" => $_POST['target_hi6'], "fridge_mode" => $_POST['mode_fridge6'] ), - 7 => array("steptime" => $_POST['steptime7'], "resttime" => $_POST['resttime7'], "target_lo" => $_POST['target_lo7'], "target_hi" => $_POST['target_hi7'], "fridge_mode" => $_POST['mode_fridge7'] ), - 8 => array("steptime" => $_POST['steptime8'], "resttime" => $_POST['resttime8'], "target_lo" => $_POST['target_lo8'], "target_hi" => $_POST['target_hi8'], "fridge_mode" => $_POST['mode_fridge8'] ), - ); - - edit_steps($_POST['UUID'], $steps, $error, "ThermFerm - Edit Profile Steps"); -} - - - -/* - * Test input of a modified or new profile. - * - * @param string $_POST['UUID'] Unique record UUID - * @param string $_POST['Name'] Profile name - * @param float $_POST['Inittemp_lo'] Profile initial temperature - * @param float $_POST['Inittemp_hi'] Profile initial temperature - * @param float $_POST['Fridge_mode'] Profile fridge mode - * @param string $_POST['key'] Key choice, Save or Cancel - * @param string $_POST['command'] Command used, 'add' or 'update' - * - * Return: 0 = Ok - * 1 = Missing data - * 2 = Name field too short - * 3 = Name already in use - * 99 = Cancel key - */ -function test_thedata() { - - global $arr; - - if (isset($_POST['UUID']) && isset($_POST['Name']) && isset($_POST['Inittemp_lo']) && isset($_POST['Inittemp_hi']) && isset($_POST['key']) && isset($_POST['command'])) { - - if ($_POST['key'] == 'Cancel') - return 99; - - if (strlen($_POST['Name']) < 2) - return 2; - - if (startsWith($arr[0], "212")) { - $j = 1; - while (1) { - if (strcmp($arr[$j], ".") == 0) - break; - $f = explode(",", $arr[$j]); - if (strcmp($f[0], $_POST['UUID']) && (strcmp($f[1], $_POST['Name']) == 0)) { - return 3; - } - $j++; - } - } - - } else { - return 1; - } - - return 0; -} - - - -/* - * Test result from edit screen and do next action - */ -function testdata() { - - $result = test_thedata(); - $error = ''; - - switch ($result) { - case 0: if ($_POST['command'] == 'add') { - profile_add(); - return; - } else if ($_POST['command'] == 'update') { - profile_update(); - return; - } - break; - case 1: $error = 'Missing data'; - break; - case 2: $error = 'The name is too short'; - break; - case 3: $error = 'The name is already in use, choose another one'; - break; - case 99: - load('profiles.php'); - break; - } - - if ($_POST['command'] == 'add') { - $heading = 'ThermFerm - Add Profile'; - } else { - $heading = 'ThermFerm - Edit Profile'; - } - - edit_screen($_POST['UUID'], $_POST['command'], $heading, $error); -} - - - -/* - * Profiles edit screen. Used by profile_edit(), profile_add() and testdata() - * - * @param string $UUID The record UUID (fixed). - * @param string $Name The Profile Name. - * @param string $command 'add' or 'update' - * @param string $heading Pagina heading title. - * @Param string $error_message Blank or previous error. - */ -function edit_screen($UUID, $command, $heading, $error_message) { - - /* - * Get current profile data - */ - $answer = send_cmd("PROFILE GET ".$UUID); - $reply = explode("\r\n", $answer); - - $outstr = build_header($heading); - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.$error_message.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - - if (startsWith($reply[0], "213")) { - $i = 1; - while (1) { - if (strcmp($reply[$i], ".") == 0) - break; - $f = explode(",", $reply[$i]); - - if ($f[0] == "NAME") { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } - if ($f[0] == "INITTEMP_LO") { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } - if ($f[0] == "INITTEMP_HI") { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } - if ($f[0] == "FRIDGE_MODE") { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } - - $i++; - } - } - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= '
Profile Name
Initial temperature low
Initial temperature high
Fridge mode 0) - $outstr .= " checked"; - $outstr .= '>
'; - $outstr .= ''; - $outstr .= ''; - $outstr .= ''; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= build_footer(); - echo $outstr; -} - - - -/* - * Edit a Profile. Fetches the record data and shows the edit screen. - * - * @param string $_GET['action'] Must be 'edit'. - * @param string $_GET['UUID'] The UUID of the Profile. - */ -function profile_edit() { - if ($_GET['action'] == 'edit') { - edit_screen($_GET['UUID'], 'update', 'ThermFerm - Edit Profile', ''); - return; - } else { - load('profiles.php'); - } -} - - - -/* - * @link Edit profile - * @link Add profile - */ -function profile_list() { - - global $arr; - - $outstr = build_header("ThermFerm - Profiles"); - - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - - if (startsWith($arr[0], "212")) { - $j = 1; - while (1) { - if (strcmp($arr[$j], ".") == 0) - break; - $f = explode(",", $arr[$j]); - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - if ($f[3] == 1) { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } else { - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - } - $outstr .= ' '.PHP_EOL; - $j++; - } - } - - $outstr .= '
UUIDNameStepsEdit
'.$f[0].''.$f[1].''.$f[2].'Busy'.$f[2].'Edit
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= ''; - $outstr .= ''; - $outstr .= ''; - $outstr .= ''; - $outstr .= ''; - $outstr .= ' '.PHP_EOL; - $outstr .= '
Add new profile
Profile Name
'.PHP_EOL; - $outstr .= '
'.PHP_EOL; - - $outstr .= '
'.PHP_EOL; - $outstr .= ' '.PHP_EOL; - $outstr .= build_footer(); - echo $outstr; -} -