src/ICal/ICal.php
public function parseExdates(array $event)
    {
        if (empty($event['EXDATE_array'])) {
            return array();
        } else {
            $exdates = $event['EXDATE_array'];
        }

        $output          = array();
        $currentTimeZone = $this->defaultTimeZone;

        foreach ($exdates as $subArray) {
            end($subArray);
            $finalKey = key($subArray);

            foreach ($subArray as $key => $value) {
                if ($key === 'TZID') {
                    $checkTimeZone = $subArray[$key];

                    if ($this->isValidIanaTimeZoneId($checkTimeZone)) {
                        $currentTimeZone = $checkTimeZone;
                    } elseif ($this->isValidCldrTimeZoneId($checkTimeZone)) {
                        $currentTimeZone = $this->isValidCldrTimeZoneId($checkTimeZone, true);
                    } else {
                        $currentTimeZone = $this->defaultTimeZone;
                    }
                } elseif (is_numeric($key)) {
                    $icalDate = $subArray[$key];

                    if (substr($icalDate, -1) === 'Z') {
                        $currentTimeZone = self::TIME_ZONE_UTC;
                    }

                    $output[] = new Carbon($icalDate, $currentTimeZone);

                    if ($key === $finalKey) {
                        // Reset to default
                        $currentTimeZone = $this->defaultTimeZone;
                    }
                }
            }
        }

        return $output;
    }
public function parseExdates(array $event)
    {
        if (empty($event['EXDATE_array'])) {
            return array();
        } else {
            $exdates = $event['EXDATE_array'];
        }

        $output          = array();
        $currentTimeZone = $this->defaultTimeZone;

        foreach ($exdates as $subArray) {
            end($subArray);
            $finalKey = key($subArray);

            foreach ($subArray as $key => $value) {
                if ($key === 'TZID') {
                    $checkTimeZone = $subArray[$key];

                    if ($this->isValidIanaTimeZoneId($checkTimeZone)) {
                        $currentTimeZone = $checkTimeZone;
                    } elseif ($this->isValidCldrTimeZoneId($checkTimeZone)) {
                        $currentTimeZone = $this->isValidCldrTimeZoneId($checkTimeZone, true);
                    } else {
                        $currentTimeZone = $this->defaultTimeZone;
                    }
                } elseif (is_numeric($key)) {
                    $icalDate = $subArray[$key];

                    if (substr($icalDate, -1) === 'Z') {
                        $currentTimeZone = self::TIME_ZONE_UTC;
                    }

                    $output[] = new Carbon($icalDate, $currentTimeZone);

                    if ($key === $finalKey) {
                        // Reset to default
                        $currentTimeZone = $this->defaultTimeZone;
                    }
                }
            }
        }

        return $output;
    }
public function parseExdates ( array $ event ) { if ( empty ( $ event [ 'EXDATE_array' ] ) ) { return array ( ) ; } else { $ exdates = $ event [ 'EXDATE_array' ] ; } $ output = array ( ) ; $ currentTimeZone = $ this -> defaultTimeZone ; foreach ( $ exdates as $ subArray ) { end ( $ subArray ) ; $ finalKey = key ( $ subArray ) ; foreach ( $ subArray as $ key => $ value ) { if ( $ key === 'TZID' ) { $ checkTimeZone = $ subArray [ $ key ] ; if ( $ this -> isValidIanaTimeZoneId ( $ checkTimeZone ) ) { $ currentTimeZone = $ checkTimeZone ; } elseif ( $ this -> isValidCldrTimeZoneId ( $ checkTimeZone ) ) { $ currentTimeZone = $ this -> isValidCldrTimeZoneId ( $ checkTimeZone , true ) ; } else { $ currentTimeZone = $ this -> defaultTimeZone ; } } elseif ( is_numeric ( $ key ) ) { $ icalDate = $ subArray [ $ key ] ; if ( substr ( $ icalDate , - 1 ) === 'Z' ) { $ currentTimeZone = self :: TIME_ZONE_UTC ; } $ output [ ] = new Carbon ( $ icalDate , $ currentTimeZone ) ; if ( $ key === $ finalKey ) { // Reset to default $ currentTimeZone = $ this -> defaultTimeZone ; } } } } return $ output ; }
Parses a list of excluded dates
to be applied to an Event

@param  array $event
@return array
Parses a list of excluded dates to be applied to an Event