コード例 #1
0
function parseFilterToTree($filter)
{
    if (count($filter['terms']) > 0) {
        $postfixExpr = array();
        $postfixStack = array();
        $priorities = array('<' => 1, '<=' => 1, '>' => 1, '>=' => 1, '=' => 2, '!=' => 2, '=~' => 2, '!~' => 2, '=[]' => 2, '![]' => 2, 'and' => 3, 'or' => 4);
        for ($i = 0; $i <= count($filter['terms']); $i++) {
            if (!empty($filter['terms'][$i]['cnj'])) {
                while (true) {
                    if (!count($postfixStack)) {
                        $postfixStack[] = array('type' => "cnj", 'value' => $filter['terms'][$i]['cnj'], 'sqlValue' => $filter['terms'][$i]['cnj']);
                        break;
                    } elseif ($postfixStack[count($postfixStack) - 1]['type'] == 'obr') {
                        $postfixStack[] = array('type' => "cnj", 'value' => $filter['terms'][$i]['cnj'], 'sqlValue' => $filter['terms'][$i]['cnj']);
                        break;
                    } elseif ($priorities[$filter['terms'][$i]['cnj']] < $priorities[$postfixStack[count($postfixStack) - 1]['value']]) {
                        $postfixStack[] = array('type' => "cnj", 'value' => $filter['terms'][$i]['cnj'], 'sqlValue' => $filter['terms'][$i]['cnj']);
                        break;
                    } else {
                        $postfixExpr[] = array_pop($postfixStack);
                    }
                }
            }
            if (!empty($filter['terms'][$i]['obr'])) {
                for ($j = 0; $j < $filter['terms'][$i]['obr']; $j++) {
                    $postfixStack[] = array('type' => "obr", 'value' => $filter['terms'][$i]['obr']);
                }
            }
            if (!empty($filter['terms'][$i]['attr'])) {
                $dtAttr = false;
                switch ($filter['terms'][$i]['attr']) {
                    case 'MonitorName':
                        $sqlValue = 'M.' . preg_replace('/^Monitor/', '', $filter['terms'][$i]['attr']);
                        break;
                    case 'Name':
                        $sqlValue = "E.Name";
                        break;
                    case 'Cause':
                        $sqlValue = "E.Cause";
                        break;
                    case 'DateTime':
                        $sqlValue = "E.StartTime";
                        $dtAttr = true;
                        break;
                    case 'Date':
                        $sqlValue = "to_days( E.StartTime )";
                        $dtAttr = true;
                        break;
                    case 'Time':
                        $sqlValue = "extract( hour_second from E.StartTime )";
                        break;
                    case 'Weekday':
                        $sqlValue = "weekday( E.StartTime )";
                        break;
                    case 'Id':
                    case 'Name':
                    case 'MonitorId':
                    case 'Length':
                    case 'Frames':
                    case 'AlarmFrames':
                    case 'TotScore':
                    case 'AvgScore':
                    case 'MaxScore':
                    case 'Archived':
                        $sqlValue = "E." . $filter['terms'][$i]['attr'];
                        break;
                    case 'DiskPercent':
                        $sqlValue = getDiskPercent();
                        break;
                    case 'DiskBlocks':
                        $sqlValue = getDiskBlocks();
                        break;
                    default:
                        $sqlValue = $filter['terms'][$i]['attr'];
                        break;
                }
                if ($dtAttr) {
                    $postfixExpr[] = array('type' => "attr", 'value' => $filter['terms'][$i]['attr'], 'sqlValue' => $sqlValue, 'dtAttr' => true);
                } else {
                    $postfixExpr[] = array('type' => "attr", 'value' => $filter['terms'][$i]['attr'], 'sqlValue' => $sqlValue);
                }
            }
            if (isset($filter['terms'][$i]['op'])) {
                if (empty($filter['terms'][$i]['op'])) {
                    $filter['terms'][$i]['op'] = '=';
                }
                switch ($filter['terms'][$i]['op']) {
                    case '=':
                    case '!=':
                    case '>=':
                    case '>':
                    case '<':
                    case '<=':
                        $sqlValue = $filter['terms'][$i]['op'];
                        break;
                    case '=~':
                        $sqlValue = "regexp";
                        break;
                    case '!~':
                        $sqlValue = "not regexp";
                        break;
                    case '=[]':
                        $sqlValue = 'in (';
                        break;
                    case '![]':
                        $sqlValue = 'not in (';
                        break;
                }
                while (true) {
                    if (!count($postfixStack)) {
                        $postfixStack[] = array('type' => "op", 'value' => $filter['terms'][$i]['op'], 'sqlValue' => $sqlValue);
                        break;
                    } elseif ($postfixStack[count($postfixStack) - 1]['type'] == 'obr') {
                        $postfixStack[] = array('type' => "op", 'value' => $filter['terms'][$i]['op'], 'sqlValue' => $sqlValue);
                        break;
                    } elseif ($priorities[$filter['terms'][$i]['op']] < $priorities[$postfixStack[count($postfixStack) - 1]['value']]) {
                        $postfixStack[] = array('type' => "op", 'value' => $filter['terms'][$i]['op'], 'sqlValue' => $sqlValue);
                        break;
                    } else {
                        $postfixExpr[] = array_pop($postfixStack);
                    }
                }
            }
            if (isset($filter['terms'][$i]['val'])) {
                $valueList = array();
                foreach (preg_split('/["\'\\s]*?,["\'\\s]*?/', preg_replace('/^["\']+?(.+)["\']+?$/', '$1', $filter['terms'][$i]['val'])) as $value) {
                    switch ($filter['terms'][$i]['attr']) {
                        case 'MonitorName':
                        case 'Name':
                        case 'Cause':
                            $value = "'{$value}'";
                            break;
                        case 'DateTime':
                            $value = "'" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "'";
                            break;
                        case 'Date':
                            $value = "to_days( '" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "' )";
                            break;
                        case 'Time':
                            $value = "extract( hour_second from '" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "' )";
                            break;
                        case 'Weekday':
                            $value = "weekday( '" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "' )";
                            break;
                    }
                    $valueList[] = $value;
                }
                $postfixExpr[] = array('type' => "val", 'value' => $filter['terms'][$i]['val'], 'sqlValue' => join(',', $valueList));
            }
            if (!empty($filter['terms'][$i]['cbr'])) {
                for ($j = 0; $j < $filter['terms'][$i]['cbr']; $j++) {
                    while (count($postfixStack)) {
                        $element = array_pop($postfixStack);
                        if ($element['type'] == "obr") {
                            $postfixExpr[count($postfixExpr) - 1]['bracket'] = true;
                            break;
                        }
                        $postfixExpr[] = $element;
                    }
                }
            }
        }
        while (count($postfixStack)) {
            $postfixExpr[] = array_pop($postfixStack);
        }
        $exprStack = array();
        //foreach ( $postfixExpr as $element )
        //{
        //echo $element['value']." ";
        //}
        //echo "<br>";
        foreach ($postfixExpr as $element) {
            if ($element['type'] == 'attr' || $element['type'] == 'val') {
                $node = array('data' => $element, 'count' => 0);
                $exprStack[] = $node;
            } elseif ($element['type'] == 'op' || $element['type'] == 'cnj') {
                $right = array_pop($exprStack);
                $left = array_pop($exprStack);
                $node = array('data' => $element, 'count' => 2 + $left['count'] + $right['count'], 'right' => $right, 'left' => $left);
                $exprStack[] = $node;
            } else {
                Fatal("Unexpected element type '" . $element['type'] . "', value '" . $element['value'] . "'");
            }
        }
        if (count($exprStack) != 1) {
            Fatal("Expression stack has " . count($exprStack) . " elements");
        }
        $exprTree = array_pop($exprStack);
        return $exprTree;
    }
    return false;
}
コード例 #2
0
ファイル: console.php プロジェクト: kunkku/ZoneMinder
    <div id="header">
      <h3 id="systemTime"><?php 
echo preg_match('/%/', DATE_FMT_CONSOLE_LONG) ? strftime(DATE_FMT_CONSOLE_LONG) : date(DATE_FMT_CONSOLE_LONG);
?>
</h3>
      <h3 id="systemStats"><?php 
echo translate('Load');
?>
: <?php 
echo getLoad();
?>
 / <?php 
echo translate('Disk');
?>
: <?php 
echo getDiskPercent();
?>
%</h3>
      <h2 id="title"><a href="http://www.zoneminder.com" target="ZoneMinder">ZoneMinder</a> <?php 
echo translate('Console');
?>
 - <?php 
echo makePopupLink('?view=state', 'zmState', 'state', $status, canEdit('System'));
?>
 - <?php 
echo $run_state;
?>
 <?php 
echo makePopupLink('?view=version', 'zmVersion', 'version', '<span class="' . $versionClass . '">v' . ZM_VERSION . '</span>', canEdit('System'));
?>
</h2>
コード例 #3
0
ファイル: admin.php プロジェクト: OverByThere/modern
      </div>
    </div>
  </div> <!-- end container -->

  <script>
    var data = [
      {
        value: <?php 
echo getDiskPercent();
?>
,
        color:"#D2322D"
      },
      {
        value : <?php 
echo 100 - getDiskPercent();
?>
,
        color : "#47A447"
      }
    ];
    var ctx = document.getElementById("disk-usage-chart").getContext("2d");
    new Chart(ctx).Pie(data);
  </script>

  <script>

    <?php 
//$query = "SELECT Date(StartTime) AS Date, MonitorId, COUNT(Id) AS NumberOfEvents FROM Events WHERE DATE(StartTime)>=DATE(NOW() - INTERVAL 7 DAY) GROUP BY MonitorId, DAY(StartTime)";
$query = "SELECT Date(StartTime) AS Date, Events.MonitorId, Monitors.WebColour, COUNT(Events.Id) AS NumberOfEvents FROM Events, Monitors WHERE Events.MonitorId=Monitors.Id AND DATE(StartTime)>=DATE(NOW() - INTERVAL 7 DAY) GROUP BY MonitorId, DAY(StartTime)";
$response = dbFetchAll($query);
コード例 #4
0
ファイル: functions.php プロジェクト: schrorg/ZoneMinder
function parseFilter(&$filter, $saveToSession = false, $querySep = '&amp;')
{
    $filter['query'] = '';
    $filter['sql'] = '';
    $filter['fields'] = '';
    if (isset($filter['terms']) && count($filter['terms'])) {
        for ($i = 0; $i < count($filter['terms']); $i++) {
            if (isset($filter['terms'][$i]['cnj'])) {
                $filter['query'] .= $querySep . "filter[terms][{$i}][cnj]=" . urlencode($filter['terms'][$i]['cnj']);
                $filter['sql'] .= " " . $filter['terms'][$i]['cnj'] . " ";
                $filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][{$i}][cnj]\" value=\"" . htmlspecialchars($filter['terms'][$i]['cnj']) . "\"/>\n";
            }
            if (isset($filter['terms'][$i]['obr'])) {
                $filter['query'] .= $querySep . "filter[terms][{$i}][obr]=" . urlencode($filter['terms'][$i]['obr']);
                $filter['sql'] .= " " . str_repeat("(", $filter['terms'][$i]['obr']) . " ";
                $filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][{$i}][obr]\" value=\"" . htmlspecialchars($filter['terms'][$i]['obr']) . "\"/>\n";
            }
            if (isset($filter['terms'][$i]['attr'])) {
                $filter['query'] .= $querySep . "filter[terms][{$i}][attr]=" . urlencode($filter['terms'][$i]['attr']);
                $filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][{$i}][attr]\" value=\"" . htmlspecialchars($filter['terms'][$i]['attr']) . "\"/>\n";
                switch ($filter['terms'][$i]['attr']) {
                    case 'MonitorName':
                        $filter['sql'] .= 'M.' . preg_replace('/^Monitor/', '', $filter['terms'][$i]['attr']);
                        break;
                    case 'DateTime':
                        $filter['sql'] .= "E.StartTime";
                        break;
                    case 'Date':
                        $filter['sql'] .= "to_days( E.StartTime )";
                        break;
                    case 'Time':
                        $filter['sql'] .= "extract( hour_second from E.StartTime )";
                        break;
                    case 'Weekday':
                        $filter['sql'] .= "weekday( E.StartTime )";
                        break;
                    case 'Id':
                    case 'Name':
                    case 'MonitorId':
                    case 'Length':
                    case 'Frames':
                    case 'AlarmFrames':
                    case 'TotScore':
                    case 'AvgScore':
                    case 'MaxScore':
                    case 'Cause':
                    case 'Notes':
                    case 'Archived':
                        $filter['sql'] .= 'E.' . $filter['terms'][$i]['attr'];
                        break;
                    case 'DiskPercent':
                        $filter['sql'] .= getDiskPercent();
                        break;
                    case 'DiskBlocks':
                        $filter['sql'] .= getDiskBlocks();
                        break;
                    case 'SystemLoad':
                        $filter['sql'] .= getLoad();
                        break;
                }
                $valueList = array();
                foreach (preg_split('/["\'\\s]*?,["\'\\s]*?/', preg_replace('/^["\']+?(.+)["\']+?$/', '$1', $filter['terms'][$i]['val'])) as $value) {
                    switch ($filter['terms'][$i]['attr']) {
                        case 'MonitorName':
                        case 'Name':
                        case 'Cause':
                        case 'Notes':
                            $value = dbEscape($value);
                            break;
                        case 'DateTime':
                            $value = "'" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "'";
                            break;
                        case 'Date':
                            $value = "to_days( '" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "' )";
                            break;
                        case 'Time':
                            $value = "extract( hour_second from '" . strftime(STRF_FMT_DATETIME_DB, strtotime($value)) . "' )";
                            break;
                        default:
                            $value = dbEscape($value);
                            break;
                    }
                    $valueList[] = $value;
                }
                switch ($filter['terms'][$i]['op']) {
                    case '=':
                    case '!=':
                    case '>=':
                    case '>':
                    case '<':
                    case '<=':
                        $filter['sql'] .= " " . $filter['terms'][$i]['op'] . " {$value}";
                        break;
                    case '=~':
                        $filter['sql'] .= " regexp " . $value;
                        break;
                    case '!~':
                        $filter['sql'] .= " not regexp " . $value;
                        break;
                    case '=[]':
                        $filter['sql'] .= " in (" . join(",", $valueList) . ")";
                        break;
                    case '![]':
                        $filter['sql'] .= " not in (" . join(",", $valueList) . ")";
                        break;
                }
                $filter['query'] .= $querySep . "filter[terms][{$i}][op]=" . urlencode($filter['terms'][$i]['op']);
                $filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][{$i}][op]\" value=\"" . htmlspecialchars($filter['terms'][$i]['op']) . "\"/>\n";
                $filter['query'] .= $querySep . "filter[terms][{$i}][val]=" . urlencode($filter['terms'][$i]['val']);
                $filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][{$i}][val]\" value=\"" . htmlspecialchars($filter['terms'][$i]['val']) . "\"/>\n";
            }
            if (isset($filter['terms'][$i]['cbr'])) {
                $filter['query'] .= $querySep . "filter[terms][{$i}][cbr]=" . urlencode($filter['terms'][$i]['cbr']);
                $filter['sql'] .= " " . str_repeat(")", $filter['terms'][$i]['cbr']) . " ";
                $filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][{$i}][cbr]\" value=\"" . htmlspecialchars($filter['terms'][$i]['cbr']) . "\"/>\n";
            }
        }
        if ($filter['sql']) {
            $filter['sql'] = " and ( " . $filter['sql'] . " )";
        }
        if ($saveToSession) {
            $_SESSION['filter'] = $filter;
        }
    }
}
コード例 #5
0
ファイル: adminnavbar.php プロジェクト: OverByThere/modern
      </li>

      <li><a href="#" id="presetmanagement"><span class="fa fa-list"></span> Presets</a></li>

      <li><a href="?view=events"><span class="fa fa-picture-o"></span> Events</a></li>

      <li><a href="#" id="userlist"><span class="fa fa-users"></span> Users</a></li>

      <li><a href="?skin=classic&amp;view=log" class="init-colorbox"><span class="fa fa-terminal"></span> Log</a></li>

      <li><a href="?skin=classic&amp;view=options" class="init-colorbox"><span class="fa fa-cog"></span> Settings</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">

      <?php 
$diskUsage = getDiskPercent();
$diskColour = "teal";
if ($diskUsage >= 90) {
    $diskColour = "red";
}
?>

      <li class="colour <?php 
echo $diskColour;
?>
"><a href="?view=events"><span class="fa fa-hdd-o"></span> <?php 
echo $diskUsage;
?>
%</a></li>

      <li class="dropdown colour yellow">