Skip to content

Commit 46e624a

Browse files
feat: Calendar Import
Signed-off-by: SebastianKrupinski <[email protected]>
1 parent 7512b93 commit 46e624a

File tree

13 files changed

+1151
-1
lines changed

13 files changed

+1151
-1
lines changed

apps/dav/appinfo/info.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<command>OCA\DAV\Command\ExportCalendar</command>
6767
<command>OCA\DAV\Command\FixCalendarSyncCommand</command>
6868
<command>OCA\DAV\Command\GetAbsenceCommand</command>
69+
<command>OCA\DAV\Command\ImportCalendar</command>
6970
<command>OCA\DAV\Command\ListAddressbooks</command>
7071
<command>OCA\DAV\Command\ListCalendarShares</command>
7172
<command>OCA\DAV\Command\ListCalendars</command>

apps/dav/composer/composer/autoload_classmap.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@
6969
'OCA\\DAV\\CalDAV\\FreeBusy\\FreeBusyGenerator' => $baseDir . '/../lib/CalDAV/FreeBusy/FreeBusyGenerator.php',
7070
'OCA\\DAV\\CalDAV\\ICSExportPlugin\\ICSExportPlugin' => $baseDir . '/../lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php',
7171
'OCA\\DAV\\CalDAV\\IRestorable' => $baseDir . '/../lib/CalDAV/IRestorable.php',
72+
'OCA\\DAV\\CalDAV\\Import\\ImportService' => $baseDir . '/../lib/CalDAV/Import/ImportService.php',
73+
'OCA\\DAV\\CalDAV\\Import\\TextImporter' => $baseDir . '/../lib/CalDAV/Import/TextImporter.php',
74+
'OCA\\DAV\\CalDAV\\Import\\XmlImporter' => $baseDir . '/../lib/CalDAV/Import/XmlImporter.php',
7275
'OCA\\DAV\\CalDAV\\Integration\\ExternalCalendar' => $baseDir . '/../lib/CalDAV/Integration/ExternalCalendar.php',
7376
'OCA\\DAV\\CalDAV\\Integration\\ICalendarProvider' => $baseDir . '/../lib/CalDAV/Integration/ICalendarProvider.php',
7477
'OCA\\DAV\\CalDAV\\InvitationResponse\\InvitationResponseServer' => $baseDir . '/../lib/CalDAV/InvitationResponse/InvitationResponseServer.php',
@@ -166,6 +169,7 @@
166169
'OCA\\DAV\\Command\\ExportCalendar' => $baseDir . '/../lib/Command/ExportCalendar.php',
167170
'OCA\\DAV\\Command\\FixCalendarSyncCommand' => $baseDir . '/../lib/Command/FixCalendarSyncCommand.php',
168171
'OCA\\DAV\\Command\\GetAbsenceCommand' => $baseDir . '/../lib/Command/GetAbsenceCommand.php',
172+
'OCA\\DAV\\Command\\ImportCalendar' => $baseDir . '/../lib/Command/ImportCalendar.php',
169173
'OCA\\DAV\\Command\\ListAddressbooks' => $baseDir . '/../lib/Command/ListAddressbooks.php',
170174
'OCA\\DAV\\Command\\ListCalendarShares' => $baseDir . '/../lib/Command/ListCalendarShares.php',
171175
'OCA\\DAV\\Command\\ListCalendars' => $baseDir . '/../lib/Command/ListCalendars.php',

apps/dav/composer/composer/autoload_static.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ class ComposerStaticInitDAV
8484
'OCA\\DAV\\CalDAV\\FreeBusy\\FreeBusyGenerator' => __DIR__ . '/..' . '/../lib/CalDAV/FreeBusy/FreeBusyGenerator.php',
8585
'OCA\\DAV\\CalDAV\\ICSExportPlugin\\ICSExportPlugin' => __DIR__ . '/..' . '/../lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php',
8686
'OCA\\DAV\\CalDAV\\IRestorable' => __DIR__ . '/..' . '/../lib/CalDAV/IRestorable.php',
87+
'OCA\\DAV\\CalDAV\\Import\\ImportService' => __DIR__ . '/..' . '/../lib/CalDAV/Import/ImportService.php',
88+
'OCA\\DAV\\CalDAV\\Import\\TextImporter' => __DIR__ . '/..' . '/../lib/CalDAV/Import/TextImporter.php',
89+
'OCA\\DAV\\CalDAV\\Import\\XmlImporter' => __DIR__ . '/..' . '/../lib/CalDAV/Import/XmlImporter.php',
8790
'OCA\\DAV\\CalDAV\\Integration\\ExternalCalendar' => __DIR__ . '/..' . '/../lib/CalDAV/Integration/ExternalCalendar.php',
8891
'OCA\\DAV\\CalDAV\\Integration\\ICalendarProvider' => __DIR__ . '/..' . '/../lib/CalDAV/Integration/ICalendarProvider.php',
8992
'OCA\\DAV\\CalDAV\\InvitationResponse\\InvitationResponseServer' => __DIR__ . '/..' . '/../lib/CalDAV/InvitationResponse/InvitationResponseServer.php',
@@ -181,6 +184,7 @@ class ComposerStaticInitDAV
181184
'OCA\\DAV\\Command\\ExportCalendar' => __DIR__ . '/..' . '/../lib/Command/ExportCalendar.php',
182185
'OCA\\DAV\\Command\\FixCalendarSyncCommand' => __DIR__ . '/..' . '/../lib/Command/FixCalendarSyncCommand.php',
183186
'OCA\\DAV\\Command\\GetAbsenceCommand' => __DIR__ . '/..' . '/../lib/Command/GetAbsenceCommand.php',
187+
'OCA\\DAV\\Command\\ImportCalendar' => __DIR__ . '/..' . '/../lib/Command/ImportCalendar.php',
184188
'OCA\\DAV\\Command\\ListAddressbooks' => __DIR__ . '/..' . '/../lib/Command/ListAddressbooks.php',
185189
'OCA\\DAV\\Command\\ListCalendarShares' => __DIR__ . '/..' . '/../lib/Command/ListCalendarShares.php',
186190
'OCA\\DAV\\Command\\ListCalendars' => __DIR__ . '/..' . '/../lib/Command/ListCalendars.php',

apps/dav/lib/CalDAV/CalDavBackend.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2424,14 +2424,19 @@ public function searchPrincipalUri(string $principalUri,
24242424
* @param string $uid
24252425
* @return string|null
24262426
*/
2427-
public function getCalendarObjectByUID($principalUri, $uid) {
2427+
public function getCalendarObjectByUID($principalUri, $uid, $calendarUri = null) {
24282428
$query = $this->db->getQueryBuilder();
24292429
$query->selectAlias('c.uri', 'calendaruri')->selectAlias('co.uri', 'objecturi')
24302430
->from('calendarobjects', 'co')
24312431
->leftJoin('co', 'calendars', 'c', $query->expr()->eq('co.calendarid', 'c.id'))
24322432
->where($query->expr()->eq('c.principaluri', $query->createNamedParameter($principalUri)))
24332433
->andWhere($query->expr()->eq('co.uid', $query->createNamedParameter($uid)))
24342434
->andWhere($query->expr()->isNull('co.deleted_at'));
2435+
2436+
if ($calendarUri !== null) {
2437+
$query->andWhere($query->expr()->eq('c.uri', $query->createNamedParameter($calendarUri)));
2438+
}
2439+
24352440
$stmt = $query->executeQuery();
24362441
$row = $stmt->fetch();
24372442
$stmt->closeCursor();

apps/dav/lib/CalDAV/CalendarImpl.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use Sabre\VObject\ITip\Message;
2929
use Sabre\VObject\Property;
3030
use Sabre\VObject\Reader;
31+
3132
use function Sabre\Uri\split as uriSplit;
3233

3334
class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIsWritable, ICalendarIsShared, ICalendarExport, ICalendarIsEnabled {
@@ -54,6 +55,14 @@ public function getUri(): string {
5455
return $this->calendarInfo['uri'];
5556
}
5657

58+
/**
59+
* @return string the principal URI of the calendar owner
60+
* @since 32.0.0
61+
*/
62+
public function getPrincipalUri(): string {
63+
return $this->calendarInfo['principaluri'];
64+
}
65+
5766
/**
5867
* In comparison to getKey() this function returns a human readable (maybe translated) name
5968
* @since 13.0.0

0 commit comments

Comments
 (0)