diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2024-03-11 16:27:23 +0100 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2024-05-31 14:50:53 +0200 |
commit | 86020a510ae51ef70db86b7570f7807616ad42fd (patch) | |
tree | e9021504cf1fafa507788c7139f2137e6359a969 | |
parent | 5bc8329bf389daf21e2cf1d04c49f876f7295ab2 (diff) |
fix(dav): Add occ command to fix missing caldav sync tokensbackport/44130/stable27
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r-- | apps/dav/appinfo/info.xml | 1 | ||||
-rw-r--r-- | apps/dav/composer/composer/autoload_classmap.php | 1 | ||||
-rw-r--r-- | apps/dav/composer/composer/autoload_static.php | 1 | ||||
-rw-r--r-- | apps/dav/lib/CalDAV/CalDavBackend.php | 75 | ||||
-rw-r--r-- | apps/dav/lib/Command/FixCalendarSyncCommand.php | 86 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php | 33 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/CalDavBackendTest.php | 89 |
7 files changed, 249 insertions, 37 deletions
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 9140c674716..034f929b7b1 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -50,6 +50,7 @@ <command>OCA\DAV\Command\CreateAddressBook</command> <command>OCA\DAV\Command\CreateCalendar</command> <command>OCA\DAV\Command\DeleteCalendar</command> + <command>OCA\DAV\Command\FixCalendarSyncCommand</command> <command>OCA\DAV\Command\MoveCalendar</command> <command>OCA\DAV\Command\ListCalendars</command> <command>OCA\DAV\Command\RetentionCleanupCommand</command> diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index 83aa8370f89..8b99396919b 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -133,6 +133,7 @@ return array( 'OCA\\DAV\\Command\\CreateAddressBook' => $baseDir . '/../lib/Command/CreateAddressBook.php', 'OCA\\DAV\\Command\\CreateCalendar' => $baseDir . '/../lib/Command/CreateCalendar.php', 'OCA\\DAV\\Command\\DeleteCalendar' => $baseDir . '/../lib/Command/DeleteCalendar.php', + 'OCA\\DAV\\Command\\FixCalendarSyncCommand' => $baseDir . '/../lib/Command/FixCalendarSyncCommand.php', 'OCA\\DAV\\Command\\ListCalendars' => $baseDir . '/../lib/Command/ListCalendars.php', 'OCA\\DAV\\Command\\MoveCalendar' => $baseDir . '/../lib/Command/MoveCalendar.php', 'OCA\\DAV\\Command\\RemoveInvalidShares' => $baseDir . '/../lib/Command/RemoveInvalidShares.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index cbf2abe3a4e..d8b2005ebd0 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -148,6 +148,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Command\\CreateAddressBook' => __DIR__ . '/..' . '/../lib/Command/CreateAddressBook.php', 'OCA\\DAV\\Command\\CreateCalendar' => __DIR__ . '/..' . '/../lib/Command/CreateCalendar.php', 'OCA\\DAV\\Command\\DeleteCalendar' => __DIR__ . '/..' . '/../lib/Command/DeleteCalendar.php', + 'OCA\\DAV\\Command\\FixCalendarSyncCommand' => __DIR__ . '/..' . '/../lib/Command/FixCalendarSyncCommand.php', 'OCA\\DAV\\Command\\ListCalendars' => __DIR__ . '/..' . '/../lib/Command/ListCalendars.php', 'OCA\\DAV\\Command\\MoveCalendar' => __DIR__ . '/..' . '/../lib/Command/MoveCalendar.php', 'OCA\\DAV\\Command\\RemoveInvalidShares' => __DIR__ . '/..' . '/../lib/Command/RemoveInvalidShares.php', diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 651483f000c..69d85c1b604 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -99,6 +99,7 @@ use Sabre\VObject\Property; use Sabre\VObject\Reader; use Sabre\VObject\Recur\EventIterator; use function array_column; +use function array_map; use function array_merge; use function array_values; use function explode; @@ -882,7 +883,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $query->where($query->expr()->eq('id', $query->createNamedParameter($calendarId))); $query->executeStatement(); - $this->addChange($calendarId, "", 2); + $this->addChanges($calendarId, [""], 2); $calendarData = $this->getCalendarById($calendarId); $shares = $this->getShares($calendarId); @@ -1301,7 +1302,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription ->executeStatement(); $this->updateProperties($calendarId, $objectUri, $calendarData, $calendarType); - $this->addChange($calendarId, $objectUri, 1, $calendarType); + $this->addChanges($calendarId, [$objectUri], 1, $calendarType); $objectRow = $this->getCalendarObject($calendarId, $objectUri, $calendarType); assert($objectRow !== null); @@ -1362,7 +1363,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription ->executeStatement(); $this->updateProperties($calendarId, $objectUri, $calendarData, $calendarType); - $this->addChange($calendarId, $objectUri, 2, $calendarType); + $this->addChanges($calendarId, [$objectUri], 2, $calendarType); $objectRow = $this->getCalendarObject($calendarId, $objectUri, $calendarType); if (is_array($objectRow)) { @@ -1412,8 +1413,8 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $this->purgeProperties($sourceCalendarId, $objectId); $this->updateProperties($targetCalendarId, $object['uri'], $object['calendardata'], $calendarType); - $this->addChange($sourceCalendarId, $object['uri'], 3, $calendarType); - $this->addChange($targetCalendarId, $object['uri'], 1, $calendarType); + $this->addChanges($sourceCalendarId, [$object['uri']], 3, $calendarType); + $this->addChanges($targetCalendarId, [$object['uri']], 1, $calendarType); $object = $this->getCalendarObjectById($newPrincipalUri, $objectId); // Calendar Object wasn't found - possibly because it was deleted in the meantime by a different client @@ -1540,7 +1541,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } } - $this->addChange($calendarId, $objectUri, 3, $calendarType); + $this->addChanges($calendarId, [$objectUri], 3, $calendarType); }, $this->db); } @@ -1582,7 +1583,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription // Welp, this should possibly not have happened, but let's ignore return; } - $this->addChange($row['calendarid'], $row['uri'], 1, (int) $row['calendartype']); + $this->addChanges($row['calendarid'], [$row['uri']], 1, (int) $row['calendartype']); $calendarRow = $this->getCalendarById((int) $row['calendarid']); if ($calendarRow === null) { @@ -2742,16 +2743,16 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * Adds a change record to the calendarchanges table. * * @para |