read()) !== false) { if (defined('DEBUG')) { echo sprintf('L%d: %s', $lineCount + 1, $line) . PHP_EOL; } // First line should be BEGIN:VCALENDAR if ($lineCount === 0 && trim($line) !== self::HEADER_VCALENDAR_BEGIN) { throw new \Exception('The file does not appear to be a valid iCal file'); } if ($lineCount > 0) { if ($line == self::HEADER_VEVENT_BEGIN) { $this->currentEvent = new Event(); } else if ($line == self::HEADER_VEVENT_END) { $events[] = $this->currentEvent; } else if (!is_null($this->currentEvent)) { if (substr($line, 0, strlen(self::HEADER_UID)) == self::HEADER_UID) { $this->currentEvent->setUid(trim(substr($line, strlen(self::HEADER_UID)))); } else if (substr($line, 0, strlen(self::HEADER_TITLE)) == self::HEADER_TITLE) { $this->currentEvent->setTitle(trim(substr($line, strlen(self::HEADER_TITLE)))); } else if (substr($line, 0, strlen(self::HEADER_DATE)) == self::HEADER_DATE) { $date = \DateTime::createFromFormat('Ymd\\THis\\Z', trim(substr($line, strlen(self::HEADER_DATE)))); $this->currentEvent->setStartDate($date); } else if (substr($line, 0, strlen(self::HEADER_DESCRIPTION)) == self::HEADER_DESCRIPTION) { $this->isDescriptionStarted = true; $description = trim(substr($line, strlen(self::HEADER_DESCRIPTION))); while (preg_match('/^\s/', $line = $this->read())) { $description .= ' ' . trim($line); } $this->currentEvent->setDescription($description); } } } $lineCount++; } return $events; } }