mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Merge pull request #41740 from nextcloud/Fix/duplicate-reminders
fix(dav): Handle duplicate event reminder
This commit is contained in:
commit
cee227ae99
3 changed files with 12 additions and 4 deletions
|
|
@ -44,11 +44,12 @@ class Backend {
|
|||
*/
|
||||
public function getRemindersToProcess():array {
|
||||
$query = $this->db->getQueryBuilder();
|
||||
$query->select(['cr.*', 'co.calendardata', 'c.displayname', 'c.principaluri'])
|
||||
$query->select(['cr.*', 'co.calendardata', 'c.displayname', 'c.principaluri','cr.notification_date', 'cr.event_hash', 'cr.type'])
|
||||
->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'));
|
||||
->join('cr', 'calendars', 'c', $query->expr()->eq('cr.calendar_id', 'c.id'))
|
||||
->groupBy('cr.event_hash', 'cr.notification_date', 'cr.type');
|
||||
$stmt = $query->execute();
|
||||
|
||||
return array_map(
|
||||
|
|
|
|||
|
|
@ -444,7 +444,14 @@ class ReminderService {
|
|||
* @param array $reminders
|
||||
*/
|
||||
private function writeRemindersToDatabase(array $reminders): void {
|
||||
$uniqueReminders = [];
|
||||
foreach ($reminders as $reminder) {
|
||||
$key = $reminder['notification_date']. $reminder['event_hash'].$reminder['type'];
|
||||
if(!isset($uniqueReminders[$key])) {
|
||||
$uniqueReminders[$key] = $reminder;
|
||||
}
|
||||
}
|
||||
foreach (array_values($uniqueReminders) as $reminder) {
|
||||
$this->backend->insertReminder(
|
||||
(int) $reminder['calendar_id'],
|
||||
(int) $reminder['object_id'],
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ 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,
|
||||
|
|
@ -144,7 +144,7 @@ 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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue