array( 'terms' => array( array('attr' => 'StartDateTime', 'op' => '>=', 'val' => $_REQUEST['minTime'], 'obr' => '1'), array('attr' => 'StartDateTime', 'op' => '<=', 'val' => $_REQUEST['maxTime'], 'cnj' => 'and', 'cbr' => '1'), ) ), ); if ( count($selected_monitor_ids) ) { $filter['Query']['terms'][] = (array('attr' => 'MonitorId', 'op' => 'IN', 'val' => implode(',',$selected_monitor_ids), 'cnj' => 'and')); } else if ( ( $group_id != 0 || isset($_SESSION['ServerFilter']) || isset($_SESSION['StorageFilter']) || isset($_SESSION['StatusFilter']) ) ) { # this should be redundant for ($i=0; $i < count($displayMonitors); $i++) { if ($i == '0') { $filter['Query']['terms'][] = array('attr' => 'MonitorId', 'op' => '=', 'val' => $displayMonitors[$i]['Id'], 'cnj' => 'and', 'obr' => '1'); } else if ($i == (count($displayMonitors)-1)) { $filter['Query']['terms'][] = array('attr' => 'MonitorId', 'op' => '=', 'val' => $displayMonitors[$i]['Id'], 'cnj' => 'or', 'cbr' => '1'); } else { $filter['Query']['terms'][] = array('attr' => 'MonitorId', 'op' => '=', 'val' => $displayMonitors[$i]['Id'], 'cnj' => 'or'); } } } parseFilter( $filter ); # This is to enable the download button session_start(); $_SESSION['montageReviewFilter'] = $filter; session_write_close(); $filterQuery = $filter['query']; } if ( !isset($_REQUEST['minTime']) && !isset($_REQUEST['maxTime']) ) { $time = time(); $maxTime = strftime('%FT%T',$time) - 3600; $minTime = strftime('%FT%T',$time - 2*3600); } if ( isset($_REQUEST['minTime']) ) $minTime = validHtmlStr($_REQUEST['minTime']); if ( isset($_REQUEST['maxTime']) ) $maxTime = validHtmlStr($_REQUEST['maxTime']); $eventsSql = 'SELECT *, UNIX_TIMESTAMP(E.StartTime) AS StartTimeSecs, UNIX_TIMESTAMP(EndTime) AS EndTimeSecs FROM Events AS E WHERE 1 > 0 '; if ( ! empty($user['MonitorIds']) ) { $eventsSql .= ' AND MonitorId IN ('.$user['MonitorIds'].')'; } if ( count($selected_monitor_ids) ) { $eventsSql .= ' AND MonitorId IN (' . implode(',',$selected_monitor_ids).')'; } if ( isset($minTime) && isset($maxTime) ) { $minTimeSecs = strtotime($minTime); $maxTimeSecs = strtotime($maxTime); $eventsSql .= " AND EndTime > '" . $minTime . "' AND StartTime < '" . $maxTime . "'"; } $eventsSql .= ' ORDER BY Id ASC'; $result = dbQuery( $eventsSql ); if ( ! $result ) { Fatal('SQL-ERR'); return; } $EventsByMonitor = array(); while( $event = $result->fetch(PDO::FETCH_ASSOC) ) { $Event = new Event($event); if ( ! isset($EventsByMonitor[$event['MonitorId']]) ) $EventsByMonitor[$event['MonitorId']] = array( 'Events'=>array(), 'MinGap'=>0, 'MaxGap'=>0, 'FileMissing'=>0, ); if ( count($EventsByMonitor[$event['MonitorId']]['Events']) ) { $last_event = end($EventsByMonitor[$event['MonitorId']]['Events']); $gap = $last_event->EndTimeSecs() - $event['StartTimeSecs']; if ( $gap < $EventsByMonitor[$event['MonitorId']]['MinGap'] ) $EventsByMonitor[$event['MonitorId']]['MinGap'] = $gap; if ( $gap > $EventsByMonitor[$event['MonitorId']]['MaxGap'] ) $EventsByMonitor[$event['MonitorId']]['MaxGap'] = $gap; } # end if has previous events if ( ! file_exists( $Event->Path().'/'.$Event->DefaultVideo() ) ) { $EventsByMonitor[$event['MonitorId']]['FileMissing'] += 1; } $EventsByMonitor[$event['MonitorId']]['Events'][] = $Event; } # end foreach event ?>