Added archive filter.

git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@517 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
stan 2003-04-22 15:47:57 +00:00
parent 435040ad69
commit 46121b4d5d
6 changed files with 18 additions and 3 deletions

View File

@ -5,6 +5,7 @@ alter table Monitors change column Colours Palette tinyint(3) unsigned NOT NULL
update Monitors set Palette = 1 where Palette = 8;
update Monitors set Palette = 4 where Palette = 24;
alter table Zones modify column Type enum('Active','Inclusive','Exclusive','Preclusive','Inactive') not null default 'Active';
alter table Filters add column AutoArchive tinyint unsigned not null default 0 after Query;
-- These are optional, it just seemed a good time...
optimize table Frames;
optimize table Events;

View File

@ -49,6 +49,7 @@ CREATE TABLE Filters (
MonitorId int(10) unsigned NOT NULL default '0',
Name varchar(64) NOT NULL default '',
Query text NOT NULL,
AutoArchive tinyint(3) unsigned NOT NULL default '0',
AutoDelete tinyint(3) unsigned NOT NULL default '0',
AutoUpload tinyint(3) unsigned NOT NULL default '0',
AutoEmail tinyint(3) unsigned NOT NULL default '0',

View File

@ -223,6 +223,7 @@ while( 1 )
foreach my $filter ( @$filters )
{
print( "Checking filter '$filter->{Name}'".
($filter->{AutoArchive}?", archive":"").
($filter->{AutoDelete}?", delete":"").
($filter->{AutoUpload}?", upload":"").
($filter->{AutoEmail}?", email":"").
@ -261,6 +262,14 @@ while( 1 )
uploadArchFile( $filter, $event );
}
if ( $filter->{AutoArchive} )
{
print( "Archiving event $event->{Id}\n" );
# Do it individually to avoid locking up the table for new events
my $sql = "update Events set Archived = 1 where Id = ?";
my $sth = $dbh->prepare_cached( $sql ) or die( "Can't prepare '$sql': ".$dbh->errstr() );
my $res = $sth->execute( $event->{Id} ) or die( "Can't execute: ".$sth->errstr() );
}
if ( $filter->{AutoDelete} )
{
print( "Deleting event $event->{Id}\n" );
@ -290,7 +299,7 @@ sub GetFilters
my $monitor = shift;
my @filters;
my $sql = "select Filters.*,Monitors.Name as MonitorName from Filters inner join Monitors on Filters.MonitorId = Monitors.Id where Monitors.Id = '$monitor' and (AutoDelete = 1 or AutoUpload = 1 or AutoEmail = 1 or AutoMessage = 1) order by Name";
my $sql = "select Filters.*,Monitors.Name as MonitorName from Filters inner join Monitors on Filters.MonitorId = Monitors.Id where Monitors.Id = '$monitor' and (AutoArchive = 1 or AutoDelete = 1 or AutoUpload = 1 or AutoEmail = 1 or AutoMessage = 1) order by Name";
my $sth = $dbh->prepare_cached( $sql ) or die( "Can't prepare '$sql': ".$dbh->errstr() );
my $res = $sth->execute() or die( "Can't execute: ".$sth->errstr() );
FILTER: while( my $filter_data = $sth->fetchrow_hashref() )

View File

@ -331,7 +331,7 @@ if ( $action )
}
$filter_query_string = join( '&', $filter_parms );
//$filter_query_string = serialize( $filter_query );
$sql = "replace into Filters set MonitorId = '$mid', Name = '$filter_name', Query = '$filter_query_string', AutoDelete = '$auto_delete', AutoUpload = '$auto_upload', AutoEmail = '$auto_email', AutoMessage = '$auto_message'";
$sql = "replace into Filters set MonitorId = '$mid', Name = '$filter_name', Query = '$filter_query_string', AutoArchive = '$auto_archive', AutoDelete = '$auto_delete', AutoUpload = '$auto_upload', AutoEmail = '$auto_email', AutoMessage = '$auto_message'";
#echo "<html>$sql</html>";
$result = mysql_query( $sql );
if ( !$result )

View File

@ -152,7 +152,7 @@ $jws = array(
'events' => array( 'w'=>720, 'h'=>480 ),
'event' => array( 'w'=>420, 'h'=>500 ),
'filter' => array( 'w'=>560, 'h'=>250 ),
'filtersave' => array( 'w'=>520, 'h'=>180 ),
'filtersave' => array( 'w'=>520, 'h'=>200 ),
'zones' => array( 'w'=>72, 'h'=>232 ),
'zone' => array( 'w'=>360, 'h'=>480 ),
'video' => array( 'w'=>100, 'h'=>80 ),

View File

@ -1532,6 +1532,10 @@ window.focus();
<td align="right" colspan="2" class="text">&nbsp;</td>
</tr>
<tr>
<td align="left" class="text">Automatically archive all matching events:&nbsp;</td>
<td align="left" class="text"><input type="checkbox" name="auto_archive" value="1"<?php if ( $filter_data[AutoArchive] ) { echo " checked"; } ?>></td>
</tr>
<tr>
<td align="left" class="text">Automatically delete all matching events:&nbsp;</td>
<td align="left" class="text"><input type="checkbox" name="auto_delete" value="1"<?php if ( $filter_data[AutoDelete] ) { echo " checked"; } ?>></td>
</tr>