Fixed calculation of afterNextExec
authorAlexander Ebert <ebert@woltlab.com>
Mon, 22 Aug 2011 17:08:21 +0000 (19:08 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Mon, 22 Aug 2011 17:08:21 +0000 (19:08 +0200)
The timebase for calculation of `afterNextExec` is equal to `nextExec` in order to find any date after this time for execution. Unfortunately this timebase is already a valid date and thus is used as result (now `nextExec` and `afterNextExec` are equal). To fix this, we simply add 1 to the `nextExec` timestamp, making it an invalid date for next execution (we do not support seconds anyway!).

wcfsetup/install/files/lib/data/cronjob/CronjobAction.class.php
wcfsetup/install/files/lib/system/cronjob/CronjobScheduler.class.php

index 4692331d12a096d8539bdbb1f93c427959a61848..2654c5efe1117d862dea5a642f97e11e435cd17a 100644 (file)
@@ -135,7 +135,7 @@ class CronjobAction extends AbstractDatabaseObjectAction {
                        $nextExec = $cronjob->getNextExec();
                        $cronjob->update(array(
                                'nextExec' => $nextExec, 
-                               'afterNextExec' => $cronjob->getNextExec($nextExec)
+                               'afterNextExec' => $cronjob->getNextExec(($nextExec + 1))
                        ));
                        
                        // build the return value
index e17d925d2e26de59a4343d59e2db54538a2e0afd..bb243c339894022c0c9151102a2513ce49ba10c0 100644 (file)
@@ -78,7 +78,7 @@ class CronjobScheduler extends SingletonFactory {
                        
                        // get time of next execution
                        $nextExec = $cronjobEditor->getNextExec();
-                       $afterNextExec = $cronjobEditor->getNextExec($nextExec);
+                       $afterNextExec = $cronjobEditor->getNextExec(($nextExec + 1));
                        
                        // mark cronjob as done
                        $cronjobEditor->update(array(