Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 628... Línea 628...
628
        }
628
        }
Línea 629... Línea 629...
629
 
629
 
630
        $currenthour = (int)date('H', $now);
630
        $currenthour = (int)date('H', $now);
631
        $nextvalidhour = $this->next_in_list($currenthour, $validhours);
631
        $nextvalidhour = $this->next_in_list($currenthour, $validhours);
632
        if ($nextvalidhour != $currenthour) {
632
        if ($nextvalidhour != $currenthour) {
633
            if ($nextvalidhour < $currenthour) {
633
            $keepcurrent = false;
634
                $offset = ' +1 day';
634
            $currentdate = new \DateTimeImmutable($currentyear . '-' . $currentmonth . '-' . $currentday . ' ' . $currenthour .
-
 
635
                ':00');
-
 
636
            $lasthour = (int)date('H', $currentdate->sub(new \DateInterval('PT1S'))->getTimestamp());
-
 
637
            $nextafterlast = $this->next_in_list($lasthour, $validhours);
-
 
638
            // Special case for when the clocks go forward. If the next scheduled time would fall in an hour
-
 
639
            // that doesn't exist due to the clock change, then we use the next existing hour so that we don't
-
 
640
            // skip a run. However, the replacement hour may not appear in the valid hours list, so we check
-
 
641
            // whether we skipped a valid hour here to avoid recursing again and skipping its replacement.
635
            } else {
642
            if (($lasthour + 1) % 24 <= $nextafterlast && $nextafterlast < $currenthour) {
636
                $offset = '';
643
                $keepcurrent = true;
-
 
644
            }
-
 
645
            if (!$keepcurrent) {
-
 
646
                if ($nextvalidhour < $currenthour) {
-
 
647
                    $offset = ' +1 day';
-
 
648
                } else {
-
 
649
                    $offset = '';
637
            }
650
                }
638
            $newtime = strtotime($currentyear . '-' . $currentmonth . '-' . $currentday . ' ' . $nextvalidhour .
651
                $newtime = strtotime($currentyear . '-' . $currentmonth . '-' . $currentday . ' ' . $nextvalidhour .
639
                    ':00' . $offset);
652
                    ':00' . $offset);
640
            return $this->get_next_scheduled_time_inner($newtime, $validminutes, $validhours, $validdays,
653
                return $this->get_next_scheduled_time_inner($newtime, $validminutes, $validhours, $validdays,
-
 
654
                    $validdaysofweek, $validmonths, $firstyear);
641
                $validdaysofweek, $validmonths, $firstyear);
655
            }
Línea 642... Línea 656...
642
        }
656
        }
643
 
657
 
644
        // Round time down to an exact minute because we need to use numeric calculations on it now.
658
        // Round time down to an exact minute because we need to use numeric calculations on it now.