]>
git.proxmox.com Git - pmg-api.git/blob - PMG/RuleDB/TimeFrame.pm
1 package PMG
::RuleDB
::TimeFrame
;
10 use PMG
::RuleDB
::Object
;
12 use base
qw(PMG::RuleDB::Object);
27 return 'timeframe.gif';
32 return 'item_timeframe.epl';
37 return 'e.g. 12:00 - 13:00';
41 my ($type, $start, $end, $ogroup) = @_;
43 my $class = ref($type) || $type;
45 my $self = $class->SUPER::new
($class->otype(), $ogroup);
51 my @tmp = split(/:/, $start);
52 $start = $tmp[0]*60+$tmp[1];
56 my @tmp = split(/:/, $end);
57 $end = $tmp[0]*60+$tmp[1];
60 $self->{start
} = $start;
67 my ($type, $ruledb, $id, $ogroup, $value) = @_;
69 my $class = ref($type) || $type;
71 defined($value) || return undef;
73 my ($sh, $sm, $eh, $em) = $value =~ m/(\d+):(\d+)-(\d+):(\d+)/;
75 my $start = $sh*60+$sm;
78 my $obj = $class->new($start, $end, $ogroup);
81 $obj->{digest
} = Digest
::SHA
::sha1_hex
($id, $start, $end, $ogroup);
87 my ($self, $ruledb) = @_;
89 defined($self->{ogroup
}) || return undef;
90 defined($self->{start
}) || return undef;
91 defined($self->{end
}) || return undef;
93 my $v = sprintf ("%d:%d-%d:%d", int ($self->{start
} / 60), int ($self->{start
} % 60),
94 int ($self->{end
} / 60), int ($self->{end
} % 60));
96 if (defined ($self->{id
})) {
100 "UPDATE Object SET Value = ? WHERE ID = ?", undef, $v, $self->{id
});
105 my $sth = $ruledb->{dbh
}->prepare(
106 "INSERT INTO Object " .
107 "(Objectgroup_ID, ObjectType, Value) " .
108 "VALUES (?, ?, ?);");
110 $sth->execute($self->ogroup, $self->otype, $v);
112 $self->{id
} = PMG
::Utils
::lastid
($ruledb->{dbh
}, 'object_id_seq');
121 my ($sec,$min,$hour) = localtime($t);
123 my $amin = $hour*60 + $min;
125 return $amin >= $self->{start
} && $amin <= $self->{end
}
151 my $v = sprintf ("%d:%02d-%d:%02d",
152 int ($self->{start
} / 60),
153 int ($self->{start
} % 60 ),
154 int ($self->{end
} / 60),
155 int ($self->{end
} % 60));
164 =head1 PMG::RuleDB::TimeFrame
166 A WHEN object to check for a specific daytime.
172 Start time im minutes since 00:00.
176 End time im minutes since 00:00.
180 $obj = PMG::RuleDB::TimeFrame->new(8*60+15, 16*60+30);
182 Represent: 8:15 to 16:30