function monitor_controller() { global $mysqli, $redis, $session, $route, $feed_settings, $user; $result = false; if (!isset($session['read'])) { return array('content' => $result); } include "Modules/feed/feed_model.php"; $feed = new Feed($mysqli, $redis, $feed_settings); require "Modules/input/input_model.php"; // 295 $input = new Input($mysqli, $redis, $feed); require "Modules/input/process_model.php"; // 886 //$process = new Process($mysqli,$input,$feed,$user->get_timezone($session['userid'])); $process = new Process($mysqli, $input, $feed); $process->set_timezone_offset($user->get_timezone($session['userid'])); include "Modules/monitor/monitor_model.php"; $monitor = new Monitor($mysqli, $redis, $process); if ($route->format == 'html') { if ($route->action == "list" && $session['write']) { $result = view("Modules/monitor/monitor_view.php", array()); } if ($route->action == "api" && $session['write']) { $result = view("Modules/monitor/monitor_api.php", array()); } } if ($route->format == 'json') { if ($route->action == 'set' && $session['write']) { $data = explode(",", get('data')); for ($i = 0; $i < count($data); $i++) { $data[$i] = (int) $data[$i]; } $result = $monitor->set($session['userid'], get('monitorid'), get('time'), $data); } if ($route->action == 'multiple' && $session['write']) { $data = json_decode(prop('data')); $len = count($data); if ($len > 0 && isset($data[$len - 1][0])) { // Sent at mode: input/bulk.json?data=[[45,16,1137],[50,17,1437,3164],[55,19,1412,3077]]&sentat=60 if (isset($_GET['sentat'])) { $time_ref = time() - (int) $_GET['sentat']; } elseif (isset($_POST['sentat'])) { $time_ref = time() - (int) $_POST['sentat']; } elseif (isset($_GET['offset'])) { $time_ref = time() - (int) $_GET['offset']; } elseif (isset($_POST['offset'])) { $time_ref = time() - (int) $_POST['offset']; } elseif (isset($_GET['time'])) { $time_ref = (int) $_GET['time']; } elseif (isset($_POST['time'])) { $time_ref = (int) $_POST['time']; } else { $time_ref = time() - (int) $data[$len - 1][0]; } foreach ($data as $item) { if (count($item) > 2) { // check for correct time format $itemtime = (int) $item[0]; $time = $time_ref + (int) $itemtime; $monitorid = $item[1]; $bytevalues = array(); for ($i = 2; $i < count($item); $i++) { $bytevalues[] = (int) $item[$i]; } $result = $monitor->set($session['userid'], $monitorid, $time, $bytevalues); } } } } if ($route->action == 'setdecoder' && $session['write']) { $result = $monitor->set_decoder($session['userid'], get('monitorid'), get('decoder')); } if ($route->action == 'getall' && $session['write']) { $result = $monitor->get_all($session['userid']); } } /* // Sent at mode: data= [[45,16,1137]] &sentat=60 // Offset mode: data= [[-10,16,1137]] &offset=-10 // Time mode: data= [[-10,16,1137]] &time=1387729425 // Legacy mode: data= [[0,16,1137]] // Sent at mode: data= [[45,16,1137],[50,17,1437,3164],[55,19,1412,3077]] &sentat=60 // Offset mode: data= [[-10,16,1137],[-8,17,1437,3164],[-6,19,1412,3077]] &offset=-10 // Time mode: data= [[-10,16,1137],[-8,17,1437,3164],[-6,19,1412,3077]] &time=1387729425 // Legacy mode: data= [[0,16,1137],[2,17,1437,3164],[4,19,1412,3077]] */ return array('content' => $result); }