From c8b499b496ea6f1c6a40dabc675641417e91729d Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Sat, 1 Jan 2011 23:18:01 +0100 Subject: [PATCH] Fix running weekly task if last run was in the year before the next run. --- framework/LoginTasks/lib/Horde/LoginTasks.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/framework/LoginTasks/lib/Horde/LoginTasks.php b/framework/LoginTasks/lib/Horde/LoginTasks.php index 17f0d636e..1836b9b85 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks.php @@ -124,15 +124,22 @@ class Horde_LoginTasks break; case self::MONTHLY: - $addtask = (($cur_date['year'] > $lastrun['year']) || ($cur_date['mon'] > $lastrun['mon'])); + $addtask = (($cur_date['year'] > $lastrun['year']) || + ($cur_date['mon'] > $lastrun['mon'])); break; case self::WEEKLY: - $addtask = (($cur_date['wday'] < $lastrun['wday']) || ($cur_date['yday'] >= $lastrun['yday'] + 7)); + $days = date('L', $lastrun[0]) ? 366 : 365; + $addtask = (($cur_date['wday'] < $lastrun['wday']) || + (($cur_date['year'] == $lastrun['year']) && + ($cur_date['yday'] >= $lastrun['yday'] + 7)) || + (($cur_date['year'] > $lastrun['year']) && + ($cur_date['yday'] >= $lastrun['yday'] + 7 - $days))); break; case self::DAILY: - $addtask = (($cur_date['year'] > $lastrun['year']) || ($cur_date['yday'] > $lastrun['yday'])); + $addtask = (($cur_date['year'] > $lastrun['year']) || + ($cur_date['yday'] > $lastrun['yday'])); break; case self::EVERY: -- 2.11.0