Roxen.git
/
server
/
etc
/
modules
/
Variable.pmod
/
Schedule.pike
version
»
Context lines:
10
20
40
80
file
none
3
Roxen.git/server/etc/modules/Variable.pmod/Schedule.pike:71:
private mapping next_or_same_day(mapping from, int day, int hour) { if(from->wday==day && from->hour<hour) return from; return next_day(from, day); } private mapping next_day(mapping from, int day) {
-
from->
hour
=
0
;
-
if(
from->
wday<day)
{
-
return
localtime(mktime(from) +
(day
- from->wday)
*3600*24);
+
int num_days = ((6 + day -
from->
wday)
%
7) + 1
;
+
+
// NB: Use a time in the middle of the date to ensure that we
+
// don't miss the next day due to DST or similar.
+
// Adjust the hour back to 00 afterwards.
+
from->
hour
= 12;
+
mapping
m
=
localtime(mktime(from) +
num_days
*
3600
*
24);
+
m->hour = from->hour = 0;
+
return m;
}
-
return localtime(mktime(from) + (7 - from->wday + day)*3600*24);
-
}
+
private mapping next_or_same_time(mapping from, int hour, void|int delta) { if(from->hour==hour) return from; return next_time(from, hour, delta); } private mapping next_time(mapping from, int hour, void|int delta) { if(from->hour<hour) {