2008-07-14 21:54:50 +08:00
< ? php
//
2008-07-16 21:21:26 +08:00
// ZoneMinder web event view file, $Date$, $Revision$
2008-07-25 17:48:16 +08:00
// Copyright (C) 2001-2008 Philip Coombes
2008-07-14 21:54:50 +08:00
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
if ( ! canView ( 'Events' ) )
{
2008-09-26 17:47:20 +08:00
$view = " error " ;
2008-07-14 21:54:50 +08:00
return ;
}
2008-09-26 17:47:20 +08:00
$eid = validInt ( $_REQUEST [ 'eid' ] );
$fid = ! empty ( $_REQUEST [ 'fid' ]) ? validInt ( $_REQUEST [ 'fid' ]) : 1 ;
2008-07-14 21:54:50 +08:00
if ( $user [ 'MonitorIds' ] )
$midSql = " and MonitorId in ( " . join ( " , " , preg_split ( '/["\'\s]*,["\'\s]*/' , dbEscape ( $user [ 'MonitorIds' ]) ) ) . " ) " ;
else
$midSql = '' ;
2013-12-18 01:53:15 +08:00
$sql = 'SELECT E.*,M.Name AS MonitorName,M.DefaultRate,M.DefaultScale FROM Events AS E INNER JOIN Monitors AS M ON E.MonitorId = M.Id WHERE E.Id = ?' . $midSql ;
$event = dbFetchOne ( $sql , NULL , array ( $eid ) );
2008-07-14 21:54:50 +08:00
2008-09-26 17:47:20 +08:00
if ( isset ( $_REQUEST [ 'rate' ] ) )
$rate = validInt ( $_REQUEST [ 'rate' ]);
else
$rate = reScale ( RATE_BASE , $event [ 'DefaultRate' ], ZM_WEB_DEFAULT_RATE );
if ( isset ( $_REQUEST [ 'scale' ] ) )
$scale = validInt ( $_REQUEST [ 'scale' ]);
else
$scale = reScale ( SCALE_BASE , $event [ 'DefaultScale' ], ZM_WEB_DEFAULT_SCALE );
2008-07-14 21:54:50 +08:00
$replayModes = array (
'single' => $SLANG [ 'ReplaySingle' ],
'all' => $SLANG [ 'ReplayAll' ],
'gapless' => $SLANG [ 'ReplayGapless' ],
);
2008-09-26 17:47:20 +08:00
if ( isset ( $_REQUEST [ 'streamMode' ] ) )
$streamMode = validHtmlStr ( $_REQUEST [ 'streamMode' ]);
else
$streamMode = canStream () ? 'stream' : 'stills' ;
2008-07-14 21:54:50 +08:00
2008-09-26 17:47:20 +08:00
if ( isset ( $_REQUEST [ 'replayMode' ] ) )
$replayMode = validHtmlStr ( $_REQUEST [ 'replayMode' ]);
2010-11-03 23:49:46 +08:00
if ( isset ( $_COOKIE [ 'replayMode' ]) && preg_match ( '#^[a-z]+$#' , $_COOKIE [ 'replayMode' ]) )
$replayMode = validHtmlStr ( $_COOKIE [ 'replayMode' ]);
2013-10-18 05:02:17 +08:00
else {
$keys = array_keys ( $replayModes );
$replayMode = array_shift ( $keys );
}
2008-07-14 21:54:50 +08:00
parseSort ();
parseFilter ( $_REQUEST [ 'filter' ] );
$filterQuery = $_REQUEST [ 'filter' ][ 'query' ];
$panelSections = 40 ;
2008-09-26 17:47:20 +08:00
$panelSectionWidth = ( int ) ceil ( reScale ( $event [ 'Width' ], $scale ) / $panelSections );
2008-07-14 21:54:50 +08:00
$panelWidth = ( $panelSections * $panelSectionWidth - 1 );
$connkey = generateConnKey ();
$focusWindow = true ;
xhtmlHeaders ( __FILE__ , $SLANG [ 'Event' ] );
?>
< body >
< div id = " page " >
< div id = " content " >
< div id = " dataBar " >
< table id = " dataTable " class = " major " cellspacing = " 0 " >
< tr >
< td >< span id = " dataId " title = " <?= $SLANG['Id'] ?> " >< ? = $event [ 'Id' ] ?> </span></td>
2008-09-26 17:47:20 +08:00
< td >< span id = " dataCause " title = " <?= $event['Notes'] ?validHtmlStr( $event['Notes'] ): $SLANG['AttrCause'] ?> " >< ? = validHtmlStr ( $event [ 'Cause' ]) ?> </span></td>
2008-07-14 21:54:50 +08:00
< td >< span id = " dataTime " title = " <?= $SLANG['Time'] ?> " >< ? = strftime ( STRF_FMT_DATETIME_SHORT , strtotime ( $event [ 'StartTime' ] ) ) ?> </span></td>
< td >< span id = " dataDuration " title = " <?= $SLANG['Duration'] ?> " >< ? = $event [ 'Length' ] ?> </span>s</td>
< td >< span id = " dataFrames " title = " <?= $SLANG['AttrFrames'] . " / " . $SLANG['AttrAlarmFrames'] ?> " >< ? = $event [ 'Frames' ] ?> /<?= $event['AlarmFrames'] ?></span></td>
< td >< span id = " dataScore " title = " <?= $SLANG['AttrTotalScore'] . " / " . $SLANG['AttrAvgScore'] . " / " . $SLANG['AttrMaxScore'] ?> " >< ? = $event [ 'TotScore' ] ?> /<?= $event['AvgScore'] ?>/<?= $event['MaxScore'] ?></span></td>
</ tr >
</ table >
</ div >
< div id = " menuBar1 " >
< div id = " scaleControl " >< label for = " scale " >< ? = $SLANG [ 'Scale' ] ?> </label><?= buildSelect( "scale", $scales, "changeScale();" ); ?></div>
< div id = " replayControl " >< label for = " replayMode " >< ? = $SLANG [ 'Replay' ] ?> </label><?= buildSelect( "replayMode", $replayModes, "changeReplayMode();" ); ?></div>
2008-09-26 17:47:20 +08:00
< div id = " nameControl " >< input type = " text " id = " eventName " name = " eventName " value = " <?= validHtmlStr( $event['Name'] ) ?> " size = " 16 " />< input type = " button " value = " <?= $SLANG['Rename'] ?> " onclick = " renameEvent() " < ? php if ( ! canEdit ( 'Events' ) ) { ?> disabled="disabled"<?php } ?>/></div>
2008-07-14 21:54:50 +08:00
</ div >
< div id = " menuBar2 " >
< div id = " closeWindow " >< a href = " # " onclick = " closeWindow(); " >< ? = $SLANG [ 'Close' ] ?> </a></div>
< ? php
if ( canEdit ( 'Events' ) )
{
?>
< div id = " deleteEvent " >< a href = " # " onclick = " deleteEvent() " >< ? = $SLANG [ 'Delete' ] ?> </a></div>
< div id = " editEvent " >< a href = " # " onclick = " editEvent() " >< ? = $SLANG [ 'Edit' ] ?> </a></div>
< ? php
}
if ( canView ( 'Events' ) )
{
?>
< div id = " exportEvent " >< a href = " # " onclick = " exportEvent() " >< ? = $SLANG [ 'Export' ] ?> </a></div>
< ? php
}
if ( canEdit ( 'Events' ) )
{
?>
< div id = " archiveEvent " class = " hidden " >< a href = " # " onclick = " archiveEvent() " >< ? = $SLANG [ 'Archive' ] ?> </a></div>
< div id = " unarchiveEvent " class = " hidden " >< a href = " # " onclick = " unarchiveEvent() " >< ? = $SLANG [ 'Unarchive' ] ?> </a></div>
< ? php
}
?>
2008-09-26 17:47:20 +08:00
< div id = " framesEvent " >< a href = " # " onclick = " showEventFrames() " >< ? = $SLANG [ 'Frames' ] ?> </a></div>
< div id = " streamEvent " < ? php if ( $streamMode == 'stream' ) { ?> class="hidden"<?php } ?>><a href="#" onclick="showStream()"><?= $SLANG['Stream'] ?></a></div>
< div id = " stillsEvent " < ? php if ( $streamMode == 'still' ) { ?> class="hidden"<?php } ?>><a href="#" onclick="showStills()"><?= $SLANG['Stills'] ?></a></div>
2008-07-14 21:54:50 +08:00
< ? php
2008-07-16 21:21:26 +08:00
if ( ZM_OPT_FFMPEG )
2008-07-14 21:54:50 +08:00
{
?>
< div id = " videoEvent " >< a href = " # " onclick = " videoEvent() " >< ? = $SLANG [ 'Video' ] ?> </a></div>
< ? php
}
?>
</ div >
< div id = " eventStream " >
< div id = " imageFeed " >
< ? php
2010-11-03 23:49:46 +08:00
if ( ZM_WEB_STREAM_METHOD == 'mpeg' && ZM_MPEG_LIVE_FORMAT )
2008-07-14 21:54:50 +08:00
{
2008-09-26 17:47:20 +08:00
$streamSrc = getStreamSrc ( array ( " source=event " , " mode=mpeg " , " event= " . $eid , " frame= " . $fid , " scale= " . $scale , " rate= " . $rate , " bitrate= " . ZM_WEB_VIDEO_BITRATE , " maxfps= " . ZM_WEB_VIDEO_MAXFPS , " format= " . ZM_MPEG_REPLAY_FORMAT , " replay= " . $replayMode ) );
outputVideoStream ( " evtStream " , $streamSrc , reScale ( $event [ 'Width' ], $scale ), reScale ( $event [ 'Height' ], $scale ), ZM_MPEG_LIVE_FORMAT );
2008-07-14 21:54:50 +08:00
}
else
{
2008-09-26 17:47:20 +08:00
$streamSrc = getStreamSrc ( array ( " source=event " , " mode=jpeg " , " event= " . $eid , " frame= " . $fid , " scale= " . $scale , " rate= " . $rate , " maxfps= " . ZM_WEB_VIDEO_MAXFPS , " replay= " . $replayMode ) );
2008-07-14 21:54:50 +08:00
if ( canStreamNative () )
{
2008-09-26 17:47:20 +08:00
outputImageStream ( " evtStream " , $streamSrc , reScale ( $event [ 'Width' ], $scale ), reScale ( $event [ 'Height' ], $scale ), validHtmlStr ( $event [ 'Name' ]) );
2008-07-14 21:54:50 +08:00
}
else
{
2008-09-26 17:47:20 +08:00
outputHelperStream ( " evtStream " , $streamSrc , reScale ( $event [ 'Width' ], $scale ), reScale ( $event [ 'Height' ], $scale ) );
2008-07-14 21:54:50 +08:00
}
}
?>
</ div >
< p id = " dvrControls " >
< input type = " button " value = " <+ " id = " prevBtn " title = " <?= $SLANG['Prev'] ?> " class = " inactive " onclick = " streamPrev( true ) " />
< input type = " button " value = " << " id = " fastRevBtn " title = " <?= $SLANG['Rewind'] ?> " class = " inactive " disabled = " disabled " onclick = " streamFastRev( true ) " />
< input type = " button " value = " < " id = " slowRevBtn " title = " <?= $SLANG['StepBack'] ?> " class = " unavail " disabled = " disabled " onclick = " streamSlowRev( true ) " />
< input type = " button " value = " || " id = " pauseBtn " title = " <?= $SLANG['Pause'] ?> " class = " inactive " onclick = " streamPause( true ) " />
< input type = " button " value = " |> " id = " playBtn " title = " <?= $SLANG['Play'] ?> " class = " active " disabled = " disabled " onclick = " streamPlay( true ) " />
< input type = " button " value = " > " id = " slowFwdBtn " title = " <?= $SLANG['StepForward'] ?> " class = " unavail " disabled = " disabled " onclick = " streamSlowFwd( true ) " />
< input type = " button " value = " >> " id = " fastFwdBtn " title = " <?= $SLANG['FastForward'] ?> " class = " inactive " disabled = " disabled " onclick = " streamFastFwd( true ) " />
< input type = " button " value = " – " id = " zoomOutBtn " title = " <?= $SLANG['ZoomOut'] ?> " class = " avail " onclick = " streamZoomOut() " />
< input type = " button " value = " +> " id = " nextBtn " title = " <?= $SLANG['Next'] ?> " class = " inactive " onclick = " streamNext( true ) " />
</ p >
< div id = " replayStatus " >
< span id = " mode " > Mode : < span id = " modeValue " >& nbsp ; </ span ></ span >
< span id = " rate " > Rate : < span id = " rateValue " ></ span > x </ span >
< span id = " progress " > Progress : < span id = " progressValue " ></ span > s </ span >
< span id = " zoom " > Zoom : < span id = " zoomValue " ></ span > x </ span >
</ div >
< div id = " progressBar " class = " invisible " >
< ? php
for ( $i = 0 ; $i < $panelSections ; $i ++ )
{
?>
< div class = " progressBox " id = " progressBox<?= $i ?> " title = " " ></ div >
< ? php
}
?>
</ div >
</ div >
< div id = " eventStills " class = " hidden " >
< div id = " eventThumbsPanel " >
< div id = " eventThumbs " >
</ div >
</ div >
< div id = " eventImagePanel " class = " hidden " >
< div id = " eventImageFrame " >
< img id = " eventImage " src = " graphics/transparent.gif " alt = " " />
< div id = " eventImageBar " >
2008-09-26 17:47:20 +08:00
< div id = " eventImageClose " >< input type = " button " value = " <?= $SLANG['Close'] ?> " onclick = " hideEventImage() " /></ div >
< div id = " eventImageStats " class = " hidden " >< input type = " button " value = " <?= $SLANG['Stats'] ?> " onclick = " showFrameStats() " /></ div >
2008-07-14 21:54:50 +08:00
< div id = " eventImageData " > Frame < span id = " eventImageNo " ></ span ></ div >
</ div >
</ div >
</ div >
< div id = " eventImageNav " >
< div id = " eventImageButtons " >
< div id = " prevButtonsPanel " >
< input id = " prevEventBtn " type = " button " value = " <E " onclick = " prevEvent() " disabled = " disabled " />
< input id = " prevThumbsBtn " type = " button " value = " << " onclick = " prevThumbs() " disabled = " disabled " />
< input id = " prevImageBtn " type = " button " value = " < " onclick = " prevImage() " disabled = " disabled " />
< input id = " nextImageBtn " type = " button " value = " > " onclick = " nextImage() " disabled = " disabled " />
< input id = " nextThumbsBtn " type = " button " value = " >> " onclick = " nextThumbs() " disabled = " disabled " />
< input id = " nextEventBtn " type = " button " value = " E> " onclick = " nextEvent() " disabled = " disabled " />
</ div >
</ div >
2009-05-08 19:21:28 +08:00
< div id = " thumbsSliderPanel " >
< div id = " thumbsSlider " >
2009-10-17 01:09:16 +08:00
< div id = " thumbsKnob " >
2009-05-08 19:21:28 +08:00
</ div >
2008-07-14 21:54:50 +08:00
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
</ body >
</ html >