3 # Create, update or delete a time range
5 require './itsecur-lib.pl';
6 &can_edit_error("times");
9 @times = &list_times();
11 $time = $times[$in{'idx'}];
16 &error_setup($text{'time_err2'});
17 @rules = &list_rules();
19 &error($text{'time_einuse'})
20 if ($r->{'time'} eq $time->{'name'});
23 # Just delete this time
24 splice(@times, $in{'idx'}, 1);
29 &error_setup($text{'time_err'});
30 $in{'name'} =~ /^\S+$/ || &error($text{'time_ename'});
31 if ($in{'new'} || $in{'name'} ne $time->{'name'}) {
33 ($clash) = grep { lc($_->{'name'}) eq lc($in{'name'}) } @times;
34 $clash && &error($text{'time_eclash'});
36 if (!$in{'hours_def'}) {
37 foreach $t ('from', 'to') {
39 $tm =~ /^(\d+):(\d+)$/ || &error($text{'time_e'.$t});
40 $1 >= 0 && $1 < 24 || &error($text{'time_ehour'.$t});
41 $2 >= 0 && $2 < 60 || &error($text{'time_emin'.$t});
44 if (!$in{'days_def'}) {
45 @days = split(/\0/, $in{'days'});
46 @days || &error($text{'time_edays'});
48 $oldname = $time->{'name'};
49 $time->{'name'} = $in{'name'};
50 $time->{'hours'} = $in{'hours_def'} ? "*" :
51 $in{'from'}."-".$in{'to'};
52 $time->{'days'} = $in{'days_def'} ? "*" :
60 if (!$in{'new'} && $oldname ne $time->{'name'}) {
61 # Has been re-named .. update all rules!
62 @rules = &list_rules();
64 if ($r->{'time'} eq $oldname) {
65 $r->{'time'} = $time->{'name'};
73 &unlock_itsecur_files();
74 &remote_webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "update",
75 "time", $time->{'name'}, $time);
76 &redirect("list_times.cgi");