Wed, 20 May 2020 21:49:09 +0200
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_once($_SERVER['DOCUMENT_ROOT'].'/config.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); if (! $link) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } if (! mysqli_set_charset($link, "utf8" )) { echo "error"; return 1; } $result = mysqli_query($link, "SELECT * FROM profile_mash ORDER BY name"); $row = mysqli_fetch_array($result); $mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' ); /* * Create beerxml output */ $xw = xmlwriter_open_memory(); xmlwriter_set_indent($xw, 1); $res = xmlwriter_set_indent_string($xw, ' '); xmlwriter_start_document($xw, '1.0', 'UTF-8'); xmlwriter_start_element($xw, 'MASHS'); while ($row = mysqli_fetch_array($result)) { xmlwriter_start_element($xw, 'MASH'); xmlwriter_start_element($xw, 'VERSION'); xmlwriter_text($xw, '1'); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'NAME'); xmlwriter_text($xw, $row['name']); xmlwriter_end_element($xw); if (strlen($row['notes'])) { xmlwriter_start_element($xw, 'NOTES'); xmlwriter_text($xw, $row['notes']); xmlwriter_end_element($xw); } xmlwriter_start_element($xw, 'MASH_STEPS'); $arr = json_decode($row['steps'], true); foreach($arr as $item) { //foreach element in $arr xmlwriter_start_element($xw, 'MASH_STEP'); xmlwriter_start_element($xw, 'VERSION'); xmlwriter_text($xw, '1'); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'NAME'); xmlwriter_text($xw, $item['step_name']); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'TYPE'); xmlwriter_text($xw, $mashsteptype[$item['step_type']]); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'STEP_TEMP'); xmlwriter_text($xw, sprintf("%.4f",floatval($item['step_temp']))); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'STEP_TIME'); xmlwriter_text($xw, sprintf("%.3f",floatval($item['step_time']))); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'RAMP_TIME'); xmlwriter_text($xw, sprintf("%.3f",floatval($item['ramp_time']))); xmlwriter_end_element($xw); xmlwriter_start_element($xw, 'END_TEMP'); xmlwriter_text($xw, sprintf("%.4f",floatval($item['end_temp']))); xmlwriter_end_element($xw); xmlwriter_end_element($xw); // MASH_STEP } xmlwriter_end_element($xw); // MASH_STEPS xmlwriter_end_element($xw); // MASH } xmlwriter_end_element($xw); // MASHS $beerxml = xmlwriter_output_memory($xw); Header('Content-type: text/xml'); header('Content-Disposition: attachment; filename="mashs.xml"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Pragma: no-cache'); header('Content-Length: '.strlen($beerxml)); exit($beerxml);