array( 'terms' => array( array('attr'=>'StartDateTime', 'op'=>'>=', 'val'=>$minTime, 'obr'=>'1'), array('attr'=>'StartDateTime', 'op'=>'<=', 'val'=>$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['ServerId']) || isset($_SESSION['StorageId']) || isset($_SESSION['Status']) ) ) { # 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); $filterQuery = $filter['query']; Logger::Debug($filterQuery); $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) ) { $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, 'ZeroSize'=>array() ); if ( count($EventsByMonitor[$event['MonitorId']]['Events']) ) { $last_event = end($EventsByMonitor[$event['MonitorId']]['Events']); #Logger::Debug(print_r($last_event,true)); $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; } else if ( ! filesize( $Event->Path().'/'.$Event->DefaultVideo() ) ) { $EventsByMonitor[$event['MonitorId']]['ZeroSize'][] = $Event; } $EventsByMonitor[$event['MonitorId']]['Events'][] = $Event; } # end foreach event ?>