Ejemplo n.º 1
0
';
<?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');
?>
Ejemplo n.º 2
0
};
<?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 
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
var action = '<?php 
echo isset($_REQUEST['action']) ? validJsStr($_REQUEST['action']) : '';
?>
';
var option = '<?php 
echo isset($_REQUEST['option']) ? validJsStr($_REQUEST['option']) : '';
?>
';
Ejemplo n.º 5
0
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']);
?>
Ejemplo n.º 6
0
var labels = new Array();
<?php 
foreach ($labels as $index => $label) {
    ?>
labels[<?php 
    echo validInt($index);
    ?>
] = "<?php 
    echo validJsStr($label);
    ?>
";
<?php 
}
Ejemplo n.º 7
0
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;
?>
;
Ejemplo n.º 8
0
    }
    ?>
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']);
?>
';
Ejemplo n.º 9
0
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;
}
Ejemplo n.º 10
0
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;
}
Ejemplo n.º 12
0
<?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');