public function next()
    {
        $this->currentOverriddenEvent = null;
        ++$this->counter;
        if ($this->nextDate) {
            // We had a stored value.
            $nextDate = $this->nextDate;
            $this->nextDate = null;
        } else {
            // We need to ask rruleparser for the next date.
            // We need to do this until we find a date that's not in the
            // exception list.
            do {
                if (!$this->recurIterator->valid()) {
                    $nextDate = null;
                    break;
                }
                $nextDate = $this->recurIterator->current();
                $this->recurIterator->next();
            } while (isset($this->exceptions[$nextDate->getTimeStamp()]));
        }

        // $nextDate now contains what rrule thinks is the next one, but an
        // overridden event may cut ahead.
        if ($this->overriddenEventsIndex) {
            $offsets = end($this->overriddenEventsIndex);
            $timestamp = key($this->overriddenEventsIndex);
            $offset = end($offsets);
            if (!$nextDate || $timestamp < $nextDate->getTimeStamp()) {
                // Overridden event comes first.
                $this->currentOverriddenEvent = $this->overriddenEvents[$offset];

                // Putting the rrule next date aside.
                $this->nextDate = $nextDate;
                $this->currentDate = $this->currentOverriddenEvent->DTSTART->getDateTime($this->timeZone);

                // Ensuring that this item will only be used once.
                array_pop($this->overriddenEventsIndex[$timestamp]);
                if (!$this->overriddenEventsIndex[$timestamp]) {
                    array_pop($this->overriddenEventsIndex);
                }

                // Exit point!
                return;
            }
        }

        $this->currentDate = $nextDate;
    }
public function next()
    {
        $this->currentOverriddenEvent = null;
        ++$this->counter;
        if ($this->nextDate) {
            // We had a stored value.
            $nextDate = $this->nextDate;
            $this->nextDate = null;
        } else {
            // We need to ask rruleparser for the next date.
            // We need to do this until we find a date that's not in the
            // exception list.
            do {
                if (!$this->recurIterator->valid()) {
                    $nextDate = null;
                    break;
                }
                $nextDate = $this->recurIterator->current();
                $this->recurIterator->next();
            } while (isset($this->exceptions[$nextDate->getTimeStamp()]));
        }

        // $nextDate now contains what rrule thinks is the next one, but an
        // overridden event may cut ahead.
        if ($this->overriddenEventsIndex) {
            $offsets = end($this->overriddenEventsIndex);
            $timestamp = key($this->overriddenEventsIndex);
            $offset = end($offsets);
            if (!$nextDate || $timestamp < $nextDate->getTimeStamp()) {
                // Overridden event comes first.
                $this->currentOverriddenEvent = $this->overriddenEvents[$offset];

                // Putting the rrule next date aside.
                $this->nextDate = $nextDate;
                $this->currentDate = $this->currentOverriddenEvent->DTSTART->getDateTime($this->timeZone);

                // Ensuring that this item will only be used once.
                array_pop($this->overriddenEventsIndex[$timestamp]);
                if (!$this->overriddenEventsIndex[$timestamp]) {
                    array_pop($this->overriddenEventsIndex);
                }

                // Exit point!
                return;
            }
        }

        $this->currentDate = $nextDate;
    }
public function next ( ) { $ this -> currentOverriddenEvent = null ; ++ $ this -> counter ; if ( $ this -> nextDate ) { // We had a stored value. $ nextDate = $ this -> nextDate ; $ this -> nextDate = null ; } else { // We need to ask rruleparser for the next date. // We need to do this until we find a date that's not in the // exception list. do { if ( ! $ this -> recurIterator -> valid ( ) ) { $ nextDate = null ; break ; } $ nextDate = $ this -> recurIterator -> current ( ) ; $ this -> recurIterator -> next ( ) ; } while ( isset ( $ this -> exceptions [ $ nextDate -> getTimeStamp ( ) ] ) ) ; } // $nextDate now contains what rrule thinks is the next one, but an // overridden event may cut ahead. if ( $ this -> overriddenEventsIndex ) { $ offsets = end ( $ this -> overriddenEventsIndex ) ; $ timestamp = key ( $ this -> overriddenEventsIndex ) ; $ offset = end ( $ offsets ) ; if ( ! $ nextDate || $ timestamp < $ nextDate -> getTimeStamp ( ) ) { // Overridden event comes first. $ this -> currentOverriddenEvent = $ this -> overriddenEvents [ $ offset ] ; // Putting the rrule next date aside. $ this -> nextDate = $ nextDate ; $ this -> currentDate = $ this -> currentOverriddenEvent -> DTSTART -> getDateTime ( $ this -> timeZone ) ; // Ensuring that this item will only be used once. array_pop ( $ this -> overriddenEventsIndex [ $ timestamp ] ) ; if ( ! $ this -> overriddenEventsIndex [ $ timestamp ] ) { array_pop ( $ this -> overriddenEventsIndex ) ; } // Exit point! return ; } } $ this -> currentDate = $ nextDate ; }
Advances the iterator with one step.
Advances the iterator with one step .