diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index bb2a38fe232fe..73d7fc1c79a7a 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -33,6 +33,7 @@ namespace OCA\DAV\CalDAV; +use DateTime; use OCA\DAV\DAV\Sharing\IShareable; use OCP\DB\QueryBuilder\IQueryBuilder; use OCA\DAV\Connector\Sabre\Principal; @@ -445,7 +446,7 @@ private function getUserDisplayName($uid) { return $this->userDisplayNames[$uid]; } - + /** * @return array */ @@ -1549,14 +1550,14 @@ public function search(array $calendarInfo, $pattern, array $searchProperties, ->from('calendarobjects', 'c'); if (isset($options['timerange'])) { - if (isset($options['timerange']['start'])) { + if (isset($options['timerange']['start']) && $options['timerange']['start'] instanceof DateTime) { $outerQuery->andWhere($outerQuery->expr()->gt('lastoccurence', - $outerQuery->createNamedParameter($options['timerange']['start']->getTimeStamp))); + $outerQuery->createNamedParameter($options['timerange']['start']->getTimeStamp()))); } - if (isset($options['timerange']['end'])) { + if (isset($options['timerange']['end']) && $options['timerange']['end'] instanceof DateTime) { $outerQuery->andWhere($outerQuery->expr()->lt('firstoccurence', - $outerQuery->createNamedParameter($options['timerange']['end']->getTimeStamp))); + $outerQuery->createNamedParameter($options['timerange']['end']->getTimeStamp()))); } } @@ -2256,7 +2257,7 @@ public function getDenormalizedData($calendarData) { } } else { $it = new EventIterator($vObject, (string)$component->UID); - $maxDate = new \DateTime(self::MAX_DATE); + $maxDate = new DateTime(self::MAX_DATE); if ($it->isInfinite()) { $lastOccurrence = $maxDate->getTimestamp(); } else { diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 1b2169b6675b3..212b09f31fb49 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -806,7 +806,7 @@ public function testCalendarSearch() { /** * @dataProvider searchDataProvider */ - public function testSearch($isShared, $count) { + public function testSearch(bool $isShared, array $searchOptions, int $count) { $calendarId = $this->createTestCalendar(); $uris = []; @@ -900,15 +900,16 @@ public function testSearch($isShared, $count) { ]; $result = $this->backend->search($calendarInfo, 'Test', - ['SUMMARY', 'LOCATION', 'ATTENDEE'], [], null, null); + ['SUMMARY', 'LOCATION', 'ATTENDEE'], $searchOptions, null, null); $this->assertCount($count, $result); } public function searchDataProvider() { return [ - [false, 4], - [true, 2], + [false, [], 4], + [true, ['timerange' => ['start' => new DateTime('2013-09-12 13:00:00'), 'end' => new DateTime('2013-09-12 14:00:00')]], 2], + [true, ['timerange' => ['start' => new DateTime('2013-09-12 15:00:00'), 'end' => new DateTime('2013-09-12 16:00:00')]], 0], ]; }