'; <?php } } } ?> <?php if (empty($_REQUEST['mid'])) { ?> var monitorNames = new Object(); <?php foreach (dbFetchAll("select Name from Monitors order by Name asc", "Name") as $name) { ?> monitorNames['<?php echo validJsStr($name); ?> '] = true; <?php } } ?> function validateForm( form ) { var errors = new Array(); if ( form.elements['newMonitor[Name]'].value.search( /[^\w-]/ ) >= 0 ) errors[errors.length] = "<?php echo translate('BadNameChars'); ?>
}; <?php } ?> var zone = { 'Name': '<?php echo validJsStr($zone['Name']); ?> ', 'Id': <?php echo validJsStr($zone['Id']); ?> , 'MonitorId': <?php echo validJsStr($zone['MonitorId']); ?> , 'CheckMethod': '<?php echo $zone['CheckMethod']; ?> ', 'AlarmRGB': '<?php echo $zone['AlarmRGB']; ?> ', 'NumCoords': <?php echo $zone['NumCoords']; ?> , 'Coords': '<?php
function collectData() { global $statusData; if (isset($_REQUEST['MainFrameID']) && $_REQUEST['MainFrameID'] == "1") { $statusData["event"]["elements"]["MainFrameID"] = array("sql" => "(select FrameID from Frames where EventId=Events.id order by Score desc,FrameId limit 1)"); $statusData["events"]["elements"]["MainFrameID"] = array("sql" => "(select FrameID from Frames where EventId=Events.id order by Score desc,FrameId limit 1)"); } $entitySpec =& $statusData[strtolower(validJsStr($_REQUEST['entity']))]; #print_r( $entitySpec ); if (!canView($entitySpec['permission'])) { ajaxError('Unrecognised action or insufficient permissions'); } if (!empty($entitySpec['func'])) { $data = eval("return( " . $entitySpec['func'] . " );"); } else { $data = array(); $postFuncs = array(); $fieldSql = array(); $joinSql = array(); $groupSql = array(); $elements =& $entitySpec['elements']; $lc_elements = array_change_key_case($elements); $id = false; if (isset($_REQUEST['id'])) { if (!is_array($_REQUEST['id'])) { $id = array(validJsStr($_REQUEST['id'])); } else { $id = array_values($_REQUEST['id']); } } if (!isset($_REQUEST['element'])) { $_REQUEST['element'] = array_keys($elements); } else { if (!is_array($_REQUEST['element'])) { $_REQUEST['element'] = array(validJsStr($_REQUEST['element'])); } } if (isset($entitySpec['selector'])) { if (!is_array($entitySpec['selector'])) { $entitySpec['selector'] = array($entitySpec['selector']); } foreach ($entitySpec['selector'] as $selector) { if (is_array($selector) && isset($selector['table']) && isset($selector['join'])) { $joinSql[] = "left join " . $selector['table'] . " on " . $selector['join']; } } } foreach ($_REQUEST['element'] as $element) { if (!($elementData = $lc_elements[strtolower($element)])) { ajaxError("Bad " . validJsStr($_REQUEST['entity']) . " element " . $element); } if (isset($elementData['func'])) { $data[$element] = eval("return( " . $elementData['func'] . " );"); } else { if (isset($elementData['postFunc'])) { $postFuncs[$element] = $elementData['postFunc']; } else { if (isset($elementData['zmu'])) { $data[$element] = exec(escapeshellcmd(getZmuCommand(" " . $elementData['zmu']))); } else { if (isset($elementData['sql'])) { $fieldSql[] = $elementData['sql'] . " as " . $element; } else { $fieldSql[] = $element; } if (isset($elementData['table']) && isset($elementData['join'])) { $joinSql[] = "left join " . $elementData['table'] . " on " . $elementData['join']; } if (isset($elementData['group'])) { $groupSql[] = $elementData['group']; } } } } } if (count($fieldSql)) { $sql = "select " . join(", ", $fieldSql) . " from " . $entitySpec['table']; if ($joinSql) { $sql .= " " . join(" ", array_unique($joinSql)); } if ($id && !empty($entitySpec['selector'])) { $index = 0; $where = array(); $values = array(); foreach ($entitySpec['selector'] as $selector) { if (is_array($selector)) { $where[] = $selector['selector'] . ' = ?'; $values[] = validInt($id[$index]); } else { $where[] = $selector . ' = ?'; $values[] = validInt($id[$index]); } $index++; } $sql .= " where " . join(" and ", $where); } if ($groupSql) { $sql .= " group by " . join(",", array_unique($groupSql)); } if (!empty($_REQUEST['sort'])) { $arr = explode(' ', $_REQUEST['sort']); $col = validCol($arr[0]); $dir = ""; if (count($arr) == 2) { if ($arr[1] == "desc") { $dir = $arr[1]; } } $sql .= " order by {$col} {$dir}"; } if (!empty($entitySpec['limit'])) { $limit = $entitySpec['limit']; } elseif (!empty($_REQUEST['count'])) { $limit = validInt($_REQUEST['count']); } $limit_offset = ""; if (!empty($_REQUEST['offset'])) { $limit_offset = validInt($_REQUEST['offset']) . ", "; } if (!empty($limit)) { $sql .= " limit " . $limit_offset . $limit; } if (isset($limit) && $limit == 1) { if ($sqlData = dbFetchOne($sql, NULL, $values)) { foreach ($postFuncs as $element => $func) { $sqlData[$element] = eval('return( ' . $func . '( $sqlData ) );'); } $data = array_merge($data, $sqlData); } } else { $count = 0; foreach (dbFetchAll($sql, NULL, $values) as $sqlData) { foreach ($postFuncs as $element => $func) { $sqlData[$element] = eval('return( ' . $func . '( $sqlData ) );'); } $data[] = $sqlData; if (isset($limi) && ++$count >= $limit) { break; } } } } } #print_r( $data ); return $data; }
var action = '<?php echo isset($_REQUEST['action']) ? validJsStr($_REQUEST['action']) : ''; ?> '; var option = '<?php echo isset($_REQUEST['option']) ? validJsStr($_REQUEST['option']) : ''; ?> ';
var archivedEvents = <?php echo !empty($archived) ? 'true' : 'false'; ?> ; var unarchivedEvents = <?php echo !empty($unarchived) ? 'true' : 'false'; ?> ; var filterQuery = '<?php echo isset($filterQuery) ? validJsStr($filterQuery) : ''; ?> '; var sortQuery = '<?php echo isset($sortQuery) ? validJsStr($sortQuery) : ''; ?> '; var maxWidth = <?php echo $maxWidth ? $maxWidth : 0; ?> ; var maxHeight = <?php echo $maxHeight ? $maxHeight : 0; ?> ; var confirmDeleteEventsString = "<?php echo addslashes($SLANG['ConfirmDeleteEvents']); ?>
var labels = new Array(); <?php foreach ($labels as $index => $label) { ?> labels[<?php echo validInt($index); ?> ] = "<?php echo validJsStr($label); ?> "; <?php }
var currGroup = "<?php echo isset($_REQUEST['group']) ? validJsStr($_REQUEST['group']) : ''; ?> "; var nextMid = "<?php echo isset($nextMid) ? $nextMid : ''; ?> "; var mode = "<?php echo $mode; ?> "; var cycleRefreshTimeout = <?php echo 1000 * ZM_WEB_REFRESH_CYCLE; ?> ;
} ?> var eidParm = '<?php echo join('&', $eidParms); ?> '; <?php } else { ?> var eidParm = 'eid=<?php echo validInt($_REQUEST['eid']); ?> '; <?php } ?> var exportReady = <?php echo !empty($_REQUEST['generated']) ? 'true' : 'false'; ?> ; var exportFile = '<?php echo !empty($_REQUEST['exportFile']) ? validJsStr($_REQUEST['exportFile']) : ''; ?> '; var exportProgressString = '<?php echo addslashes($SLANG['Exporting']); ?> ';
function collectData() { global $statusData; $entitySpec =& $statusData[strtolower(validJsStr($_REQUEST['entity']))]; #print_r( $entitySpec ); if (!canView($entitySpec['permission'])) { ajaxError('Unrecognised action or insufficient permissions'); } if (!empty($entitySpec['func'])) { $data = eval("return( " . $entitySpec['func'] . " );"); } else { $data = array(); $postFuncs = array(); $fieldSql = array(); $joinSql = array(); $groupSql = array(); $elements =& $entitySpec['elements']; $lc_elements = array_change_key_case($elements); $id = false; if (isset($_REQUEST['id'])) { if (!is_array($_REQUEST['id'])) { $id = array(validJsStr($_REQUEST['id'])); } else { $id = array_values($_REQUEST['id']); } } if (!isset($_REQUEST['element'])) { $_REQUEST['element'] = array_keys($elements); } else { if (!is_array($_REQUEST['element'])) { $_REQUEST['element'] = array(validJsStr($_REQUEST['element'])); } } if (isset($entitySpec['selector'])) { if (!is_array($entitySpec['selector'])) { $entitySpec['selector'] = array($entitySpec['selector']); } foreach ($entitySpec['selector'] as $selector) { if (is_array($selector) && isset($selector['table']) && isset($selector['join'])) { $joinSql[] = "left join " . $selector['table'] . " on " . $selector['join']; } } } foreach ($_REQUEST['element'] as $element) { if (!($elementData = $lc_elements[strtolower($element)])) { ajaxError("Bad " . validJsStr($_REQUEST['entity']) . " element " . $element); } if (isset($elementData['func'])) { $data[$element] = eval("return( " . $elementData['func'] . " );"); } else { if (isset($elementData['postFunc'])) { $postFuncs[$element] = $elementData['postFunc']; } else { if (isset($elementData['zmu'])) { $data[$element] = exec(escapeshellcmd(getZmuCommand(" " . $elementData['zmu']))); } else { if (isset($elementData['sql'])) { $fieldSql[] = $elementData['sql'] . " as " . $element; } else { $fieldSql[] = $element; } if (isset($elementData['table']) && isset($elementData['join'])) { $joinSql[] = "left join " . $elementData['table'] . " on " . $elementData['join']; } if (isset($elementData['group'])) { $groupSql[] = $elementData['group']; } } } } } if (count($fieldSql)) { $sql = "select " . join(", ", $fieldSql) . " from " . $entitySpec['table']; if ($joinSql) { $sql .= " " . join(" ", array_unique($joinSql)); } if ($id && !empty($entitySpec['selector'])) { $index = 0; $where = array(); foreach ($entitySpec['selector'] as $selector) { if (is_array($selector)) { $where[] = $selector['selector'] . " = " . dbEscape($id[$index]); } else { $where[] = $selector . " = " . dbEscape($id[$index]); } $index++; } $sql .= " where " . join(" and ", $where); } if ($groupSql) { $sql .= " group by " . join(",", array_unique($groupSql)); } if (!empty($_REQUEST['sort'])) { $sql .= " order by " . dbEscape($_REQUEST['sort']); } if (!empty($entitySpec['limit'])) { $limit = $entitySpec['limit']; } elseif (!empty($_REQUEST['count'])) { $limit = dbEscape($_REQUEST['count']); } if (!empty($limit)) { $sql .= " limit " . $limit; } if (isset($limit) && $limit == 1) { if ($sqlData = dbFetchOne($sql)) { foreach ($postFuncs as $element => $func) { $sqlData[$element] = eval('return( ' . $func . '( $sqlData ) );'); } $data = array_merge($data, $sqlData); } } else { $count = 0; foreach (dbFetchAll($sql) as $sqlData) { foreach ($postFuncs as $element => $func) { $sqlData[$element] = eval('return( ' . $func . '( $sqlData ) );'); } $data[] = $sqlData; if (isset($limi) && ++$count >= $limit) { break; } } } } } #print_r( $data ); return $data; }
var filterQuery = '<?php echo validJsStr($filterQuery); ?> '; var monitorNames = new Object(); <?php foreach ($monitors as $monitor) { if (!empty($monitorIds[$monitor['Id']])) { ?> monitorNames[<?php echo $monitor['Id']; ?> ] = '<?php echo validJsStr($monitor['Name']); ?> '; <?php } } ?> var archivedString = "<?php echo $SLANG['Archived']; ?> ";
function buildControlCommand($monitor) { $ctrlCommand = ZM_PATH_BIN . "/zmcontrol.pl"; if (isset($_REQUEST['xge']) || isset($_REQUEST['yge'])) { $slow = 0.9; // Threshold for slow speed/timeouts $turbo = 0.9; // Threshold for turbo speed if (preg_match('/^([a-z]+)([A-Z][a-z]+)([A-Z][a-z]+)+$/', $_REQUEST['control'], $matches)) { $command = $matches[1]; $mode = $matches[2]; $dirn = $matches[3]; switch ($command) { case 'focus': $factor = $_REQUEST['yge'] / 100; if ($monitor['HasFocusSpeed']) { $speed = intval(round($monitor['MinFocusSpeed'] + ($monitor['MaxFocusSpeed'] - $monitor['MinFocusSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinFocusStep'] + ($monitor['MaxFocusStep'] - $monitor['MinFocusStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; case 'Con': if ($monitor['AutoStopTimeout']) { $slowSpeed = intval(round($monitor['MinFocusSpeed'] + ($monitor['MaxFocusSpeed'] - $monitor['MinFocusSpeed']) * $slow)); if ($speed < $slowSpeed) { $ctrlCommand .= " --autostop"; } } break; } break; case 'zoom': $factor = $_REQUEST['yge'] / 100; if ($monitor['HasZoomSpeed']) { $speed = intval(round($monitor['MinZoomSpeed'] + ($monitor['MaxZoomSpeed'] - $monitor['MinZoomSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinZoomStep'] + ($monitor['MaxZoomStep'] - $monitor['MinZoomStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; case 'Con': if ($monitor['AutoStopTimeout']) { $slowSpeed = intval(round($monitor['MinZoomSpeed'] + ($monitor['MaxZoomSpeed'] - $monitor['MinZoomSpeed']) * $slow)); if ($speed < $slowSpeed) { $ctrlCommand .= " --autostop"; } } break; } break; case 'iris': $factor = $_REQUEST['yge'] / 100; if ($monitor['HasIrisSpeed']) { $speed = intval(round($monitor['MinIrisSpeed'] + ($monitor['MaxIrisSpeed'] - $monitor['MinIrisSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinIrisStep'] + ($monitor['MaxIrisStep'] - $monitor['MinIrisStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; } break; case 'white': $factor = $_REQUEST['yge'] / 100; if ($monitor['HasWhiteSpeed']) { $speed = intval(round($monitor['MinWhiteSpeed'] + ($monitor['MaxWhiteSpeed'] - $monitor['MinWhiteSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinWhiteStep'] + ($monitor['MaxWhiteStep'] - $monitor['MinWhiteStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; } break; case 'gain': $factor = $_REQUEST['yge'] / 100; if ($monitor['HasGainSpeed']) { $speed = intval(round($monitor['MinGainSpeed'] + ($monitor['MaxGainSpeed'] - $monitor['MinGainSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinGainStep'] + ($monitor['MaxGainStep'] - $monitor['MinGainStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; } break; case 'move': $xFactor = empty($_REQUEST['xge']) ? 0 : $_REQUEST['xge'] / 100; $yFactor = empty($_REQUEST['yge']) ? 0 : $_REQUEST['yge'] / 100; if ($monitor['Orientation'] != '0') { $conversions = array('90' => array('Up' => 'Left', 'Down' => 'Right', 'Left' => 'Down', 'Right' => 'Up', 'UpLeft' => 'DownLeft', 'UpRight' => 'UpLeft', 'DownLeft' => 'DownRight', 'DownRight' => 'UpRight'), '180' => array('Up' => 'Down', 'Down' => 'Up', 'Left' => 'Right', 'Right' => 'Left', 'UpLeft' => 'DownRight', 'UpRight' => 'DownLeft', 'DownLeft' => 'UpRight', 'DownRight' => 'UpLeft'), '270' => array('Up' => 'Right', 'Down' => 'Left', 'Left' => 'Up', 'Right' => 'Down', 'UpLeft' => 'UpRight', 'UpRight' => 'DownRight', 'DownLeft' => 'UpLeft', 'DownRight' => 'DownLeft'), 'hori' => array('Up' => 'Up', 'Down' => 'Down', 'Left' => 'Right', 'Right' => 'Left', 'UpLeft' => 'UpRight', 'UpRight' => 'UpLeft', 'DownLeft' => 'DownRight', 'DownRight' => 'DownLeft'), 'vert' => array('Up' => 'Down', 'Down' => 'Up', 'Left' => 'Left', 'Right' => 'Right', 'UpLeft' => 'DownLeft', 'UpRight' => 'DownRight', 'DownLeft' => 'UpLeft', 'DownRight' => 'UpRight')); $new_dirn = $conversions[$monitor['Orientation']][$dirn]; $_REQUEST['control'] = preg_replace("/_{$dirn}\$/", "_{$new_dirn}", $_REQUEST['control']); $dirn = $new_dirn; } if ($monitor['HasPanSpeed'] && $xFactor) { if ($monitor['HasTurboPan']) { if ($xFactor >= $turbo) { $panSpeed = $monitor['TurboPanSpeed']; } else { $xFactor = $xFactor / $turbo; $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } } else { $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } $ctrlCommand .= " --panspeed=" . $panSpeed; } if ($monitor['HasTiltSpeed'] && $yFactor) { if ($monitor['HasTurboTilt']) { if ($yFactor >= $turbo) { $tiltSpeed = $monitor['TurboTiltSpeed']; } else { $yFactor = $yFactor / $turbo; $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } } else { $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } $ctrlCommand .= " --tiltspeed=" . $tiltSpeed; } switch ($mode) { case 'Rel': case 'Abs': if (preg_match('/(Left|Right)$/', $dirn)) { $panStep = intval(round($monitor['MinPanStep'] + ($monitor['MaxPanStep'] - $monitor['MinPanStep']) * $xFactor)); $ctrlCommand .= " --panstep=" . $panStep; } if (preg_match('/^(Up|Down)/', $dirn)) { $tiltStep = intval(round($monitor['MinTiltStep'] + ($monitor['MaxTiltStep'] - $monitor['MinTiltStep']) * $yFactor)); $ctrlCommand .= " --tiltstep=" . $tiltStep; } break; case 'Con': if ($monitor['AutoStopTimeout']) { $slowPanSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $slow)); $slowTiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $slow)); if ((!isset($panSpeed) || $panSpeed < $slowPanSpeed) && (!isset($tiltSpeed) || $tiltSpeed < $slowTiltSpeed)) { $ctrlCommand .= " --autostop"; } } break; } } } } elseif (isset($_REQUEST['x']) && isset($_REQUEST['y'])) { if ($_REQUEST['control'] == "moveMap") { $x = deScale($_REQUEST['x'], $_REQUEST['scale']); $y = deScale($_REQUEST['y'], $_REQUEST['scale']); switch ($monitor['Orientation']) { case '0': case '180': case 'hori': case 'vert': $width = $monitor['Width']; $height = $monitor['Height']; break; case '90': case '270': $width = $monitor['Height']; $height = $monitor['Width']; break; } switch ($monitor['Orientation']) { case '90': $tempY = $y; $y = $height - $x; $x = $tempY; break; case '180': $x = $width - $x; $y = $height - $y; break; case '270': $tempX = $x; $x = $width - $y; $y = $tempX; break; case 'hori': $x = $width - $x; break; case 'vert': $y = $height - $y; break; } //$ctrlCommand .= " --xcoord=$x --ycoord=$y --width=$width --height=$height"; $ctrlCommand .= " --xcoord={$x} --ycoord={$y}"; } elseif ($_REQUEST['control'] == "movePseudoMap") { $x = deScale($_REQUEST['x'], $_REQUEST['scale']); $y = deScale($_REQUEST['y'], $_REQUEST['scale']); $halfWidth = $monitor['Width'] / 2; $halfHeight = $monitor['Height'] / 2; $xFactor = ($x - $halfWidth) / $halfWidth; $yFactor = ($y - $halfHeight) / $halfHeight; switch ($monitor['Orientation']) { case '90': $tempYFactor = $y; $yFactor = -$xFactor; $xFactor = $tempYFactor; break; case '180': $xFactor = -$xFactor; $yFactor = -$yFactor; break; case '270': $tempXFactor = $x; $xFactor = -$yFactor; $yFactor = $tempXFactor; break; case 'hori': $xFactor = -$xFactor; break; case 'vert': $yFactor = -$yFactor; break; } $turbo = 0.9; // Threshold for turbo speed $blind = 0.1; // Threshold for blind spot $panControl = ''; $tiltControl = ''; if ($xFactor > $blind) { $panControl = 'Right'; } elseif ($xFactor < -$blind) { $panControl = 'Left'; } if ($yFactor > $blind) { $tiltControl = 'Down'; } elseif ($yFactor < -$blind) { $tiltControl = 'Up'; } $dirn = $tiltControl . $panControl; if (!$dirn) { // No command, probably in blind spot in middle $_REQUEST['control'] = 'null'; return false; } else { $_REQUEST['control'] = 'moveRel' . $dirn; $xFactor = abs($xFactor); $yFactor = abs($yFactor); if ($monitor['HasPanSpeed'] && $xFactor) { if ($monitor['HasTurboPan']) { if ($xFactor >= $turbo) { $panSpeed = $monitor['TurboPanSpeed']; } else { $xFactor = $xFactor / $turbo; $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } } else { $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } } if ($monitor['HasTiltSpeed'] && $yFactor) { if ($monitor['HasTurboTilt']) { if ($yFactor >= $turbo) { $tiltSpeed = $monitor['TurboTiltSpeed']; } else { $yFactor = $yFactor / $turbo; $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } } else { $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } } if (preg_match('/(Left|Right)$/', $dirn)) { $panStep = intval(round($monitor['MinPanStep'] + ($monitor['MaxPanStep'] - $monitor['MinPanStep']) * $xFactor)); $ctrlCommand .= " --panstep=" . $panStep . " --panspeed=" . $panSpeed; } if (preg_match('/^(Up|Down)/', $dirn)) { $tiltStep = intval(round($monitor['MinTiltStep'] + ($monitor['MaxTiltStep'] - $monitor['MinTiltStep']) * $yFactor)); $ctrlCommand .= " --tiltstep=" . $tiltStep . " --tiltspeed=" . $tiltSpeed; } } } elseif ($_REQUEST['control'] == "moveConMap") { $x = deScale($_REQUEST['x'], $_REQUEST['scale']); $y = deScale($_REQUEST['y'], $_REQUEST['scale']); $halfWidth = $monitor['Width'] / 2; $halfHeight = $monitor['Height'] / 2; $xFactor = ($x - $halfWidth) / $halfWidth; $yFactor = ($y - $halfHeight) / $halfHeight; switch ($monitor['Orientation']) { case '90': $tempYFactor = $y; $yFactor = -$xFactor; $xFactor = $tempYFactor; break; case '180': $xFactor = -$xFactor; $yFactor = -$yFactor; break; case '270': $tempXFactor = $x; $xFactor = -$yFactor; $yFactor = $tempXFactor; break; case 'hori': $xFactor = -$xFactor; break; case 'vert': $yFactor = -$yFactor; break; } $slow = 0.9; // Threshold for slow speed/timeouts $turbo = 0.9; // Threshold for turbo speed $blind = 0.1; // Threshold for blind spot $panControl = ''; $tiltControl = ''; if ($xFactor > $blind) { $panControl = 'Right'; } elseif ($xFactor < -$blind) { $panControl = 'Left'; } if ($yFactor > $blind) { $tiltControl = 'Down'; } elseif ($yFactor < -$blind) { $tiltControl = 'Up'; } $dirn = $tiltControl . $panControl; if (!$dirn) { // No command, probably in blind spot in middle $_REQUEST['control'] = 'moveStop'; } else { $_REQUEST['control'] = 'moveCon' . $dirn; $xFactor = abs($xFactor); $yFactor = abs($yFactor); if ($monitor['HasPanSpeed'] && $xFactor) { if ($monitor['HasTurboPan']) { if ($xFactor >= $turbo) { $panSpeed = $monitor['TurboPanSpeed']; } else { $xFactor = $xFactor / $turbo; $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } } else { $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } } if ($monitor['HasTiltSpeed'] && $yFactor) { if ($monitor['HasTurboTilt']) { if ($yFactor >= $turbo) { $tiltSpeed = $monitor['TurboTiltSpeed']; } else { $yFactor = $yFactor / $turbo; $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } } else { $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } } if (preg_match('/(Left|Right)$/', $dirn)) { $ctrlCommand .= " --panspeed=" . $panSpeed; } if (preg_match('/^(Up|Down)/', $dirn)) { $ctrlCommand .= " --tiltspeed=" . $tiltSpeed; } if ($monitor['AutoStopTimeout']) { $slowPanSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $slow)); $slowTiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $slow)); if ((!isset($panSpeed) || $panSpeed < $slowPanSpeed) && (!isset($tiltSpeed) || $tiltSpeed < $slowTiltSpeed)) { $ctrlCommand .= " --autostop"; } } } } else { $slow = 0.9; // Threshold for slow speed/timeouts $turbo = 0.9; // Threshold for turbo speed $long_y = 48; $short_x = 32; $short_y = 32; if (preg_match('/^([a-z]+)([A-Z][a-z]+)([A-Z][a-z]+)$/', $_REQUEST['control'], $matches)) { $command = $matches[1]; $mode = $matches[2]; $dirn = $matches[3]; switch ($command) { case 'focus': switch ($dirn) { case 'Near': $factor = ($long_y - ($y + 1)) / $long_y; break; case 'Far': $factor = ($y + 1) / $long_y; break; } if ($monitor['HasFocusSpeed']) { $speed = intval(round($monitor['MinFocusSpeed'] + ($monitor['MaxFocusSpeed'] - $monitor['MinFocusSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinFocusStep'] + ($monitor['MaxFocusStep'] - $monitor['MinFocusStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; case 'Con': if ($monitor['AutoStopTimeout']) { $slowSpeed = intval(round($monitor['MinFocusSpeed'] + ($monitor['MaxFocusSpeed'] - $monitor['MinFocusSpeed']) * $slow)); if ($speed < $slowSpeed) { $ctrlCommand .= " --autostop"; } } break; } break; case 'zoom': switch ($dirn) { case 'Tele': $factor = ($long_y - ($y + 1)) / $long_y; break; case 'Wide': $factor = ($y + 1) / $long_y; break; } if ($monitor['HasZoomSpeed']) { $speed = intval(round($monitor['MinZoomSpeed'] + ($monitor['MaxZoomSpeed'] - $monitor['MinZoomSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinZoomStep'] + ($monitor['MaxZoomStep'] - $monitor['MinZoomStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; case 'Con': if ($monitor['AutoStopTimeout']) { $slowSpeed = intval(round($monitor['MinZoomSpeed'] + ($monitor['MaxZoomSpeed'] - $monitor['MinZoomSpeed']) * $slow)); if ($speed < $slowSpeed) { $ctrlCommand .= " --autostop"; } } break; } break; case 'iris': switch ($dirn) { case 'Open': $factor = ($long_y - ($y + 1)) / $long_y; break; case 'Close': $factor = ($y + 1) / $long_y; break; } if ($monitor['HasIrisSpeed']) { $speed = intval(round($monitor['MinIrisSpeed'] + ($monitor['MaxIrisSpeed'] - $monitor['MinIrisSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinIrisStep'] + ($monitor['MaxIrisStep'] - $monitor['MinIrisStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; } break; case 'white': switch ($dirn) { case 'In': $factor = ($long_y - ($y + 1)) / $long_y; break; case 'Out': $factor = ($y + 1) / $long_y; break; } if ($monitor['HasWhiteSpeed']) { $speed = intval(round($monitor['MinWhiteSpeed'] + ($monitor['MaxWhiteSpeed'] - $monitor['MinWhiteSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinWhiteStep'] + ($monitor['MaxWhiteStep'] - $monitor['MinWhiteStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; } break; case 'gain': switch ($dirn) { case 'Up': $factor = ($long_y - ($y + 1)) / $long_y; break; case 'Down': $factor = ($y + 1) / $long_y; break; } if ($monitor['HasGainSpeed']) { $speed = intval(round($monitor['MinGainSpeed'] + ($monitor['MaxGainSpeed'] - $monitor['MinGainSpeed']) * $factor)); $ctrlCommand .= " --speed=" . $speed; } switch ($mode) { case 'Abs': case 'Rel': $step = intval(round($monitor['MinGainStep'] + ($monitor['MaxGainStep'] - $monitor['MinGainStep']) * $factor)); $ctrlCommand .= " --step=" . $step; break; } break; case 'move': $xFactor = 0; $yFactor = 0; if (preg_match('/^Up/', $dirn)) { $yFactor = ($short_y - ($y + 1)) / $short_y; } elseif (preg_match('/^Down/', $dirn)) { $yFactor = ($y + 1) / $short_y; } if (preg_match('/Left$/', $dirn)) { $xFactor = ($short_x - ($x + 1)) / $short_x; } elseif (preg_match('/Right$/', $dirn)) { $xFactor = ($x + 1) / $short_x; } if ($monitor['Orientation'] != '0') { $conversions = array('90' => array('Up' => 'Left', 'Down' => 'Right', 'Left' => 'Down', 'Right' => 'Up', 'UpLeft' => 'DownLeft', 'UpRight' => 'UpLeft', 'DownLeft' => 'DownRight', 'DownRight' => 'UpRight'), '180' => array('Up' => 'Down', 'Down' => 'Up', 'Left' => 'Right', 'Right' => 'Left', 'UpLeft' => 'DownRight', 'UpRight' => 'DownLeft', 'DownLeft' => 'UpRight', 'DownRight' => 'UpLeft'), '270' => array('Up' => 'Right', 'Down' => 'Left', 'Left' => 'Up', 'Right' => 'Down', 'UpLeft' => 'UpRight', 'UpRight' => 'DownRight', 'DownLeft' => 'UpLeft', 'DownRight' => 'DownLeft'), 'hori' => array('Up' => 'Up', 'Down' => 'Down', 'Left' => 'Right', 'Right' => 'Left', 'UpLeft' => 'UpRight', 'UpRight' => 'UpLeft', 'DownLeft' => 'DownRight', 'DownRight' => 'DownLeft'), 'vert' => array('Up' => 'Down', 'Down' => 'Up', 'Left' => 'Left', 'Right' => 'Right', 'UpLeft' => 'DownLeft', 'UpRight' => 'DownRight', 'DownLeft' => 'UpLeft', 'DownRight' => 'UpRight')); $new_dirn = $conversions[$monitor['Orientation']][$dirn]; $_REQUEST['control'] = preg_replace("/_{$dirn}\$/", "_{$new_dirn}", $_REQUEST['control']); $dirn = $new_dirn; } if ($monitor['HasPanSpeed'] && $xFactor) { if ($monitor['HasTurboPan']) { if ($xFactor >= $turbo) { $panSpeed = $monitor['TurboPanSpeed']; } else { $xFactor = $xFactor / $turbo; $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } } else { $panSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $xFactor)); } $ctrlCommand .= " --panspeed=" . $panSpeed; } if ($monitor['HasTiltSpeed'] && $yFactor) { if ($monitor['HasTurboTilt']) { if ($yFactor >= $turbo) { $tiltSpeed = $monitor['TurboTiltSpeed']; } else { $yFactor = $yFactor / $turbo; $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } } else { $tiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $yFactor)); } $ctrlCommand .= " --tiltspeed=" . $tiltSpeed; } switch ($mode) { case 'Rel': case 'Abs': if (preg_match('/(Left|Right)$/', $dirn)) { $panStep = intval(round($monitor['MinPanStep'] + ($monitor['MaxPanStep'] - $monitor['MinPanStep']) * $xFactor)); $ctrlCommand .= " --panstep=" . $panStep; } if (preg_match('/^(Up|Down)/', $dirn)) { $tiltStep = intval(round($monitor['MinTiltStep'] + ($monitor['MaxTiltStep'] - $monitor['MinTiltStep']) * $yFactor)); $ctrlCommand .= " --tiltstep=" . $tiltStep; } break; case 'Con': if ($monitor['AutoStopTimeout']) { $slowPanSpeed = intval(round($monitor['MinPanSpeed'] + ($monitor['MaxPanSpeed'] - $monitor['MinPanSpeed']) * $slow)); $slowTiltSpeed = intval(round($monitor['MinTiltSpeed'] + ($monitor['MaxTiltSpeed'] - $monitor['MinTiltSpeed']) * $slow)); if ((!isset($panSpeed) || $panSpeed < $slowPanSpeed) && (!isset($tiltSpeed) || $tiltSpeed < $slowTiltSpeed)) { $ctrlCommand .= " --autostop"; } } break; } } } } } else { if (preg_match('/^presetGoto(\\d+)$/', $_REQUEST['control'], $matches)) { $_REQUEST['control'] = 'presetGoto'; $ctrlCommand .= " --preset=" . $matches[1]; } elseif ($_REQUEST['control'] == "presetGoto" && !empty($_REQUEST['preset'])) { $ctrlCommand .= " --preset=" . $_REQUEST['preset']; } elseif ($_REQUEST['control'] == "presetSet") { if (canEdit('Control')) { $preset = validInt($_REQUEST['preset']); $newLabel = validJsStr($_REQUEST['newLabel']); $row = dbFetchOne('SELECT * FROM ControlPresets WHERE MonitorId = ? AND Preset = ?', NULL, array($monitor['Id'], $preset)); if ($newLabel != $row['Label']) { if ($newLabel) { dbQuery('REPLACE INTO ControlPresets ( MonitorId, Preset, Label ) VALUES ( ?, ?, ? )', array($monitor['Id'], $preset, $newLabel)); } else { dbQuery('DELETE FROM ControlPresets WHERE MonitorId = ? AND Preset = ?', array($monitor['Id'], $preset)); } } $ctrlCommand .= " --preset=" . $preset; } $ctrlCommand .= " --preset=" . $preset; } elseif ($_REQUEST['control'] == "moveMap") { $ctrlCommand .= " --xcoord={$x} --ycoord={$y}"; } } $ctrlCommand .= " --command=" . $_REQUEST['control']; return $ctrlCommand; }
<?php define("MSG_TIMEOUT", 2.0); define("MSG_DATA_SIZE", 4 + 256); if (canEdit('Monitors')) { $zmuCommand = getZmuCommand(" -m " . validInt($_REQUEST['id'])); switch (validJsStr($_REQUEST['command'])) { case "disableAlarms": $zmuCommand .= " -n"; break; case "enableAlarms": $zmuCommand .= " -c"; break; case "forceAlarm": $zmuCommand .= " -a"; break; case "cancelForcedAlarm": $zmuCommand .= " -c"; break; default: ajaxError("Unexpected command '" . validJsStr($_REQUEST['command']) . "'"); } ajaxResponse(exec(escapeshellcmd($zmuCommand))); } ajaxError('Unrecognised action or insufficient permissions');