protected function nextWeekly()
    {
        if (!$this->byHour && !$this->byDay) {
            $this->currentDate = $this->currentDate->modify('+'.$this->interval.' weeks');

            return;
        }

        if ($this->byHour) {
            $recurrenceHours = $this->getHours();
        }

        if ($this->byDay) {
            $recurrenceDays = $this->getDays();
        }

        // First day of the week:
        $firstDay = $this->dayMap[$this->weekStart];

        do {
            if ($this->byHour) {
                $this->currentDate = $this->currentDate->modify('+1 hours');
            } else {
                $this->currentDate = $this->currentDate->modify('+1 days');
            }

            // Current day of the week
            $currentDay = (int) $this->currentDate->format('w');

            // Current hour of the day
            $currentHour = (int) $this->currentDate->format('G');

            // We need to roll over to the next week
            if ($currentDay === $firstDay && (!$this->byHour || '0' == $currentHour)) {
                $this->currentDate = $this->currentDate->modify('+'.($this->interval - 1).' weeks');

                // We need to go to the first day of this week, but only if we
                // are not already on this first day of this week.
                if ($this->currentDate->format('w') != $firstDay) {
                    $this->currentDate = $this->currentDate->modify('last '.$this->dayNames[$this->dayMap[$this->weekStart]]);
                }
            }

            // We have a match
        } while (($this->byDay && !in_array($currentDay, $recurrenceDays)) || ($this->byHour && !in_array($currentHour, $recurrenceHours)));
    }
protected function nextWeekly()
    {
        if (!$this->byHour && !$this->byDay) {
            $this->currentDate = $this->currentDate->modify('+'.$this->interval.' weeks');

            return;
        }

        if ($this->byHour) {
            $recurrenceHours = $this->getHours();
        }

        if ($this->byDay) {
            $recurrenceDays = $this->getDays();
        }

        // First day of the week:
        $firstDay = $this->dayMap[$this->weekStart];

        do {
            if ($this->byHour) {
                $this->currentDate = $this->currentDate->modify('+1 hours');
            } else {
                $this->currentDate = $this->currentDate->modify('+1 days');
            }

            // Current day of the week
            $currentDay = (int) $this->currentDate->format('w');

            // Current hour of the day
            $currentHour = (int) $this->currentDate->format('G');

            // We need to roll over to the next week
            if ($currentDay === $firstDay && (!$this->byHour || '0' == $currentHour)) {
                $this->currentDate = $this->currentDate->modify('+'.($this->interval - 1).' weeks');

                // We need to go to the first day of this week, but only if we
                // are not already on this first day of this week.
                if ($this->currentDate->format('w') != $firstDay) {
                    $this->currentDate = $this->currentDate->modify('last '.$this->dayNames[$this->dayMap[$this->weekStart]]);
                }
            }

            // We have a match
        } while (($this->byDay && !in_array($currentDay, $recurrenceDays)) || ($this->byHour && !in_array($currentHour, $recurrenceHours)));
    }
protected function nextWeekly ( ) { if ( ! $ this -> byHour && ! $ this -> byDay ) { $ this -> currentDate = $ this -> currentDate -> modify ( '+' . $ this -> interval . ' weeks' ) ; return ; } if ( $ this -> byHour ) { $ recurrenceHours = $ this -> getHours ( ) ; } if ( $ this -> byDay ) { $ recurrenceDays = $ this -> getDays ( ) ; } // First day of the week: $ firstDay = $ this -> dayMap [ $ this -> weekStart ] ; do { if ( $ this -> byHour ) { $ this -> currentDate = $ this -> currentDate -> modify ( '+1 hours' ) ; } else { $ this -> currentDate = $ this -> currentDate -> modify ( '+1 days' ) ; } // Current day of the week $ currentDay = ( int ) $ this -> currentDate -> format ( 'w' ) ; // Current hour of the day $ currentHour = ( int ) $ this -> currentDate -> format ( 'G' ) ; // We need to roll over to the next week if ( $ currentDay === $ firstDay && ( ! $ this -> byHour || '0' == $ currentHour ) ) { $ this -> currentDate = $ this -> currentDate -> modify ( '+' . ( $ this -> interval - 1 ) . ' weeks' ) ; // We need to go to the first day of this week, but only if we // are not already on this first day of this week. if ( $ this -> currentDate -> format ( 'w' ) != $ firstDay ) { $ this -> currentDate = $ this -> currentDate -> modify ( 'last ' . $ this -> dayNames [ $ this -> dayMap [ $ this -> weekStart ] ] ) ; } } // We have a match } while ( ( $ this -> byDay && ! in_array ( $ currentDay , $ recurrenceDays ) ) || ( $ this -> byHour && ! in_array ( $ currentHour , $ recurrenceHours ) ) ) ; }
Does the processing for advancing the iterator for weekly frequency.
Does the processing for advancing the iterator for weekly frequency .