diff options
author | Hamza <40746210+hamza221@users.noreply.github.com> | 2024-09-19 16:57:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-19 16:57:17 +0200 |
commit | 34445ea9d1a6597e3cd4c05996df38ab62de5e8b (patch) | |
tree | ced5a5d75613fcd494f660133cb814b46c86d4ce | |
parent | 96de697aa6fe7e75c7e311e07536cc84a29a0088 (diff) | |
parent | ab3a239853638eda699eccea1816122f25ef5bc7 (diff) | |
download | nextcloud-server-34445ea9d1a6597e3cd4c05996df38ab62de5e8b.tar.gz nextcloud-server-34445ea9d1a6597e3cd4c05996df38ab62de5e8b.zip |
Merge pull request #47399 from nextcloud/fix/47275/driverException
fix: expand select and group by for calendar reminder backend
-rw-r--r-- | apps/dav/lib/CalDAV/Reminder/Backend.php | 4 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php | 14 |
2 files changed, 10 insertions, 8 deletions
diff --git a/apps/dav/lib/CalDAV/Reminder/Backend.php b/apps/dav/lib/CalDAV/Reminder/Backend.php index 1fa30f2538b..f5608760b61 100644 --- a/apps/dav/lib/CalDAV/Reminder/Backend.php +++ b/apps/dav/lib/CalDAV/Reminder/Backend.php @@ -44,12 +44,12 @@ class Backend { */ public function getRemindersToProcess():array { $query = $this->db->getQueryBuilder(); - $query->select(['cr.*', 'co.calendardata', 'c.displayname', 'c.principaluri','cr.notification_date', 'cr.event_hash', 'cr.type']) + $query->select(['cr.id', 'cr.calendar_id','cr.object_id','cr.is_recurring','cr.uid','cr.recurrence_id','cr.is_recurrence_exception','cr.event_hash','cr.alarm_hash','cr.type','cr.is_relative','cr.notification_date','cr.is_repeat_based','co.calendardata', 'c.displayname', 'c.principaluri']) ->from('calendar_reminders', 'cr') ->where($query->expr()->lte('cr.notification_date', $query->createNamedParameter($this->timeFactory->getTime()))) ->join('cr', 'calendarobjects', 'co', $query->expr()->eq('cr.object_id', 'co.id')) ->join('cr', 'calendars', 'c', $query->expr()->eq('cr.calendar_id', 'c.id')) - ->groupBy('cr.event_hash', 'cr.notification_date', 'cr.type'); + ->groupBy('cr.event_hash', 'cr.notification_date', 'cr.type', 'cr.id', 'cr.calendar_id', 'cr.object_id', 'cr.is_recurring', 'cr.uid', 'cr.recurrence_id', 'cr.is_recurrence_exception', 'cr.alarm_hash', 'cr.is_relative', 'cr.is_repeat_based', 'co.calendardata', 'c.displayname', 'c.principaluri'); $stmt = $query->execute(); return array_map( diff --git a/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php b/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php index 75b058c0b84..e1a0485f8a9 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/BackendTest.php @@ -118,7 +118,7 @@ class BackendTest extends TestCase { unset($rows[0]['id']); unset($rows[1]['id']); - $this->assertEquals($rows[0], [ + $expected1 = [ 'calendar_id' => 1, 'object_id' => 1, 'uid' => 'asd', @@ -127,15 +127,15 @@ class BackendTest extends TestCase { 'is_recurrence_exception' => false, 'event_hash' => 'asd123', 'alarm_hash' => 'asd567', - 'type' => 'AUDIO', + 'type' => 'EMAIL', 'is_relative' => true, 'notification_date' => 123456, 'is_repeat_based' => false, 'calendardata' => 'Calendar data 123', 'displayname' => 'Displayname 123', 'principaluri' => 'principals/users/user001', - ]); - $this->assertEquals($rows[1], [ + ]; + $expected2 = [ 'calendar_id' => 1, 'object_id' => 1, 'uid' => 'asd', @@ -144,14 +144,16 @@ class BackendTest extends TestCase { 'is_recurrence_exception' => false, 'event_hash' => 'asd123', 'alarm_hash' => 'asd567', - 'type' => 'EMAIL', + 'type' => 'AUDIO', 'is_relative' => true, 'notification_date' => 123456, 'is_repeat_based' => false, 'calendardata' => 'Calendar data 123', 'displayname' => 'Displayname 123', 'principaluri' => 'principals/users/user001', - ]); + ]; + + $this->assertEqualsCanonicalizing([$rows[0],$rows[1]], [$expected1,$expected2]); } public function testGetAllScheduledRemindersForEvent(): void { |