diff options
Diffstat (limited to 'vendor/sabre/vobject/lib/Component/VEvent.php')
-rw-r--r-- | vendor/sabre/vobject/lib/Component/VEvent.php | 96 |
1 files changed, 53 insertions, 43 deletions
diff --git a/vendor/sabre/vobject/lib/Component/VEvent.php b/vendor/sabre/vobject/lib/Component/VEvent.php index 09f37033c..7f6861190 100644 --- a/vendor/sabre/vobject/lib/Component/VEvent.php +++ b/vendor/sabre/vobject/lib/Component/VEvent.php @@ -16,8 +16,8 @@ use Sabre\VObject\Recur\NoInstancesException; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class VEvent extends VObject\Component -{ +class VEvent extends VObject\Component { + /** * Returns true or false depending on if the event falls in the specified * time-range. This is used for filtering purposes. @@ -30,15 +30,20 @@ class VEvent extends VObject\Component * * @return bool */ - public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) - { + function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) { + if ($this->RRULE) { + try { + $it = new EventIterator($this, null, $start->getTimezone()); + } catch (NoInstancesException $e) { + // If we've catched this exception, there are no instances // for the event that fall into the specified time-range. return false; + } $it->fastForward($start); @@ -49,11 +54,13 @@ class VEvent extends VObject\Component // // If the starttime of the recurrence did not exceed the // end of the time range as well, we have a match. - return $it->getDTStart() < $end && $it->getDTEnd() > $start; + return ($it->getDTStart() < $end && $it->getDTEnd() > $start); + } $effectiveStart = $this->DTSTART->getDateTime($start->getTimezone()); if (isset($this->DTEND)) { + // The DTEND property is considered non inclusive. So for a 3 day // event in july, dtstart and dtend would have to be July 1st and // July 4th respectively. @@ -61,6 +68,7 @@ class VEvent extends VObject\Component // See: // http://tools.ietf.org/html/rfc5545#page-54 $effectiveEnd = $this->DTEND->getDateTime($end->getTimezone()); + } elseif (isset($this->DURATION)) { $effectiveEnd = $effectiveStart->add(VObject\DateTimeParser::parseDuration($this->DURATION)); } elseif (!$this->DTSTART->hasTime()) { @@ -68,10 +76,10 @@ class VEvent extends VObject\Component } else { $effectiveEnd = $effectiveStart; } - - return + return ( ($start < $effectiveEnd) && ($end > $effectiveStart) - ; + ); + } /** @@ -79,12 +87,13 @@ class VEvent extends VObject\Component * * @return array */ - protected function getDefaults() - { + protected function getDefaults() { + return [ - 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(), - 'DTSTAMP' => gmdate('Ymd\\THis\\Z'), + 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(), + 'DTSTAMP' => date('Ymd\\THis\\Z'), ]; + } /** @@ -102,42 +111,43 @@ class VEvent extends VObject\Component * * @var array */ - public function getValidationRules() - { - $hasMethod = isset($this->parent->METHOD); + function getValidationRules() { + $hasMethod = isset($this->parent->METHOD); return [ - 'UID' => 1, - 'DTSTAMP' => 1, - 'DTSTART' => $hasMethod ? '?' : '1', - 'CLASS' => '?', - 'CREATED' => '?', - 'DESCRIPTION' => '?', - 'GEO' => '?', + 'UID' => 1, + 'DTSTAMP' => 1, + 'DTSTART' => $hasMethod ? '?' : '1', + 'CLASS' => '?', + 'CREATED' => '?', + 'DESCRIPTION' => '?', + 'GEO' => '?', 'LAST-MODIFIED' => '?', - 'LOCATION' => '?', - 'ORGANIZER' => '?', - 'PRIORITY' => '?', - 'SEQUENCE' => '?', - 'STATUS' => '?', - 'SUMMARY' => '?', - 'TRANSP' => '?', - 'URL' => '?', + 'LOCATION' => '?', + 'ORGANIZER' => '?', + 'PRIORITY' => '?', + 'SEQUENCE' => '?', + 'STATUS' => '?', + 'SUMMARY' => '?', + 'TRANSP' => '?', + 'URL' => '?', 'RECURRENCE-ID' => '?', - 'RRULE' => '?', - 'DTEND' => '?', - 'DURATION' => '?', - - 'ATTACH' => '*', - 'ATTENDEE' => '*', - 'CATEGORIES' => '*', - 'COMMENT' => '*', - 'CONTACT' => '*', - 'EXDATE' => '*', + 'RRULE' => '?', + 'DTEND' => '?', + 'DURATION' => '?', + + 'ATTACH' => '*', + 'ATTENDEE' => '*', + 'CATEGORIES' => '*', + 'COMMENT' => '*', + 'CONTACT' => '*', + 'EXDATE' => '*', 'REQUEST-STATUS' => '*', - 'RELATED-TO' => '*', - 'RESOURCES' => '*', - 'RDATE' => '*', + 'RELATED-TO' => '*', + 'RESOURCES' => '*', + 'RDATE' => '*', ]; + } + } |