diff options
Diffstat (limited to 'vendor/sabre/vobject/lib/ITip/Broker.php')
-rw-r--r-- | vendor/sabre/vobject/lib/ITip/Broker.php | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/vendor/sabre/vobject/lib/ITip/Broker.php b/vendor/sabre/vobject/lib/ITip/Broker.php index effa74317..b9a30611b 100644 --- a/vendor/sabre/vobject/lib/ITip/Broker.php +++ b/vendor/sabre/vobject/lib/ITip/Broker.php @@ -849,6 +849,7 @@ class Broker { $exdate = []; foreach ($calendar->VEVENT as $vevent) { + $rrule = []; if (is_null($uid)) { $uid = $vevent->UID->getValue(); @@ -889,6 +890,18 @@ class Broker { } sort($exdate); } + if (isset($vevent->RRULE)) { + foreach ($vevent->select('RRULE') as $rr) { + foreach ($rr->getParts() as $key => $val) { + // ignore default values (https://github.com/sabre-io/vobject/issues/126) + if ($key === 'INTERVAL' && $val == 1) { + continue; + } + $rrule[] = "$key=$val"; + } + } + sort($rrule); + } if (isset($vevent->STATUS)) { $status = strtoupper($vevent->STATUS->getValue()); } @@ -953,19 +966,16 @@ class Broker { $significantChangeHash .= $prop . ':'; if ($prop === 'EXDATE') { - $significantChangeHash .= implode(',', $exdate) . ';'; - + } elseif ($prop === 'RRULE') { + $significantChangeHash .= implode(',', $rrule) . ';'; } else { - foreach ($propertyValues as $val) { $significantChangeHash .= $val->getValue() . ';'; } - } } } - } $significantChangeHash = md5($significantChangeHash); |