From 4ce65d59ca91871cfd126497158200a818720bce Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 13:30:08 +0200 Subject: Adding upstream version 0.13.1. Signed-off-by: Daniel Baumann --- .../recurr/src/Recurr/RecurrenceCollection.php | 153 +++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 vendor/simshaun/recurr/src/Recurr/RecurrenceCollection.php (limited to 'vendor/simshaun/recurr/src/Recurr/RecurrenceCollection.php') diff --git a/vendor/simshaun/recurr/src/Recurr/RecurrenceCollection.php b/vendor/simshaun/recurr/src/Recurr/RecurrenceCollection.php new file mode 100644 index 0000000..e1e676b --- /dev/null +++ b/vendor/simshaun/recurr/src/Recurr/RecurrenceCollection.php @@ -0,0 +1,153 @@ + + */ +class RecurrenceCollection extends BaseCollection +{ + /** + * @param \DateTimeInterface $after + * @param \DateTimeInterface $before + * @param bool $inc Include $after or $before if they happen to be a recurrence. + * + * @return RecurrenceCollection + */ + public function startsBetween(\DateTimeInterface $after, \DateTimeInterface $before, $inc = false) + { + return $this->filter( + function ($recurrence) use ($after, $before, $inc) { + /** @var $recurrence Recurrence */ + $start = $recurrence->getStart(); + + if ($inc) { + return $start >= $after && $start <= $before; + } + + return $start > $after && $start < $before; + } + ); + } + + /** + * @param \DateTimeInterface $before + * @param bool $inc Include $before if it is a recurrence. + * + * @return RecurrenceCollection + */ + public function startsBefore(\DateTimeInterface $before, $inc = false) + { + return $this->filter( + function ($recurrence) use ($before, $inc) { + /** @var $recurrence Recurrence */ + $start = $recurrence->getStart(); + + if ($inc) { + return $start <= $before; + } + + return $start < $before; + } + ); + } + + /** + * @param \DateTimeInterface $after + * @param bool $inc Include $after if it a recurrence. + * + * @return RecurrenceCollection + */ + public function startsAfter(\DateTimeInterface $after, $inc = false) + { + return $this->filter( + function ($recurrence) use ($after, $inc) { + /** @var $recurrence Recurrence */ + $start = $recurrence->getStart(); + + if ($inc) { + return $start >= $after; + } + + return $start > $after; + } + ); + } + + /** + * @param \DateTimeInterface $after + * @param \DateTimeInterface $before + * @param bool $inc Include $after or $before if they happen to be a recurrence. + * + * @return RecurrenceCollection + */ + public function endsBetween(\DateTimeInterface $after, \DateTimeInterface $before, $inc = false) + { + return $this->filter( + function ($recurrence) use ($after, $before, $inc) { + /** @var $recurrence Recurrence */ + $end = $recurrence->getEnd(); + + if ($inc) { + return $end >= $after && $end <= $before; + } + + return $end > $after && $end < $before; + } + ); + } + + /** + * @param \DateTimeInterface $before + * @param bool $inc Include $before if it is a recurrence. + * + * @return RecurrenceCollection + */ + public function endsBefore(\DateTimeInterface $before, $inc = false) + { + return $this->filter( + function ($recurrence) use ($before, $inc) { + /** @var $recurrence Recurrence */ + $end = $recurrence->getEnd(); + + if ($inc) { + return $end <= $before; + } + + return $end < $before; + } + ); + } + + /** + * @param \DateTimeInterface $after + * @param bool $inc Include $after if it a recurrence. + * + * @return RecurrenceCollection + */ + public function endsAfter(\DateTimeInterface $after, $inc = false) + { + return $this->filter( + function ($recurrence) use ($after, $inc) { + /** @var $recurrence Recurrence */ + $end = $recurrence->getEnd(); + + if ($inc) { + return $end >= $after; + } + + return $end > $after; + } + ); + } +} -- cgit v1.2.3