diff options
Diffstat (limited to 'apps/dav')
92 files changed, 311 insertions, 403 deletions
diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index 5530fc2cc7d..8ca9c6c577c 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -51,6 +51,9 @@ $authBackend = new OCA\DAV\Connector\PublicAuth( ); $authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend); +/** @var IEventDispatcher $eventDispatcher */ +$eventDispatcher = \OC::$server->get(IEventDispatcher::class); + $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getConfig(), \OC::$server->get(LoggerInterface::class), @@ -60,7 +63,7 @@ $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getTagManager(), \OC::$server->getRequest(), \OC::$server->getPreviewManager(), - \OC::$server->getEventDispatcher(), + $eventDispatcher, \OC::$server->getL10N('dav') ); @@ -115,8 +118,6 @@ $server->addPlugin($linkCheckPlugin); $server->addPlugin($filesDropPlugin); // allow setup of additional plugins $event = new BeforeSabrePubliclyLoadedEvent($server); -/** @var IEventDispatcher $eventDispatcher */ -$eventDispatcher = \OC::$server->get(IEventDispatcher::class); $eventDispatcher->dispatchTyped($event); // And off we go! diff --git a/apps/dav/appinfo/v1/webdav.php b/apps/dav/appinfo/v1/webdav.php index 8dbe846f3ff..7c6a3fc77a6 100644 --- a/apps/dav/appinfo/v1/webdav.php +++ b/apps/dav/appinfo/v1/webdav.php @@ -39,6 +39,8 @@ ignore_user_abort(true); // Turn off output buffering to prevent memory problems \OC_Util::obEnd(); +$dispatcher = \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class); + $serverFactory = new \OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getConfig(), \OC::$server->get(LoggerInterface::class), @@ -48,7 +50,7 @@ $serverFactory = new \OCA\DAV\Connector\Sabre\ServerFactory( \OC::$server->getTagManager(), \OC::$server->getRequest(), \OC::$server->getPreviewManager(), - \OC::$server->getEventDispatcher(), + $dispatcher, \OC::$server->getL10N('dav') ); @@ -76,10 +78,11 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, funct return \OC\Files\Filesystem::getView(); }); -$dispatcher = \OC::$server->getEventDispatcher(); // allow setup of additional plugins $event = new \OCP\SabrePluginEvent($server); $dispatcher->dispatch('OCA\DAV\Connector\Sabre::addPlugin', $event); +$event = new \OCA\DAV\Events\SabrePluginAddEvent($server); +$dispatcher->dispatchTyped($event); // And off we go! $server->exec(); diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index 13b9356f587..6d41801728b 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -233,6 +233,7 @@ return array( 'OCA\\DAV\\Events\\CardDeletedEvent' => $baseDir . '/../lib/Events/CardDeletedEvent.php', 'OCA\\DAV\\Events\\CardMovedEvent' => $baseDir . '/../lib/Events/CardMovedEvent.php', 'OCA\\DAV\\Events\\CardUpdatedEvent' => $baseDir . '/../lib/Events/CardUpdatedEvent.php', + 'OCA\\DAV\\Events\\SabrePluginAddEvent' => $baseDir . '/../lib/Events/SabrePluginAddEvent.php', 'OCA\\DAV\\Events\\SabrePluginAuthInitEvent' => $baseDir . '/../lib/Events/SabrePluginAuthInitEvent.php', 'OCA\\DAV\\Events\\SubscriptionCreatedEvent' => $baseDir . '/../lib/Events/SubscriptionCreatedEvent.php', 'OCA\\DAV\\Events\\SubscriptionDeletedEvent' => $baseDir . '/../lib/Events/SubscriptionDeletedEvent.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index e2b7e905dfe..600397c371e 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -248,6 +248,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Events\\CardDeletedEvent' => __DIR__ . '/..' . '/../lib/Events/CardDeletedEvent.php', 'OCA\\DAV\\Events\\CardMovedEvent' => __DIR__ . '/..' . '/../lib/Events/CardMovedEvent.php', 'OCA\\DAV\\Events\\CardUpdatedEvent' => __DIR__ . '/..' . '/../lib/Events/CardUpdatedEvent.php', + 'OCA\\DAV\\Events\\SabrePluginAddEvent' => __DIR__ . '/..' . '/../lib/Events/SabrePluginAddEvent.php', 'OCA\\DAV\\Events\\SabrePluginAuthInitEvent' => __DIR__ . '/..' . '/../lib/Events/SabrePluginAuthInitEvent.php', 'OCA\\DAV\\Events\\SubscriptionCreatedEvent' => __DIR__ . '/..' . '/../lib/Events/SubscriptionCreatedEvent.php', 'OCA\\DAV\\Events\\SubscriptionDeletedEvent' => __DIR__ . '/..' . '/../lib/Events/SubscriptionDeletedEvent.php', diff --git a/apps/dav/l10n/ar.js b/apps/dav/l10n/ar.js index 175ceb698a3..cfce51a3994 100644 --- a/apps/dav/l10n/ar.js +++ b/apps/dav/l10n/ar.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "هل تقبل الدعوة؟", "Tentative" : "مبدئي", "Your attendance was updated successfully." : "حضورك تم تحديثه بنجاحٍ", - "Invitation canceled" : "تمّ إلغاء الدعوة", - "Invitation updated" : "تمّ تعديل الدعوة", - "Invitation" : "دعوة" + "%1$s has responded your invitation" : "%1$s تفاعل مع دعوتك" }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/dav/l10n/ar.json b/apps/dav/l10n/ar.json index 0f74997fe51..efa28b61117 100644 --- a/apps/dav/l10n/ar.json +++ b/apps/dav/l10n/ar.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "هل تقبل الدعوة؟", "Tentative" : "مبدئي", "Your attendance was updated successfully." : "حضورك تم تحديثه بنجاحٍ", - "Invitation canceled" : "تمّ إلغاء الدعوة", - "Invitation updated" : "تمّ تعديل الدعوة", - "Invitation" : "دعوة" + "%1$s has responded your invitation" : "%1$s تفاعل مع دعوتك" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/dav/l10n/bg.js b/apps/dav/l10n/bg.js index 8b107c6ebf1..fd8e0a6def6 100644 --- a/apps/dav/l10n/bg.js +++ b/apps/dav/l10n/bg.js @@ -187,8 +187,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Приемате ли поканата?", "Tentative" : "Несигурно", "Your attendance was updated successfully." : "Вашето присъствие е актуализирано успешно.", - "Invitation canceled" : "Поканата е отказана", - "Invitation updated" : "Поканата е актуализирана", - "Invitation" : "Покана" + "%1$s has responded your invitation" : "%1$s отговори на вашата покана" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/bg.json b/apps/dav/l10n/bg.json index c205ce3d3ce..716a18768e0 100644 --- a/apps/dav/l10n/bg.json +++ b/apps/dav/l10n/bg.json @@ -185,8 +185,6 @@ "Are you accepting the invitation?" : "Приемате ли поканата?", "Tentative" : "Несигурно", "Your attendance was updated successfully." : "Вашето присъствие е актуализирано успешно.", - "Invitation canceled" : "Поканата е отказана", - "Invitation updated" : "Поканата е актуализирана", - "Invitation" : "Покана" + "%1$s has responded your invitation" : "%1$s отговори на вашата покана" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js index 581bb4ccc10..250f36860d2 100644 --- a/apps/dav/l10n/ca.js +++ b/apps/dav/l10n/ca.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Accepteu la invitació?", "Tentative" : "Provisional", "Your attendance was updated successfully." : "S'ha actualitzat correctament l'assistència.", - "Invitation canceled" : "S'ha cancel·lat la invitació", - "Invitation updated" : "S'ha actualitzat la invitació", - "Invitation" : "Invitació" + "%1$s has responded your invitation" : "%1$s ha respost a la vostra invitació" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json index 522bc984fba..2fe411d9252 100644 --- a/apps/dav/l10n/ca.json +++ b/apps/dav/l10n/ca.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Accepteu la invitació?", "Tentative" : "Provisional", "Your attendance was updated successfully." : "S'ha actualitzat correctament l'assistència.", - "Invitation canceled" : "S'ha cancel·lat la invitació", - "Invitation updated" : "S'ha actualitzat la invitació", - "Invitation" : "Invitació" + "%1$s has responded your invitation" : "%1$s ha respost a la vostra invitació" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js index 538f538765e..179217e947f 100644 --- a/apps/dav/l10n/cs.js +++ b/apps/dav/l10n/cs.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Přijímáte pozvání?", "Tentative" : "Nezávazně", "Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována.", - "Invitation canceled" : "Pozvánka zrušena", - "Invitation updated" : "Pozvánka aktualizována", - "Invitation" : "Pozvání" + "%1$s has responded your invitation" : "%1$s odpověděl(a) na vaši pozvánku" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json index 143feaaa39e..d25e404fd2f 100644 --- a/apps/dav/l10n/cs.json +++ b/apps/dav/l10n/cs.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Přijímáte pozvání?", "Tentative" : "Nezávazně", "Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována.", - "Invitation canceled" : "Pozvánka zrušena", - "Invitation updated" : "Pozvánka aktualizována", - "Invitation" : "Pozvání" + "%1$s has responded your invitation" : "%1$s odpověděl(a) na vaši pozvánku" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index 3cab9651a98..3031b591f4b 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Die Einladung annehmen?", "Tentative" : "Vorläufig", "Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert.", - "Invitation canceled" : "Einladung abgebrochen", - "Invitation updated" : "Einladung aktualisiert", - "Invitation" : "Einladung" + "%1$s has responded your invitation" : "%1$s hat auf deine Einladunge geantwortet." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index 51ee0a7e8b7..67b9fa9f1d9 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Die Einladung annehmen?", "Tentative" : "Vorläufig", "Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert.", - "Invitation canceled" : "Einladung abgebrochen", - "Invitation updated" : "Einladung aktualisiert", - "Invitation" : "Einladung" + "%1$s has responded your invitation" : "%1$s hat auf deine Einladunge geantwortet." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index b8b27ddb851..37ec4c3da4a 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Die Einladung annehmen?", "Tentative" : "Vorläufig", "Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert.", - "Invitation canceled" : "Einladung abgebrochen", - "Invitation updated" : "Einladung aktualisiert", - "Invitation" : "Einladung" + "%1$s has responded your invitation" : "%1$s hat auf Ihre Einladung geantwortet" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index e73a5942f97..b62667636c1 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Die Einladung annehmen?", "Tentative" : "Vorläufig", "Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert.", - "Invitation canceled" : "Einladung abgebrochen", - "Invitation updated" : "Einladung aktualisiert", - "Invitation" : "Einladung" + "%1$s has responded your invitation" : "%1$s hat auf Ihre Einladung geantwortet" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/el.js b/apps/dav/l10n/el.js index 2323e569e60..dfec301c413 100644 --- a/apps/dav/l10n/el.js +++ b/apps/dav/l10n/el.js @@ -114,9 +114,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Παρακαλώ επικοινωνήστε απ' ευθείας με τον διοργανωτή.", "Are you accepting the invitation?" : "Αποδέχεστε την πρόσκληση;", "Tentative" : "Δοκιμαστικό", - "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία.", - "Invitation canceled" : "Η πρόσκληση ακυρώθηκε.", - "Invitation updated" : "Ενημερώθηκε η πρόσκληση.", - "Invitation" : "Πρόσκληση" + "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/el.json b/apps/dav/l10n/el.json index 29915ab7b11..b5ed1f5344c 100644 --- a/apps/dav/l10n/el.json +++ b/apps/dav/l10n/el.json @@ -112,9 +112,6 @@ "Please contact the organizer directly." : "Παρακαλώ επικοινωνήστε απ' ευθείας με τον διοργανωτή.", "Are you accepting the invitation?" : "Αποδέχεστε την πρόσκληση;", "Tentative" : "Δοκιμαστικό", - "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία.", - "Invitation canceled" : "Η πρόσκληση ακυρώθηκε.", - "Invitation updated" : "Ενημερώθηκε η πρόσκληση.", - "Invitation" : "Πρόσκληση" + "Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/en_GB.js b/apps/dav/l10n/en_GB.js index 231a06606d6..248b0a555d0 100644 --- a/apps/dav/l10n/en_GB.js +++ b/apps/dav/l10n/en_GB.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Are you accepting the invitation?", "Tentative" : "Tentative", "Your attendance was updated successfully." : "Your attendance was updated successfully.", - "Invitation canceled" : "Invitation cancelled", - "Invitation updated" : "Invitation updated", - "Invitation" : "Invitation" + "%1$s has responded your invitation" : "%1$s has responded to your invitation" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/en_GB.json b/apps/dav/l10n/en_GB.json index 2aace625894..d29ec38c1db 100644 --- a/apps/dav/l10n/en_GB.json +++ b/apps/dav/l10n/en_GB.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Are you accepting the invitation?", "Tentative" : "Tentative", "Your attendance was updated successfully." : "Your attendance was updated successfully.", - "Invitation canceled" : "Invitation cancelled", - "Invitation updated" : "Invitation updated", - "Invitation" : "Invitation" + "%1$s has responded your invitation" : "%1$s has responded to your invitation" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/es.js b/apps/dav/l10n/es.js index 79c9c9c63a2..56636da06e3 100644 --- a/apps/dav/l10n/es.js +++ b/apps/dav/l10n/es.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "¿Aceptas la invitación?", "Tentative" : "Provisional", "Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito.", - "Invitation canceled" : "Invitación cancelada", - "Invitation updated" : "Invitación actualizada", - "Invitation" : "Invitación" + "%1$s has responded your invitation" : "%1$s ha respondido a su invitación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dav/l10n/es.json b/apps/dav/l10n/es.json index d1339b86e2d..36d94c94397 100644 --- a/apps/dav/l10n/es.json +++ b/apps/dav/l10n/es.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "¿Aceptas la invitación?", "Tentative" : "Provisional", "Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito.", - "Invitation canceled" : "Invitación cancelada", - "Invitation updated" : "Invitación actualizada", - "Invitation" : "Invitación" + "%1$s has responded your invitation" : "%1$s ha respondido a su invitación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dav/l10n/eu.js b/apps/dav/l10n/eu.js index 7a3cd36e87a..f1d7da5dcea 100644 --- a/apps/dav/l10n/eu.js +++ b/apps/dav/l10n/eu.js @@ -119,6 +119,7 @@ OC.L10N.register( "You updated contact {card} in address book {addressbook}" : "{card} kontaktua eguneratu duzu {addressbook} helbide-liburuan", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>kontaktu</strong> edo <strong>helbide-liburu</strong>bat aldatu da", "Accounts" : "Kontuak", + "System address book which holds all accounts" : "Kontu guztiak dituen sistemaren helbide-liburua", "File is not updatable: %1$s" : "Fitxategia ez da eguneragarria: %1$s", "Could not write to final file, canceled by hook" : "Ezin izan da azken fitxategian idatzi, kakoak bertan behera utzi du", "Could not write file contents" : "Ezin izan dira fitxategiaren edukiak idatzi", @@ -188,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Gonbidapena onartzen duzu?", "Tentative" : "Behin behinekoa", "Your attendance was updated successfully." : "Zure parte-hartzea ondo eguneratu da.", - "Invitation canceled" : "Gonbidapena ezeztatua", - "Invitation updated" : "Gonbidapena eguneratu da", - "Invitation" : "Gonbidapena" + "%1$s has responded your invitation" : "%1$s-k zure gonbidapena erantzun du" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/eu.json b/apps/dav/l10n/eu.json index 44fe901dc2d..a1c14611cc3 100644 --- a/apps/dav/l10n/eu.json +++ b/apps/dav/l10n/eu.json @@ -117,6 +117,7 @@ "You updated contact {card} in address book {addressbook}" : "{card} kontaktua eguneratu duzu {addressbook} helbide-liburuan", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>kontaktu</strong> edo <strong>helbide-liburu</strong>bat aldatu da", "Accounts" : "Kontuak", + "System address book which holds all accounts" : "Kontu guztiak dituen sistemaren helbide-liburua", "File is not updatable: %1$s" : "Fitxategia ez da eguneragarria: %1$s", "Could not write to final file, canceled by hook" : "Ezin izan da azken fitxategian idatzi, kakoak bertan behera utzi du", "Could not write file contents" : "Ezin izan dira fitxategiaren edukiak idatzi", @@ -186,8 +187,6 @@ "Are you accepting the invitation?" : "Gonbidapena onartzen duzu?", "Tentative" : "Behin behinekoa", "Your attendance was updated successfully." : "Zure parte-hartzea ondo eguneratu da.", - "Invitation canceled" : "Gonbidapena ezeztatua", - "Invitation updated" : "Gonbidapena eguneratu da", - "Invitation" : "Gonbidapena" + "%1$s has responded your invitation" : "%1$s-k zure gonbidapena erantzun du" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/fi.js b/apps/dav/l10n/fi.js index a466283cb28..325527b1b10 100644 --- a/apps/dav/l10n/fi.js +++ b/apps/dav/l10n/fi.js @@ -142,9 +142,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Ota yhteys suoraan järjestäjään.", "Are you accepting the invitation?" : "Hyväksytkö kutsun?", "Tentative" : "Alustava", - "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti.", - "Invitation canceled" : "Kutsu peruttu", - "Invitation updated" : "Kutsu päivitetty", - "Invitation" : "Kutsu" + "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/fi.json b/apps/dav/l10n/fi.json index 4d66dd2266f..12a9388c57a 100644 --- a/apps/dav/l10n/fi.json +++ b/apps/dav/l10n/fi.json @@ -140,9 +140,6 @@ "Please contact the organizer directly." : "Ota yhteys suoraan järjestäjään.", "Are you accepting the invitation?" : "Hyväksytkö kutsun?", "Tentative" : "Alustava", - "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti.", - "Invitation canceled" : "Kutsu peruttu", - "Invitation updated" : "Kutsu päivitetty", - "Invitation" : "Kutsu" + "Your attendance was updated successfully." : "Osallistumisesi päivitettiin onnistuneesti." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js index d4547b65fb1..76b675f923e 100644 --- a/apps/dav/l10n/fr.js +++ b/apps/dav/l10n/fr.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Acceptez-vous l'invitation ?", "Tentative" : "Provisoire", "Your attendance was updated successfully." : "Votre présence a été mise à jour avec succès.", - "Invitation canceled" : "Invitation annulée", - "Invitation updated" : "Invitation mise à jour", - "Invitation" : "Invitation" + "%1$s has responded your invitation" : "\"1%1$s\" a répondu à votre invitation" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json index 672f4174af3..f31cc9a5c1c 100644 --- a/apps/dav/l10n/fr.json +++ b/apps/dav/l10n/fr.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Acceptez-vous l'invitation ?", "Tentative" : "Provisoire", "Your attendance was updated successfully." : "Votre présence a été mise à jour avec succès.", - "Invitation canceled" : "Invitation annulée", - "Invitation updated" : "Invitation mise à jour", - "Invitation" : "Invitation" + "%1$s has responded your invitation" : "\"1%1$s\" a répondu à votre invitation" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dav/l10n/gl.js b/apps/dav/l10n/gl.js index 288ad39f189..7dcc290e913 100644 --- a/apps/dav/l10n/gl.js +++ b/apps/dav/l10n/gl.js @@ -9,29 +9,29 @@ OC.L10N.register( "{actor} deleted calendar {calendar}" : "{actor} eliminou o calendario {calendar}", "You deleted calendar {calendar}" : "Eliminou o calendario {calendar}", "{actor} updated calendar {calendar}" : "{actor} actualizou o calendario {calendar}", - "You updated calendar {calendar}" : "Vostede actualizou o calendario {calendar}", + "You updated calendar {calendar}" : "Vde. actualizou o calendario {calendar}", "{actor} restored calendar {calendar}" : "{actor} restaurou o calendario {calendar}", - "You restored calendar {calendar}" : "Vostede restaurou o calendario {calendar}", - "You shared calendar {calendar} as public link" : "Vostede compartiu o calendario {calendar} como ligazón pública", - "You removed public link for calendar {calendar}" : "Vostede retirou a ligazón pública do calendario {calendar}", - "{actor} shared calendar {calendar} with you" : "{actor} compartiu o calendario {calendar} con vostede", - "You shared calendar {calendar} with {user}" : "Vostede compartiu o calendario {calendar} con {user}", + "You restored calendar {calendar}" : "Vde. restaurou o calendario {calendar}", + "You shared calendar {calendar} as public link" : "Vde. compartiu o calendario {calendar} como ligazón pública", + "You removed public link for calendar {calendar}" : "Vde. retirou a ligazón pública do calendario {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} compartiu o calendario {calendar} con Vde.", + "You shared calendar {calendar} with {user}" : "Vde. compartiu o calendario {calendar} con {user}", "{actor} shared calendar {calendar} with {user}" : "{actor} compartiu o calendario {calendar} con {user}", - "{actor} unshared calendar {calendar} from you" : "{actor} deixou de compartir o calendario {calendar} de vostede", - "You unshared calendar {calendar} from {user}" : "Vostede deixou de compartir o calendario {calendar} de {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} deixou de compartir o calendario {calendar} de Vde.", + "You unshared calendar {calendar} from {user}" : "Vde. deixou de compartir o calendario {calendar} de {user}", "{actor} unshared calendar {calendar} from {user}" : "{actor} deixou de compartir o calendario {calendar} de {user}", "{actor} unshared calendar {calendar} from themselves" : "{actor} deixou de compartir o seu propio calendario {calendar}", - "You shared calendar {calendar} with group {group}" : "Vostede compartiu o calendario {calendar} co grupo {group}", + "You shared calendar {calendar} with group {group}" : "Vde. compartiu o calendario {calendar} co grupo {group}", "{actor} shared calendar {calendar} with group {group}" : "{actor} compartiu o calendario {calendar} co grupo {group}", - "You unshared calendar {calendar} from group {group}" : "Vostede deixou de compartir o calendario {calendar} do grupo {group}", + "You unshared calendar {calendar} from group {group}" : "Vde. deixou de compartir o calendario {calendar} do grupo {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} deixou de compartir o calendario {calendar} do grupo {group}", "Untitled event" : "Evento sen título", "{actor} created event {event} in calendar {calendar}" : "{actor} creou o evento {event} no calendario {calendar}", - "You created event {event} in calendar {calendar}" : "Vostede creou o evento {event} no calendario {calendar}", + "You created event {event} in calendar {calendar}" : "Vde. creou o evento {event} no calendario {calendar}", "{actor} deleted event {event} from calendar {calendar}" : "{actor} eliminou o evento {event} do calendario {calendar}", - "You deleted event {event} from calendar {calendar}" : "Vostede eliminou o evento {event} do calendario {calendar}", + "You deleted event {event} from calendar {calendar}" : "Vde. eliminou o evento {event} do calendario {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} actualizou o evento {event} no calendario {calendar}", - "You updated event {event} in calendar {calendar}" : "Vostede actualizou o evento {event} no calendario {calendar}", + "You updated event {event} in calendar {calendar}" : "Vde. actualizou o evento {event} no calendario {calendar}", "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moveu o evento {event} do calendario {sourceCalendar} ao calendario {targetCalendar}", "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Moveu o evento {evento} do calendario {sourceCalendar} ao calendario {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} restaurou o evento {evento} do calendario {calendar}", @@ -95,28 +95,28 @@ OC.L10N.register( "More options at %s" : "Máis opcións en %s", "Contacts" : "Contactos", "{actor} created address book {addressbook}" : "{actor} creou o caderno de enderezos {addressbook}", - "You created address book {addressbook}" : "Vostede creou o caderno de enderezos {addressbook}", + "You created address book {addressbook}" : "Vde. creou o caderno de enderezos {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} eliminou o caderno de enderezos {addressbook}", - "You deleted address book {addressbook}" : "Vostede eliminou o caderno de enderezos {addressbook}", + "You deleted address book {addressbook}" : "Vde. eliminou o caderno de enderezos {addressbook}", "{actor} updated address book {addressbook}" : "{actor} actualizou o caderno de enderezos {addressbook}", - "You updated address book {addressbook}" : "Vostede actualizou o caderno de enderezos {addressbook}", - "{actor} shared address book {addressbook} with you" : "{actor} compartiu o caderno de enderezos {addressbook} con vostede", - "You shared address book {addressbook} with {user}" : "Vostede compartiu o caderno de enderezos {addressbook} con {user}", + "You updated address book {addressbook}" : "Vde. actualizou o caderno de enderezos {addressbook}", + "{actor} shared address book {addressbook} with you" : "{actor} compartiu o caderno de enderezos {addressbook} con Vde.", + "You shared address book {addressbook} with {user}" : "Vde. compartiu o caderno de enderezos {addressbook} con {user}", "{actor} shared address book {addressbook} with {user}" : "{actor} compartiu o caderno de enderezos {addressbook} con {user}", "{actor} unshared address book {addressbook} from you" : "{actor} deixou de compartir o seu caderno de enderezos {addressbook}", - "You unshared address book {addressbook} from {user}" : "Vostede deixou de compartir o caderno de enderezos {addressbook} de {user}", + "You unshared address book {addressbook} from {user}" : "Vde. deixou de compartir o caderno de enderezos {addressbook} de {user}", "{actor} unshared address book {addressbook} from {user}" : "{actor} deixou de compartir o caderno de enderezos {addressbook} de {user}", "{actor} unshared address book {addressbook} from themselves" : "{actor} deixaron de compartir o seu caderno de enderezos {addressbook}", - "You shared address book {addressbook} with group {group}" : "Vostede compartiu o caderno de enderezos {addressbook} co grupo {group}", + "You shared address book {addressbook} with group {group}" : "Vde. compartiu o caderno de enderezos {addressbook} co grupo {group}", "{actor} shared address book {addressbook} with group {group}" : "{actor} compartiu o caderno de enderezos {addressbook} co grupo {group}", - "You unshared address book {addressbook} from group {group}" : "Vostede deixou de compartir o caderno de enderezos {addressbook} do grupo {group}", + "You unshared address book {addressbook} from group {group}" : "Vde. deixou de compartir o caderno de enderezos {addressbook} do grupo {group}", "{actor} unshared address book {addressbook} from group {group}" : "{actor} deixou de compartir o caderno de enderezos {addressbook} do grupo {group}", "{actor} created contact {card} in address book {addressbook}" : "{actor} creou o contacto {card} no caderno de enderezos {addressbook}", - "You created contact {card} in address book {addressbook}" : "Vostede creou o contacto {card} no caderno de enderezos {addressbook}", + "You created contact {card} in address book {addressbook}" : "Vde. creou o contacto {card} no caderno de enderezos {addressbook}", "{actor} deleted contact {card} from address book {addressbook}" : "{actor} eliminou o contacto {card} do caderno de enderezos {addressbook}", - "You deleted contact {card} from address book {addressbook}" : "Vostede eliminou o contacto {card} do caderno de enderezos {addressbook}", + "You deleted contact {card} from address book {addressbook}" : "Vde. eliminou o contacto {card} do caderno de enderezos {addressbook}", "{actor} updated contact {card} in address book {addressbook}" : "{actor} actualizou o contacto {card} no caderno de enderezos {addressbook}", - "You updated contact {card} in address book {addressbook}" : "Vostede actualizou o contacto {card} no caderno de enderezos {addressbook}", + "You updated contact {card} in address book {addressbook}" : "Vde. actualizou o contacto {card} no caderno de enderezos {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Foi modificado un <strong>contacto</strong> ou <strong>caderno de enderezos</strong>", "Accounts" : "Contas", "System address book which holds all accounts" : "Caderno de enderezos do sistema que contén todas as contas", @@ -186,11 +186,9 @@ OC.L10N.register( "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrese de ter configurado correctamente {emailopen}o servidor de correo-e{linkclose}.", "There was an error updating your attendance status." : "Produciuse un erro ao actualizar o seu estado de asistencia.", "Please contact the organizer directly." : "Contacte directamente co organizador.", - "Are you accepting the invitation?" : "Acepta vostede o convite?", + "Are you accepting the invitation?" : "Acepta Vde. o convite?", "Tentative" : "Provisional", "Your attendance was updated successfully." : "A súa asistencia foi actualizada satisfactoriamente.", - "Invitation canceled" : "Convite cancelado", - "Invitation updated" : "Convite actualizado", - "Invitation" : "Convite" + "%1$s has responded your invitation" : "%1$s respondeu ao seu convite" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/gl.json b/apps/dav/l10n/gl.json index 17e88139f67..5d8a5b85f0b 100644 --- a/apps/dav/l10n/gl.json +++ b/apps/dav/l10n/gl.json @@ -7,29 +7,29 @@ "{actor} deleted calendar {calendar}" : "{actor} eliminou o calendario {calendar}", "You deleted calendar {calendar}" : "Eliminou o calendario {calendar}", "{actor} updated calendar {calendar}" : "{actor} actualizou o calendario {calendar}", - "You updated calendar {calendar}" : "Vostede actualizou o calendario {calendar}", + "You updated calendar {calendar}" : "Vde. actualizou o calendario {calendar}", "{actor} restored calendar {calendar}" : "{actor} restaurou o calendario {calendar}", - "You restored calendar {calendar}" : "Vostede restaurou o calendario {calendar}", - "You shared calendar {calendar} as public link" : "Vostede compartiu o calendario {calendar} como ligazón pública", - "You removed public link for calendar {calendar}" : "Vostede retirou a ligazón pública do calendario {calendar}", - "{actor} shared calendar {calendar} with you" : "{actor} compartiu o calendario {calendar} con vostede", - "You shared calendar {calendar} with {user}" : "Vostede compartiu o calendario {calendar} con {user}", + "You restored calendar {calendar}" : "Vde. restaurou o calendario {calendar}", + "You shared calendar {calendar} as public link" : "Vde. compartiu o calendario {calendar} como ligazón pública", + "You removed public link for calendar {calendar}" : "Vde. retirou a ligazón pública do calendario {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} compartiu o calendario {calendar} con Vde.", + "You shared calendar {calendar} with {user}" : "Vde. compartiu o calendario {calendar} con {user}", "{actor} shared calendar {calendar} with {user}" : "{actor} compartiu o calendario {calendar} con {user}", - "{actor} unshared calendar {calendar} from you" : "{actor} deixou de compartir o calendario {calendar} de vostede", - "You unshared calendar {calendar} from {user}" : "Vostede deixou de compartir o calendario {calendar} de {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} deixou de compartir o calendario {calendar} de Vde.", + "You unshared calendar {calendar} from {user}" : "Vde. deixou de compartir o calendario {calendar} de {user}", "{actor} unshared calendar {calendar} from {user}" : "{actor} deixou de compartir o calendario {calendar} de {user}", "{actor} unshared calendar {calendar} from themselves" : "{actor} deixou de compartir o seu propio calendario {calendar}", - "You shared calendar {calendar} with group {group}" : "Vostede compartiu o calendario {calendar} co grupo {group}", + "You shared calendar {calendar} with group {group}" : "Vde. compartiu o calendario {calendar} co grupo {group}", "{actor} shared calendar {calendar} with group {group}" : "{actor} compartiu o calendario {calendar} co grupo {group}", - "You unshared calendar {calendar} from group {group}" : "Vostede deixou de compartir o calendario {calendar} do grupo {group}", + "You unshared calendar {calendar} from group {group}" : "Vde. deixou de compartir o calendario {calendar} do grupo {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} deixou de compartir o calendario {calendar} do grupo {group}", "Untitled event" : "Evento sen título", "{actor} created event {event} in calendar {calendar}" : "{actor} creou o evento {event} no calendario {calendar}", - "You created event {event} in calendar {calendar}" : "Vostede creou o evento {event} no calendario {calendar}", + "You created event {event} in calendar {calendar}" : "Vde. creou o evento {event} no calendario {calendar}", "{actor} deleted event {event} from calendar {calendar}" : "{actor} eliminou o evento {event} do calendario {calendar}", - "You deleted event {event} from calendar {calendar}" : "Vostede eliminou o evento {event} do calendario {calendar}", + "You deleted event {event} from calendar {calendar}" : "Vde. eliminou o evento {event} do calendario {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} actualizou o evento {event} no calendario {calendar}", - "You updated event {event} in calendar {calendar}" : "Vostede actualizou o evento {event} no calendario {calendar}", + "You updated event {event} in calendar {calendar}" : "Vde. actualizou o evento {event} no calendario {calendar}", "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moveu o evento {event} do calendario {sourceCalendar} ao calendario {targetCalendar}", "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Moveu o evento {evento} do calendario {sourceCalendar} ao calendario {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} restaurou o evento {evento} do calendario {calendar}", @@ -93,28 +93,28 @@ "More options at %s" : "Máis opcións en %s", "Contacts" : "Contactos", "{actor} created address book {addressbook}" : "{actor} creou o caderno de enderezos {addressbook}", - "You created address book {addressbook}" : "Vostede creou o caderno de enderezos {addressbook}", + "You created address book {addressbook}" : "Vde. creou o caderno de enderezos {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} eliminou o caderno de enderezos {addressbook}", - "You deleted address book {addressbook}" : "Vostede eliminou o caderno de enderezos {addressbook}", + "You deleted address book {addressbook}" : "Vde. eliminou o caderno de enderezos {addressbook}", "{actor} updated address book {addressbook}" : "{actor} actualizou o caderno de enderezos {addressbook}", - "You updated address book {addressbook}" : "Vostede actualizou o caderno de enderezos {addressbook}", - "{actor} shared address book {addressbook} with you" : "{actor} compartiu o caderno de enderezos {addressbook} con vostede", - "You shared address book {addressbook} with {user}" : "Vostede compartiu o caderno de enderezos {addressbook} con {user}", + "You updated address book {addressbook}" : "Vde. actualizou o caderno de enderezos {addressbook}", + "{actor} shared address book {addressbook} with you" : "{actor} compartiu o caderno de enderezos {addressbook} con Vde.", + "You shared address book {addressbook} with {user}" : "Vde. compartiu o caderno de enderezos {addressbook} con {user}", "{actor} shared address book {addressbook} with {user}" : "{actor} compartiu o caderno de enderezos {addressbook} con {user}", "{actor} unshared address book {addressbook} from you" : "{actor} deixou de compartir o seu caderno de enderezos {addressbook}", - "You unshared address book {addressbook} from {user}" : "Vostede deixou de compartir o caderno de enderezos {addressbook} de {user}", + "You unshared address book {addressbook} from {user}" : "Vde. deixou de compartir o caderno de enderezos {addressbook} de {user}", "{actor} unshared address book {addressbook} from {user}" : "{actor} deixou de compartir o caderno de enderezos {addressbook} de {user}", "{actor} unshared address book {addressbook} from themselves" : "{actor} deixaron de compartir o seu caderno de enderezos {addressbook}", - "You shared address book {addressbook} with group {group}" : "Vostede compartiu o caderno de enderezos {addressbook} co grupo {group}", + "You shared address book {addressbook} with group {group}" : "Vde. compartiu o caderno de enderezos {addressbook} co grupo {group}", "{actor} shared address book {addressbook} with group {group}" : "{actor} compartiu o caderno de enderezos {addressbook} co grupo {group}", - "You unshared address book {addressbook} from group {group}" : "Vostede deixou de compartir o caderno de enderezos {addressbook} do grupo {group}", + "You unshared address book {addressbook} from group {group}" : "Vde. deixou de compartir o caderno de enderezos {addressbook} do grupo {group}", "{actor} unshared address book {addressbook} from group {group}" : "{actor} deixou de compartir o caderno de enderezos {addressbook} do grupo {group}", "{actor} created contact {card} in address book {addressbook}" : "{actor} creou o contacto {card} no caderno de enderezos {addressbook}", - "You created contact {card} in address book {addressbook}" : "Vostede creou o contacto {card} no caderno de enderezos {addressbook}", + "You created contact {card} in address book {addressbook}" : "Vde. creou o contacto {card} no caderno de enderezos {addressbook}", "{actor} deleted contact {card} from address book {addressbook}" : "{actor} eliminou o contacto {card} do caderno de enderezos {addressbook}", - "You deleted contact {card} from address book {addressbook}" : "Vostede eliminou o contacto {card} do caderno de enderezos {addressbook}", + "You deleted contact {card} from address book {addressbook}" : "Vde. eliminou o contacto {card} do caderno de enderezos {addressbook}", "{actor} updated contact {card} in address book {addressbook}" : "{actor} actualizou o contacto {card} no caderno de enderezos {addressbook}", - "You updated contact {card} in address book {addressbook}" : "Vostede actualizou o contacto {card} no caderno de enderezos {addressbook}", + "You updated contact {card} in address book {addressbook}" : "Vde. actualizou o contacto {card} no caderno de enderezos {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Foi modificado un <strong>contacto</strong> ou <strong>caderno de enderezos</strong>", "Accounts" : "Contas", "System address book which holds all accounts" : "Caderno de enderezos do sistema que contén todas as contas", @@ -184,11 +184,9 @@ "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrese de ter configurado correctamente {emailopen}o servidor de correo-e{linkclose}.", "There was an error updating your attendance status." : "Produciuse un erro ao actualizar o seu estado de asistencia.", "Please contact the organizer directly." : "Contacte directamente co organizador.", - "Are you accepting the invitation?" : "Acepta vostede o convite?", + "Are you accepting the invitation?" : "Acepta Vde. o convite?", "Tentative" : "Provisional", "Your attendance was updated successfully." : "A súa asistencia foi actualizada satisfactoriamente.", - "Invitation canceled" : "Convite cancelado", - "Invitation updated" : "Convite actualizado", - "Invitation" : "Convite" + "%1$s has responded your invitation" : "%1$s respondeu ao seu convite" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/he.js b/apps/dav/l10n/he.js index 2230c72ddd6..20316f2dc51 100644 --- a/apps/dav/l10n/he.js +++ b/apps/dav/l10n/he.js @@ -96,9 +96,6 @@ OC.L10N.register( "Please contact the organizer directly." : "נא ליצור קשר עם הגוף מארגן ישירות.", "Are you accepting the invitation?" : "האם להיענות להזמנה?", "Tentative" : "טנטטיבית", - "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה.", - "Invitation canceled" : "ההזמנה בוטלה", - "Invitation updated" : "ההזמנה עודכנה", - "Invitation" : "הזמנה" + "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/dav/l10n/he.json b/apps/dav/l10n/he.json index ca72f52dcf8..2eebd45a9f5 100644 --- a/apps/dav/l10n/he.json +++ b/apps/dav/l10n/he.json @@ -94,9 +94,6 @@ "Please contact the organizer directly." : "נא ליצור קשר עם הגוף מארגן ישירות.", "Are you accepting the invitation?" : "האם להיענות להזמנה?", "Tentative" : "טנטטיבית", - "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה.", - "Invitation canceled" : "ההזמנה בוטלה", - "Invitation updated" : "ההזמנה עודכנה", - "Invitation" : "הזמנה" + "Your attendance was updated successfully." : "ההשתתפות שלך עודכנה בהצלחה." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/dav/l10n/hr.js b/apps/dav/l10n/hr.js index 546f9caefe3..8b0f112e356 100644 --- a/apps/dav/l10n/hr.js +++ b/apps/dav/l10n/hr.js @@ -136,9 +136,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Izravno se obratite organizatoru.", "Are you accepting the invitation?" : "Prihvaćate li poziv?", "Tentative" : "Uvjetno", - "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana.", - "Invitation canceled" : "Poziv je otkazan", - "Invitation updated" : "Poziv je ažuriran", - "Invitation" : "Pozivnica" + "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana." }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/dav/l10n/hr.json b/apps/dav/l10n/hr.json index 15542eb47ef..e7d9dcbd24d 100644 --- a/apps/dav/l10n/hr.json +++ b/apps/dav/l10n/hr.json @@ -134,9 +134,6 @@ "Please contact the organizer directly." : "Izravno se obratite organizatoru.", "Are you accepting the invitation?" : "Prihvaćate li poziv?", "Tentative" : "Uvjetno", - "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana.", - "Invitation canceled" : "Poziv je otkazan", - "Invitation updated" : "Poziv je ažuriran", - "Invitation" : "Pozivnica" + "Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana." },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js index 75f7b8b2228..75682a1df19 100644 --- a/apps/dav/l10n/hu.js +++ b/apps/dav/l10n/hu.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Elfogadja az meghívást?", "Tentative" : "Feltételes", "Your attendance was updated successfully." : "A részvétele frissítése sikeres.", - "Invitation canceled" : "Meghívás lemondva", - "Invitation updated" : "Meghívó frissítve", - "Invitation" : "Meghívó" + "%1$s has responded your invitation" : "%1$s válaszolt a meghívására" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json index 04cf6a4be06..da531dd174c 100644 --- a/apps/dav/l10n/hu.json +++ b/apps/dav/l10n/hu.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Elfogadja az meghívást?", "Tentative" : "Feltételes", "Your attendance was updated successfully." : "A részvétele frissítése sikeres.", - "Invitation canceled" : "Meghívás lemondva", - "Invitation updated" : "Meghívó frissítve", - "Invitation" : "Meghívó" + "%1$s has responded your invitation" : "%1$s válaszolt a meghívására" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/it.js b/apps/dav/l10n/it.js index 53af46e951d..33ad3917b64 100644 --- a/apps/dav/l10n/it.js +++ b/apps/dav/l10n/it.js @@ -160,9 +160,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Contatta direttamente l'amministratore.", "Are you accepting the invitation?" : "Accetti l'invito?", "Tentative" : "Provvisorio", - "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente.", - "Invitation canceled" : "Invito annullato", - "Invitation updated" : "Invito aggiornato", - "Invitation" : "Invito" + "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dav/l10n/it.json b/apps/dav/l10n/it.json index fcb668d6564..5e142ed766e 100644 --- a/apps/dav/l10n/it.json +++ b/apps/dav/l10n/it.json @@ -158,9 +158,6 @@ "Please contact the organizer directly." : "Contatta direttamente l'amministratore.", "Are you accepting the invitation?" : "Accetti l'invito?", "Tentative" : "Provvisorio", - "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente.", - "Invitation canceled" : "Invito annullato", - "Invitation updated" : "Invito aggiornato", - "Invitation" : "Invito" + "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dav/l10n/ja.js b/apps/dav/l10n/ja.js index 6bf4f4a589d..7879795980b 100644 --- a/apps/dav/l10n/ja.js +++ b/apps/dav/l10n/ja.js @@ -174,9 +174,6 @@ OC.L10N.register( "Please contact the organizer directly." : "主催者に直接お問い合わせください。", "Are you accepting the invitation?" : "招待を受け入れていますか?", "Tentative" : "暫定的", - "Your attendance was updated successfully." : "出席は正常に更新されました。", - "Invitation canceled" : "招待のキャンセル", - "Invitation updated" : "招待の更新", - "Invitation" : "招待" + "Your attendance was updated successfully." : "出席は正常に更新されました。" }, "nplurals=1; plural=0;"); diff --git a/apps/dav/l10n/ja.json b/apps/dav/l10n/ja.json index ffefc7471ba..243fa54fe35 100644 --- a/apps/dav/l10n/ja.json +++ b/apps/dav/l10n/ja.json @@ -172,9 +172,6 @@ "Please contact the organizer directly." : "主催者に直接お問い合わせください。", "Are you accepting the invitation?" : "招待を受け入れていますか?", "Tentative" : "暫定的", - "Your attendance was updated successfully." : "出席は正常に更新されました。", - "Invitation canceled" : "招待のキャンセル", - "Invitation updated" : "招待の更新", - "Invitation" : "招待" + "Your attendance was updated successfully." : "出席は正常に更新されました。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/l10n/ko.js b/apps/dav/l10n/ko.js index 5f37a04a480..7226b1c1f65 100644 --- a/apps/dav/l10n/ko.js +++ b/apps/dav/l10n/ko.js @@ -178,9 +178,6 @@ OC.L10N.register( "Please contact the organizer directly." : "주최자에게 직접 연락하십시오.", "Are you accepting the invitation?" : "초대를 수락하시겠습니까?", "Tentative" : "보류", - "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다.", - "Invitation canceled" : "초대장 취소됨", - "Invitation updated" : "초대장 업데이트됨", - "Invitation" : "초대" + "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다." }, "nplurals=1; plural=0;"); diff --git a/apps/dav/l10n/ko.json b/apps/dav/l10n/ko.json index 2bf4574188d..f881ad805ba 100644 --- a/apps/dav/l10n/ko.json +++ b/apps/dav/l10n/ko.json @@ -176,9 +176,6 @@ "Please contact the organizer directly." : "주최자에게 직접 연락하십시오.", "Are you accepting the invitation?" : "초대를 수락하시겠습니까?", "Tentative" : "보류", - "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다.", - "Invitation canceled" : "초대장 취소됨", - "Invitation updated" : "초대장 업데이트됨", - "Invitation" : "초대" + "Your attendance was updated successfully." : "참석 정보를 업데이트했습니다." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/l10n/lt_LT.js b/apps/dav/l10n/lt_LT.js index 272c77dc91a..62c7b3d6172 100644 --- a/apps/dav/l10n/lt_LT.js +++ b/apps/dav/l10n/lt_LT.js @@ -105,9 +105,6 @@ OC.L10N.register( "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Įsitikinkite, kad tinkamai nusistatėte {emailopen}el. pašto serverį{linkclose}.", "Please contact the organizer directly." : "Prašome susisiekti su organizatoriumi tiesiogiai.", "Are you accepting the invitation?" : "Ar priimate pakvietimą?", - "Tentative" : "Preliminarus", - "Invitation canceled" : "Pakvietimo atsisakyta", - "Invitation updated" : "Pakvietimas atnaujintas", - "Invitation" : "Pakvietimas" + "Tentative" : "Preliminarus" }, "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/dav/l10n/lt_LT.json b/apps/dav/l10n/lt_LT.json index c7f58bfe1fc..f4fbf235aa5 100644 --- a/apps/dav/l10n/lt_LT.json +++ b/apps/dav/l10n/lt_LT.json @@ -103,9 +103,6 @@ "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Įsitikinkite, kad tinkamai nusistatėte {emailopen}el. pašto serverį{linkclose}.", "Please contact the organizer directly." : "Prašome susisiekti su organizatoriumi tiesiogiai.", "Are you accepting the invitation?" : "Ar priimate pakvietimą?", - "Tentative" : "Preliminarus", - "Invitation canceled" : "Pakvietimo atsisakyta", - "Invitation updated" : "Pakvietimas atnaujintas", - "Invitation" : "Pakvietimas" + "Tentative" : "Preliminarus" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/mk.js b/apps/dav/l10n/mk.js index eff705a4afe..581373b7218 100644 --- a/apps/dav/l10n/mk.js +++ b/apps/dav/l10n/mk.js @@ -148,9 +148,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Контактирајте го организаторот директно.", "Are you accepting the invitation?" : "Дали ја прифаќате поканата?", "Tentative" : "Прелиминарно", - "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано.", - "Invitation canceled" : "Поканата е откажана", - "Invitation updated" : "Поканата е ажурирана", - "Invitation" : "Покани" + "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано." }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/dav/l10n/mk.json b/apps/dav/l10n/mk.json index f3226f540f1..ac515972e06 100644 --- a/apps/dav/l10n/mk.json +++ b/apps/dav/l10n/mk.json @@ -146,9 +146,6 @@ "Please contact the organizer directly." : "Контактирајте го организаторот директно.", "Are you accepting the invitation?" : "Дали ја прифаќате поканата?", "Tentative" : "Прелиминарно", - "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано.", - "Invitation canceled" : "Поканата е откажана", - "Invitation updated" : "Поканата е ажурирана", - "Invitation" : "Покани" + "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано." },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/dav/l10n/nb.js b/apps/dav/l10n/nb.js index fc7a25373b3..794a9fad7f1 100644 --- a/apps/dav/l10n/nb.js +++ b/apps/dav/l10n/nb.js @@ -181,9 +181,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Ta kontakt med arrangøren direkte.", "Are you accepting the invitation?" : "Aksepterer du invitasjonen?", "Tentative" : "Foreløpig", - "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert.", - "Invitation canceled" : "Invitasjon tilbakekalt", - "Invitation updated" : "Invitasjon oppdatert", - "Invitation" : "Invitasjon" + "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/nb.json b/apps/dav/l10n/nb.json index 7ce5863c3e5..ea94625a9ba 100644 --- a/apps/dav/l10n/nb.json +++ b/apps/dav/l10n/nb.json @@ -179,9 +179,6 @@ "Please contact the organizer directly." : "Ta kontakt med arrangøren direkte.", "Are you accepting the invitation?" : "Aksepterer du invitasjonen?", "Tentative" : "Foreløpig", - "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert.", - "Invitation canceled" : "Invitasjon tilbakekalt", - "Invitation updated" : "Invitasjon oppdatert", - "Invitation" : "Invitasjon" + "Your attendance was updated successfully." : "Deltakelsen din ble oppdatert." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/nl.js b/apps/dav/l10n/nl.js index 9446a2c3b25..b4d0e15cc2c 100644 --- a/apps/dav/l10n/nl.js +++ b/apps/dav/l10n/nl.js @@ -161,9 +161,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Neem rechtstreeks contact op met de organisator.", "Are you accepting the invitation?" : "Neem je de uitnodiging aan?", "Tentative" : "Onder voorbehoud", - "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt.", - "Invitation canceled" : "Uitnodiging geannuleerd", - "Invitation updated" : "Uitnodiging bijgewerkt", - "Invitation" : "Uitnodiging" + "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/nl.json b/apps/dav/l10n/nl.json index 79e976ec035..82154ac936c 100644 --- a/apps/dav/l10n/nl.json +++ b/apps/dav/l10n/nl.json @@ -159,9 +159,6 @@ "Please contact the organizer directly." : "Neem rechtstreeks contact op met de organisator.", "Are you accepting the invitation?" : "Neem je de uitnodiging aan?", "Tentative" : "Onder voorbehoud", - "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt.", - "Invitation canceled" : "Uitnodiging geannuleerd", - "Invitation updated" : "Uitnodiging bijgewerkt", - "Invitation" : "Uitnodiging" + "Your attendance was updated successfully." : "Je deelname is succesvol bijgewerkt." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js index 9950be66fe2..78c3eeba525 100644 --- a/apps/dav/l10n/pl.js +++ b/apps/dav/l10n/pl.js @@ -188,9 +188,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Skontaktuj się bezpośrednio z orgnizatorem.", "Are you accepting the invitation?" : "Czy akceptujesz zaproszenie?", "Tentative" : "Niepewne", - "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana.", - "Invitation canceled" : "Zaproszenie anulowane", - "Invitation updated" : "Zaproszenie zaktualizowane", - "Invitation" : "Zaproszenie" + "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana." }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json index 143e51e637b..04e05e5476f 100644 --- a/apps/dav/l10n/pl.json +++ b/apps/dav/l10n/pl.json @@ -186,9 +186,6 @@ "Please contact the organizer directly." : "Skontaktuj się bezpośrednio z orgnizatorem.", "Are you accepting the invitation?" : "Czy akceptujesz zaproszenie?", "Tentative" : "Niepewne", - "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana.", - "Invitation canceled" : "Zaproszenie anulowane", - "Invitation updated" : "Zaproszenie zaktualizowane", - "Invitation" : "Zaproszenie" + "Your attendance was updated successfully." : "Twoja obecność została pomyślnie zaktualizowana." },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js index 18d7ec938f7..2ec0c3c5447 100644 --- a/apps/dav/l10n/pt_BR.js +++ b/apps/dav/l10n/pt_BR.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Você está aceitando o convite?", "Tentative" : "Tentativa", "Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso.", - "Invitation canceled" : "Convite cancelado", - "Invitation updated" : "Convite atualizado", - "Invitation" : "Convite" + "%1$s has responded your invitation" : "%1$s respondeu ao seu convite" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json index c50bda3ac06..4920486658f 100644 --- a/apps/dav/l10n/pt_BR.json +++ b/apps/dav/l10n/pt_BR.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Você está aceitando o convite?", "Tentative" : "Tentativa", "Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso.", - "Invitation canceled" : "Convite cancelado", - "Invitation updated" : "Convite atualizado", - "Invitation" : "Convite" + "%1$s has responded your invitation" : "%1$s respondeu ao seu convite" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js index b332bb196ab..94b54cc2f35 100644 --- a/apps/dav/l10n/ru.js +++ b/apps/dav/l10n/ru.js @@ -188,9 +188,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Обратитесь к организатору напрямую.", "Are you accepting the invitation?" : "Принять приглашение?", "Tentative" : "Под вопросом", - "Your attendance was updated successfully." : "Статус участия обновлён.", - "Invitation canceled" : "Приглашение отменено", - "Invitation updated" : "Приглашение обновлено", - "Invitation" : "Приглашение" + "Your attendance was updated successfully." : "Статус участия обновлён." }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json index 100c7d71722..fa1bea7e7f6 100644 --- a/apps/dav/l10n/ru.json +++ b/apps/dav/l10n/ru.json @@ -186,9 +186,6 @@ "Please contact the organizer directly." : "Обратитесь к организатору напрямую.", "Are you accepting the invitation?" : "Принять приглашение?", "Tentative" : "Под вопросом", - "Your attendance was updated successfully." : "Статус участия обновлён.", - "Invitation canceled" : "Приглашение отменено", - "Invitation updated" : "Приглашение обновлено", - "Invitation" : "Приглашение" + "Your attendance was updated successfully." : "Статус участия обновлён." },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/sc.js b/apps/dav/l10n/sc.js index 8ba1d929c8a..6f3fa9d5538 100644 --- a/apps/dav/l10n/sc.js +++ b/apps/dav/l10n/sc.js @@ -130,9 +130,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Pro praghere, cuntata deretu a s'organizadore.", "Are you accepting the invitation?" : "Cheres atzetare s'invitu?", "Tentative" : "Intentu", - "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta.", - "Invitation canceled" : "Invitu annulladu", - "Invitation updated" : "Invitu agiornadu", - "Invitation" : "Invitu" + "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/sc.json b/apps/dav/l10n/sc.json index 34de19d50a2..d6e6ffb484f 100644 --- a/apps/dav/l10n/sc.json +++ b/apps/dav/l10n/sc.json @@ -128,9 +128,6 @@ "Please contact the organizer directly." : "Pro praghere, cuntata deretu a s'organizadore.", "Are you accepting the invitation?" : "Cheres atzetare s'invitu?", "Tentative" : "Intentu", - "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta.", - "Invitation canceled" : "Invitu annulladu", - "Invitation updated" : "Invitu agiornadu", - "Invitation" : "Invitu" + "Your attendance was updated successfully." : "Sa partetzipatzione tua est istada agiornada in manera curreta." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js index ae82c649488..0f136cbef29 100644 --- a/apps/dav/l10n/sk.js +++ b/apps/dav/l10n/sk.js @@ -178,9 +178,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.", "Are you accepting the invitation?" : "Príjmate pozvánku?", "Tentative" : "Neistý", - "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne.", - "Invitation canceled" : "Pozvánka bola zrušená", - "Invitation updated" : "Pozvánka bola aktualizovaná", - "Invitation" : "Pozvánka" + "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne." }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json index 6277d04de1b..c4d1c51bf40 100644 --- a/apps/dav/l10n/sk.json +++ b/apps/dav/l10n/sk.json @@ -176,9 +176,6 @@ "Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.", "Are you accepting the invitation?" : "Príjmate pozvánku?", "Tentative" : "Neistý", - "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne.", - "Invitation canceled" : "Pozvánka bola zrušená", - "Invitation updated" : "Pozvánka bola aktualizovaná", - "Invitation" : "Pozvánka" + "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne." },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/sl.js b/apps/dav/l10n/sl.js index 9737702baff..dbbbf6970de 100644 --- a/apps/dav/l10n/sl.js +++ b/apps/dav/l10n/sl.js @@ -159,9 +159,6 @@ OC.L10N.register( "Please contact the organizer directly." : "Z organizatorjem stopite neposredno v stik.", "Are you accepting the invitation?" : "Ali želite sprejeti povabilo?", "Tentative" : "Začasno", - "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena.", - "Invitation canceled" : "Povabilo je preklicano", - "Invitation updated" : "Povabilo je posodobljeno", - "Invitation" : "Povabilo" + "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena." }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/dav/l10n/sl.json b/apps/dav/l10n/sl.json index 0a40e8cc946..10e7495a0da 100644 --- a/apps/dav/l10n/sl.json +++ b/apps/dav/l10n/sl.json @@ -157,9 +157,6 @@ "Please contact the organizer directly." : "Z organizatorjem stopite neposredno v stik.", "Are you accepting the invitation?" : "Ali želite sprejeti povabilo?", "Tentative" : "Začasno", - "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena.", - "Invitation canceled" : "Povabilo je preklicano", - "Invitation updated" : "Povabilo je posodobljeno", - "Invitation" : "Povabilo" + "Your attendance was updated successfully." : "Vaša prisotnost je uspešno posodobljena." },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js index 5ab046d4472..9852dcbcfad 100644 --- a/apps/dav/l10n/sr.js +++ b/apps/dav/l10n/sr.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Да ли прихватате позивницу?", "Tentative" : "Условна потврда", "Your attendance was updated successfully." : "Ваше присуство је успешно ажурирано.", - "Invitation canceled" : "Позивница отказана", - "Invitation updated" : "Позивница ажурирана", - "Invitation" : "Позивница" + "%1$s has responded your invitation" : "%1$s је одговорио на вашу позивницу" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/dav/l10n/sr.json b/apps/dav/l10n/sr.json index 56f11038178..d8c610bb758 100644 --- a/apps/dav/l10n/sr.json +++ b/apps/dav/l10n/sr.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Да ли прихватате позивницу?", "Tentative" : "Условна потврда", "Your attendance was updated successfully." : "Ваше присуство је успешно ажурирано.", - "Invitation canceled" : "Позивница отказана", - "Invitation updated" : "Позивница ажурирана", - "Invitation" : "Позивница" + "%1$s has responded your invitation" : "%1$s је одговорио на вашу позивницу" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/dav/l10n/sv.js b/apps/dav/l10n/sv.js index 99d447bf2bc..436088df3f4 100644 --- a/apps/dav/l10n/sv.js +++ b/apps/dav/l10n/sv.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Acceptera inbjudan?", "Tentative" : "Preliminärt", "Your attendance was updated successfully." : "Dina närvaro uppdaterades.", - "Invitation canceled" : "Inbjudan avbruten", - "Invitation updated" : "Inbjudan uppdaterad", - "Invitation" : "Inbjudan" + "%1$s has responded your invitation" : "%1$s har svarat på din inbjudan" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json index e88ca594c49..906c8e4e23f 100644 --- a/apps/dav/l10n/sv.json +++ b/apps/dav/l10n/sv.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Acceptera inbjudan?", "Tentative" : "Preliminärt", "Your attendance was updated successfully." : "Dina närvaro uppdaterades.", - "Invitation canceled" : "Inbjudan avbruten", - "Invitation updated" : "Inbjudan uppdaterad", - "Invitation" : "Inbjudan" + "%1$s has responded your invitation" : "%1$s har svarat på din inbjudan" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js index b4bff61f1e5..27f60721b07 100644 --- a/apps/dav/l10n/tr.js +++ b/apps/dav/l10n/tr.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Çağrıyı kabul ediyor musunuz?", "Tentative" : "Kesin değil", "Your attendance was updated successfully." : "Katılımınız güncellendi.", - "Invitation canceled" : "Çağrı iptal edildi", - "Invitation updated" : "Çağrı güncellendi", - "Invitation" : "Çağrı" + "%1$s has responded your invitation" : "%1$s çağrınızı yanıtladı" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json index 5fbf8130311..bc9356247b1 100644 --- a/apps/dav/l10n/tr.json +++ b/apps/dav/l10n/tr.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Çağrıyı kabul ediyor musunuz?", "Tentative" : "Kesin değil", "Your attendance was updated successfully." : "Katılımınız güncellendi.", - "Invitation canceled" : "Çağrı iptal edildi", - "Invitation updated" : "Çağrı güncellendi", - "Invitation" : "Çağrı" + "%1$s has responded your invitation" : "%1$s çağrınızı yanıtladı" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js index f8061a73011..e241b9d148a 100644 --- a/apps/dav/l10n/uk.js +++ b/apps/dav/l10n/uk.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "Чи приймаєте ви запрошення?", "Tentative" : "Попередній", "Your attendance was updated successfully." : "Ваша участь успішно оновлена.", - "Invitation canceled" : "Запрошення скасоване", - "Invitation updated" : "Запрошення оновлене", - "Invitation" : "Запрошення" + "%1$s has responded your invitation" : "%1$s відповів на ваше запрошення" }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/dav/l10n/uk.json b/apps/dav/l10n/uk.json index 15e4d8d4d94..62332fd9f87 100644 --- a/apps/dav/l10n/uk.json +++ b/apps/dav/l10n/uk.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "Чи приймаєте ви запрошення?", "Tentative" : "Попередній", "Your attendance was updated successfully." : "Ваша участь успішно оновлена.", - "Invitation canceled" : "Запрошення скасоване", - "Invitation updated" : "Запрошення оновлене", - "Invitation" : "Запрошення" + "%1$s has responded your invitation" : "%1$s відповів на ваше запрошення" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js index f3c009b0cb0..a77f10c6765 100644 --- a/apps/dav/l10n/zh_CN.js +++ b/apps/dav/l10n/zh_CN.js @@ -188,9 +188,6 @@ OC.L10N.register( "Please contact the organizer directly." : "请直接联系组织者。", "Are you accepting the invitation?" : "您是否接受邀请?", "Tentative" : "暂定", - "Your attendance was updated successfully." : "您的出席状态更新成功。", - "Invitation canceled" : "邀请已取消", - "Invitation updated" : "邀请已更新", - "Invitation" : "邀请" + "Your attendance was updated successfully." : "您的出席状态更新成功。" }, "nplurals=1; plural=0;"); diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json index 051a53ef8df..29aafac866b 100644 --- a/apps/dav/l10n/zh_CN.json +++ b/apps/dav/l10n/zh_CN.json @@ -186,9 +186,6 @@ "Please contact the organizer directly." : "请直接联系组织者。", "Are you accepting the invitation?" : "您是否接受邀请?", "Tentative" : "暂定", - "Your attendance was updated successfully." : "您的出席状态更新成功。", - "Invitation canceled" : "邀请已取消", - "Invitation updated" : "邀请已更新", - "Invitation" : "邀请" + "Your attendance was updated successfully." : "您的出席状态更新成功。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/l10n/zh_HK.js b/apps/dav/l10n/zh_HK.js index fb1879188a3..cd6f3451dfb 100644 --- a/apps/dav/l10n/zh_HK.js +++ b/apps/dav/l10n/zh_HK.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "接受邀請嗎?", "Tentative" : "暫定", "Your attendance was updated successfully." : "您的參與狀況成功更新", - "Invitation canceled" : "邀請被取消了", - "Invitation updated" : "邀請已更新", - "Invitation" : "邀請" + "%1$s has responded your invitation" : "%1$s 已回應您的邀請" }, "nplurals=1; plural=0;"); diff --git a/apps/dav/l10n/zh_HK.json b/apps/dav/l10n/zh_HK.json index c2b530d570f..c58826e8179 100644 --- a/apps/dav/l10n/zh_HK.json +++ b/apps/dav/l10n/zh_HK.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "接受邀請嗎?", "Tentative" : "暫定", "Your attendance was updated successfully." : "您的參與狀況成功更新", - "Invitation canceled" : "邀請被取消了", - "Invitation updated" : "邀請已更新", - "Invitation" : "邀請" + "%1$s has responded your invitation" : "%1$s 已回應您的邀請" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js index 0ec4b39ae12..afde10a2037 100644 --- a/apps/dav/l10n/zh_TW.js +++ b/apps/dav/l10n/zh_TW.js @@ -189,8 +189,6 @@ OC.L10N.register( "Are you accepting the invitation?" : "您接受邀請嗎?", "Tentative" : "暫定", "Your attendance was updated successfully." : "您的參與狀態成功更新。", - "Invitation canceled" : "邀請已取消", - "Invitation updated" : "邀請已更新", - "Invitation" : "邀請" + "%1$s has responded your invitation" : "%1$s 已回應您的邀請" }, "nplurals=1; plural=0;"); diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json index 93425ec0956..5cb6e5a4c85 100644 --- a/apps/dav/l10n/zh_TW.json +++ b/apps/dav/l10n/zh_TW.json @@ -187,8 +187,6 @@ "Are you accepting the invitation?" : "您接受邀請嗎?", "Tentative" : "暫定", "Your attendance was updated successfully." : "您的參與狀態成功更新。", - "Invitation canceled" : "邀請已取消", - "Invitation updated" : "邀請已更新", - "Invitation" : "邀請" + "%1$s has responded your invitation" : "%1$s 已回應您的邀請" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index 10e1130f907..4ed68e68840 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -32,8 +32,6 @@ declare(strict_types=1); */ namespace OCA\DAV\AppInfo; -use Exception; -use OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob; use OCA\DAV\CalDAV\Activity\Backend; use OCA\DAV\CalDAV\AppCalendar\AppCalendarPlugin; use OCA\DAV\CalDAV\CalendarManager; @@ -71,6 +69,7 @@ use OCA\DAV\Events\CardDeletedEvent; use OCA\DAV\Events\CardUpdatedEvent; use OCA\DAV\Events\SubscriptionCreatedEvent; use OCA\DAV\Events\SubscriptionDeletedEvent; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\Events\TrustedServerRemovedEvent; use OCA\DAV\HookManager; use OCA\DAV\Listener\ActivityUpdaterListener; @@ -105,7 +104,6 @@ use OCP\IServerContainer; use OCP\IUser; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; use Throwable; use function is_null; @@ -215,9 +213,8 @@ class Application extends App implements IBootstrap { } public function registerHooks(HookManager $hm, - EventDispatcherInterface $dispatcher, - IAppContainer $container, - IServerContainer $serverContainer) { + IEventDispatcher $dispatcher, + IAppContainer $container) { $hm->setup(); // first time login event setup @@ -227,40 +224,28 @@ class Application extends App implements IBootstrap { } }); - $dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) { - $user = $event->getSubject(); - /** @var SyncService $syncService */ - $syncService = $container->query(SyncService::class); - $syncService->updateUser($user); + $dispatcher->addListener('OC\AccountManager::userUpdated', function ($event) use ($container) { + if ($event instanceof GenericEvent) { + $user = $event->getSubject(); + /** @var SyncService $syncService */ + $syncService = $container->query(SyncService::class); + $syncService->updateUser($user); + } }); - $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) { + $dispatcher->addListener(CalendarShareUpdatedEvent::class, function (CalendarShareUpdatedEvent $event) use ($container) { /** @var Backend $backend */ $backend = $container->query(Backend::class); $backend->onCalendarUpdateShares( - $event->getArgument('calendarData'), - $event->getArgument('shares'), - $event->getArgument('add'), - $event->getArgument('remove') + $event->getCalendarData(), + $event->getOldShares(), + $event->getAdded(), + $event->getRemoved() ); // Here we should recalculate if reminders should be sent to new or old sharees }); - - $eventHandler = function () use ($container, $serverContainer): void { - try { - /** @var UpdateCalendarResourcesRoomsBackgroundJob $job */ - $job = $container->query(UpdateCalendarResourcesRoomsBackgroundJob::class); - $job->run([]); - $serverContainer->getJobList()->setLastRun($job); - } catch (Exception $ex) { - $serverContainer->get(LoggerInterface::class)->error($ex->getMessage(), ['exception' => $ex]); - } - }; - - $dispatcher->addListener('\OCP\Calendar\Resource\ForceRefreshEvent', $eventHandler); - $dispatcher->addListener('\OCP\Calendar\Room\ForceRefreshEvent', $eventHandler); } public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void { diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index c57d3a2764f..a948c54ad58 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -2841,7 +2841,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $calendarId = $shareable->getResourceId(); $calendarRow = $this->getCalendarById($calendarId); if ($calendarRow === null) { - throw new \RuntimeException('Trying to update shares for innexistant calendar: ' . $calendarId); + throw new \RuntimeException('Trying to update shares for non-existing calendar: ' . $calendarId); } $oldShares = $this->getShares($calendarId); @@ -3139,7 +3139,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $query->select($query->func()->max('id')) ->from('calendarchanges'); - $maxId = $query->executeQuery()->fetchOne(); + $result = $query->executeQuery(); + $maxId = (int) $result->fetchOne(); + $result->closeCursor(); if (!$maxId || $maxId < $keep) { return 0; } diff --git a/apps/dav/lib/Capabilities.php b/apps/dav/lib/Capabilities.php index b8096d3395a..f61fb5d2f0a 100644 --- a/apps/dav/lib/Capabilities.php +++ b/apps/dav/lib/Capabilities.php @@ -5,6 +5,7 @@ * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Louis Chemineau <louis@chmn.me> * @author Côme Chilliet <come.chilliet@nextcloud.com> + * @author Kate Döen <kate.doeen@nextcloud.com> * * @license AGPL-3.0 * @@ -33,6 +34,9 @@ class Capabilities implements ICapability { $this->config = $config; } + /** + * @return array{dav: array{chunking: string, bulkupload?: string}} + */ public function getCapabilities() { $capabilities = [ 'dav' => [ diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 1be1ce3f18f..045ad4d1385 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -1404,7 +1404,9 @@ class CardDavBackend implements BackendInterface, SyncSupport { $query->select($query->func()->max('id')) ->from('addressbookchanges'); - $maxId = $query->executeQuery()->fetchOne(); + $result = $query->executeQuery(); + $maxId = (int) $result->fetchOne(); + $result->closeCursor(); if (!$maxId || $maxId < $keep) { return 0; } diff --git a/apps/dav/lib/CardDAV/UserAddressBooks.php b/apps/dav/lib/CardDAV/UserAddressBooks.php index 938575bd1a7..d42af7790f8 100644 --- a/apps/dav/lib/CardDAV/UserAddressBooks.php +++ b/apps/dav/lib/CardDAV/UserAddressBooks.php @@ -107,7 +107,7 @@ class UserAddressBooks extends \Sabre\CardDAV\AddressBookHome { try { $trustedServers = \OC::$server->get(TrustedServers::class); $request = \OC::$server->get(IRequest::class); - } catch (NotFoundExceptionInterface | ContainerExceptionInterface $e) { + } catch (QueryException | NotFoundExceptionInterface | ContainerExceptionInterface $e) { // nothing to do, the request / trusted servers don't exist } if ($addressBook['principaluri'] === 'principals/system/system') { diff --git a/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php b/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php index 257068b9576..5d3f7104d6a 100644 --- a/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php +++ b/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php @@ -26,6 +26,7 @@ namespace OCA\DAV\Connector\Sabre; use OCP\IConfig; +use OCP\IRequest; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; use Sabre\DAV\Server; @@ -65,10 +66,7 @@ class BlockLegacyClientPlugin extends ServerPlugin { } $minimumSupportedDesktopVersion = $this->config->getSystemValue('minimum.supported.desktop.version', '2.3.0'); - - // Match on the mirall version which is in scheme "Mozilla/5.0 (%1) mirall/%2" or - // "mirall/%1" for older releases - preg_match("/(?:mirall\\/)([\d.]+)/i", $userAgent, $versionMatches); + preg_match(IRequest::USER_AGENT_CLIENT_DESKTOP, $userAgent, $versionMatches); if (isset($versionMatches[1]) && version_compare($versionMatches[1], $minimumSupportedDesktopVersion) === -1) { throw new \Sabre\DAV\Exception\Forbidden('Unsupported client version.'); diff --git a/apps/dav/lib/Connector/Sabre/ServerFactory.php b/apps/dav/lib/Connector/Sabre/ServerFactory.php index 4c57f3412e3..d0cc8aab5d0 100644 --- a/apps/dav/lib/Connector/Sabre/ServerFactory.php +++ b/apps/dav/lib/Connector/Sabre/ServerFactory.php @@ -31,6 +31,7 @@ */ namespace OCA\DAV\Connector\Sabre; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Folder; use OCA\DAV\AppInfo\PluginManager; use OCA\DAV\DAV\ViewOnlyPlugin; @@ -46,7 +47,6 @@ use OCP\IUserSession; use OCP\SabrePluginEvent; use Psr\Log\LoggerInterface; use Sabre\DAV\Auth\Plugin; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; class ServerFactory { private IConfig $config; @@ -57,7 +57,7 @@ class ServerFactory { private ITagManager $tagManager; private IRequest $request; private IPreview $previewManager; - private EventDispatcherInterface $eventDispatcher; + private IEventDispatcher $eventDispatcher; private IL10N $l10n; public function __construct( @@ -69,7 +69,7 @@ class ServerFactory { ITagManager $tagManager, IRequest $request, IPreview $previewManager, - EventDispatcherInterface $eventDispatcher, + IEventDispatcher $eventDispatcher, IL10N $l10n ) { $this->config = $config; @@ -199,7 +199,7 @@ class ServerFactory { // Load dav plugins from apps $event = new SabrePluginEvent($server); - $this->eventDispatcher->dispatch($event); + $this->eventDispatcher->dispatchTyped($event); $pluginManager = new PluginManager( \OC::$server, \OC::$server->getAppManager() diff --git a/apps/dav/lib/Controller/DirectController.php b/apps/dav/lib/Controller/DirectController.php index f9c83488935..1a7b3b57626 100644 --- a/apps/dav/lib/Controller/DirectController.php +++ b/apps/dav/lib/Controller/DirectController.php @@ -7,6 +7,7 @@ declare(strict_types=1); * * @author Iscle <albertiscle9@gmail.com> * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Kate Döen <kate.doeen@nextcloud.com> * * @license GNU AGPL version 3 or any later version * @@ -28,6 +29,7 @@ namespace OCA\DAV\Controller; use OCA\DAV\Db\Direct; use OCA\DAV\Db\DirectMapper; +use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCS\OCSNotFoundException; @@ -88,6 +90,17 @@ class DirectController extends OCSController { /** * @NoAdminRequired + * + * Get a direct link to a file + * + * @param int $fileId ID of the file + * @param int $expirationTime Duration until the link expires + * @return DataResponse<Http::STATUS_OK, array{url: string}, array{}> + * @throws OCSNotFoundException File not found + * @throws OCSBadRequestException Getting direct link is not possible + * @throws OCSForbiddenException Missing permissions to get direct link + * + * 200: Direct link returned */ public function getUrl(int $fileId, int $expirationTime = 60 * 60 * 8): DataResponse { $userFolder = $this->rootFolder->getUserFolder($this->userId); diff --git a/apps/dav/lib/Controller/InvitationResponseController.php b/apps/dav/lib/Controller/InvitationResponseController.php index a3607949874..3cf2e658621 100644 --- a/apps/dav/lib/Controller/InvitationResponseController.php +++ b/apps/dav/lib/Controller/InvitationResponseController.php @@ -8,6 +8,7 @@ declare(strict_types=1); * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Georg Ehrke <oc.list@georgehrke.com> * @author Joas Schilling <coding@schilljs.com> + * @author Kate Döen <kate.doeen@nextcloud.com> * * @license GNU AGPL version 3 or any later version * @@ -29,6 +30,7 @@ namespace OCA\DAV\Controller; use OCA\DAV\CalDAV\InvitationResponse\InvitationResponseServer; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\IgnoreOpenAPI; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Utility\ITimeFactory; use OCP\IDBConnection; @@ -36,6 +38,7 @@ use OCP\IRequest; use Sabre\VObject\ITip\Message; use Sabre\VObject\Reader; +#[IgnoreOpenAPI] class InvitationResponseController extends Controller { /** @var IDBConnection */ diff --git a/apps/dav/lib/DAV/CustomPropertiesBackend.php b/apps/dav/lib/DAV/CustomPropertiesBackend.php index 9de06334611..989d049fbd1 100644 --- a/apps/dav/lib/DAV/CustomPropertiesBackend.php +++ b/apps/dav/lib/DAV/CustomPropertiesBackend.php @@ -22,9 +22,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ + namespace OCA\DAV\DAV; use Exception; +use OCA\DAV\Connector\Sabre\Directory; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IUser; @@ -134,7 +136,8 @@ class CustomPropertiesBackend implements BackendInterface { public function __construct( Tree $tree, IDBConnection $connection, - IUser $user) { + IUser $user + ) { $this->tree = $tree; $this->connection = $connection; $this->user = $user; @@ -195,6 +198,11 @@ class CustomPropertiesBackend implements BackendInterface { return; } + $node = $this->tree->getNodeForPath($path); + if ($node instanceof Directory && $propFind->getDepth() !== 0) { + $this->cacheDirectory($path, $node); + } + // First fetch the published properties (set by another user), then get the ones set by // the current user. If both are set then the latter as priority. foreach ($this->getPublishedProperties($path, $requestedProps) as $propName => $propValue) { @@ -278,6 +286,38 @@ class CustomPropertiesBackend implements BackendInterface { } /** + * prefetch all user properties in a directory + */ + private function cacheDirectory(string $path, Directory $node): void { + $prefix = ltrim($path . '/', '/'); + $query = $this->connection->getQueryBuilder(); + $query->select('name', 'propertypath', 'propertyname', 'propertyvalue', 'valuetype') + ->from('filecache', 'f') + ->leftJoin('f', 'properties', 'p', $query->expr()->andX( + $query->expr()->eq('propertypath', $query->func()->concat( + $query->createNamedParameter($prefix), + 'name' + )), + $query->expr()->eq('userid', $query->createNamedParameter($this->user->getUID())) + )) + ->where($query->expr()->eq('parent', $query->createNamedParameter($node->getInternalFileId(), IQueryBuilder::PARAM_INT))); + $result = $query->executeQuery(); + + $propsByPath = []; + + while ($row = $result->fetch()) { + $childPath = $prefix . $row['name']; + if (!isset($propsByPath[$childPath])) { + $propsByPath[$childPath] = []; + } + if (isset($row['propertyname'])) { + $propsByPath[$childPath][$row['propertyname']] = $this->decodeValueFromDatabase($row['propertyvalue'], $row['valuetype']); + } + } + $this->userCache = array_merge($this->userCache, $propsByPath); + } + + /** * Returns a list of properties for the given path and current user * * @param string $path @@ -336,7 +376,7 @@ class CustomPropertiesBackend implements BackendInterface { $dbParameters = [ 'userid' => $this->user->getUID(), 'propertyPath' => $this->formatPath($path), - 'propertyName' => $propertyName + 'propertyName' => $propertyName, ]; // If it was null, we need to delete the property diff --git a/apps/dav/lib/Events/SabrePluginAddEvent.php b/apps/dav/lib/Events/SabrePluginAddEvent.php new file mode 100644 index 00000000000..3bff756e2a1 --- /dev/null +++ b/apps/dav/lib/Events/SabrePluginAddEvent.php @@ -0,0 +1,56 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2023, Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\DAV\Events; + +use OCP\EventDispatcher\Event; +use Sabre\DAV\Server; + +/** + * This event is triggered during the setup of the SabreDAV server to allow the + * registration of additional plugins. + * + * @since 28.0.0 + */ +class SabrePluginAddEvent extends Event { + + /** @var Server */ + private $server; + + /** + * @since 28.0.0 + */ + public function __construct(Server $server) { + parent::__construct(); + $this->server = $server; + } + + /** + * @since 28.0.0 + */ + public function getServer(): Server { + return $this->server; + } +} diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 909bcaa71e8..47cb9e3ec36 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -64,6 +64,7 @@ use OCA\DAV\Connector\Sabre\TagsPlugin; use OCA\DAV\DAV\CustomPropertiesBackend; use OCA\DAV\DAV\PublicAuth; use OCA\DAV\DAV\ViewOnlyPlugin; +use OCA\DAV\Events\SabrePluginAddEvent; use OCA\DAV\Events\SabrePluginAuthInitEvent; use OCA\DAV\Files\BrowserErrorPagePlugin; use OCA\DAV\Files\LazySearchBackend; @@ -102,9 +103,8 @@ class Server { $this->request = $request; $this->baseUri = $baseUri; $logger = \OC::$server->get(LoggerInterface::class); - $dispatcher = \OC::$server->getEventDispatcher(); - /** @var IEventDispatcher $newDispatcher */ - $newDispatcher = \OC::$server->query(IEventDispatcher::class); + /** @var IEventDispatcher $dispatcher */ + $dispatcher = \OC::$server->get(IEventDispatcher::class); $root = new RootCollection(); $this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root)); @@ -139,7 +139,7 @@ class Server { $dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event); $newAuthEvent = new SabrePluginAuthInitEvent($this->server); - $newDispatcher->dispatchTyped($newAuthEvent); + $dispatcher->dispatchTyped($newAuthEvent); $bearerAuthBackend = new BearerAuth( \OC::$server->getUserSession(), @@ -223,6 +223,8 @@ class Server { // allow setup of additional plugins $dispatcher->dispatch('OCA\DAV\Connector\Sabre::addPlugin', $event); + $typedEvent = new SabrePluginAddEvent($this->server); + $dispatcher->dispatchTyped($typedEvent); // Some WebDAV clients do require Class 2 WebDAV support (locking), since // we do not provide locking we emulate it using a fake locking plugin. diff --git a/apps/dav/lib/Upload/ChunkingV2Plugin.php b/apps/dav/lib/Upload/ChunkingV2Plugin.php index 6b660fb7c6f..d3673c6bde7 100644 --- a/apps/dav/lib/Upload/ChunkingV2Plugin.php +++ b/apps/dav/lib/Upload/ChunkingV2Plugin.php @@ -278,6 +278,9 @@ class ChunkingV2Plugin extends ServerPlugin { if (!$this->uploadFolder->getStorage()->instanceOfStorage(IChunkedFileWrite::class)) { throw new StorageInvalidException('Storage does not support chunked file writing'); } + if ($this->uploadFolder->getStorage()->instanceOfStorage(ObjectStoreStorage::class) && !$this->uploadFolder->getStorage()->getObjectStore() instanceof IObjectStoreMultiPartUpload) { + throw new StorageInvalidException('Storage does not support multi part uploads'); + } if ($checkUploadMetadata) { if ($this->uploadId === null || $this->uploadPath === null) { diff --git a/apps/dav/tests/unit/Connector/Sabre/AuthTest.php b/apps/dav/tests/unit/Connector/Sabre/AuthTest.php index be841295f0b..b3b3341240a 100644 --- a/apps/dav/tests/unit/Connector/Sabre/AuthTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/AuthTest.php @@ -301,11 +301,6 @@ class AuthTest extends TestCase { $this->request ->expects($this->any()) ->method('isUserAgent') - ->with([ - '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/', - '/^Mozilla\/5\.0 \(Android\) (ownCloud|Nextcloud)\-android.*$/', - '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/', - ]) ->willReturn(false); $this->session ->expects($this->any()) @@ -351,11 +346,6 @@ class AuthTest extends TestCase { $this->request ->expects($this->any()) ->method('isUserAgent') - ->with([ - '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/', - '/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/', - '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/', - ]) ->willReturn(false); $this->session ->expects($this->any()) @@ -405,11 +395,6 @@ class AuthTest extends TestCase { $this->request ->expects($this->any()) ->method('isUserAgent') - ->with([ - '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/', - '/^Mozilla\/5\.0 \(Android\) (ownCloud|Nextcloud)\-android.*$/', - '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/', - ]) ->willReturn(false); $this->session ->expects($this->any()) @@ -451,11 +436,6 @@ class AuthTest extends TestCase { $this->request ->expects($this->any()) ->method('isUserAgent') - ->with([ - '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/', - '/^Mozilla\/5\.0 \(Android\) (ownCloud|Nextcloud)\-android.*$/', - '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/', - ]) ->willReturn(true); $this->session ->expects($this->any()) diff --git a/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php index e0a274321f0..616e9796ab4 100644 --- a/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * @copyright Copyright (c) 2016, ownCloud, Inc. * @@ -28,7 +30,9 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre; use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin; use OCP\IConfig; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; +use Sabre\HTTP\RequestInterface; /** * Class BlockLegacyClientPluginTest @@ -36,7 +40,7 @@ use Test\TestCase; * @package OCA\DAV\Tests\unit\Connector\Sabre */ class BlockLegacyClientPluginTest extends TestCase { - /** @var IConfig | \PHPUnit\Framework\MockObject\MockObject */ + /** @var IConfig|MockObject */ private $config; /** @var BlockLegacyClientPlugin */ private $blockLegacyClientVersionPlugin; @@ -44,34 +48,25 @@ class BlockLegacyClientPluginTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->config = $this->getMockBuilder(IConfig::class) - ->disableOriginalConstructor() - ->getMock(); + $this->config = $this->createMock(IConfig::class); $this->blockLegacyClientVersionPlugin = new BlockLegacyClientPlugin($this->config); } - /** - * @return array - */ - public function oldDesktopClientProvider() { + public function oldDesktopClientProvider(): array { return [ - ['Mozilla/5.0 (1.5.0) mirall/1.5.0'], - ['mirall/1.5.0'], - ['mirall/1.5.4'], - ['mirall/1.6.0'], + ['Mozilla/5.0 (Windows) mirall/1.5.0'], ['Mozilla/5.0 (Bogus Text) mirall/1.6.9'], ]; } /** * @dataProvider oldDesktopClientProvider - * @param string $userAgent */ - public function testBeforeHandlerException($userAgent): void { + public function testBeforeHandlerException(string $userAgent): void { $this->expectException(\Sabre\DAV\Exception\Forbidden::class); $this->expectExceptionMessage('Unsupported client version.'); - /** @var \Sabre\HTTP\RequestInterface | \PHPUnit\Framework\MockObject\MockObject $request */ + /** @var RequestInterface|MockObject $request */ $request = $this->createMock('\Sabre\HTTP\RequestInterface'); $request ->expects($this->once()) @@ -88,26 +83,20 @@ class BlockLegacyClientPluginTest extends TestCase { $this->blockLegacyClientVersionPlugin->beforeHandler($request); } - /** - * @return array - */ - public function newAndAlternateDesktopClientProvider() { + public function newAndAlternateDesktopClientProvider(): array { return [ - ['Mozilla/5.0 (1.7.0) mirall/1.7.0'], - ['mirall/1.8.3'], - ['mirall/1.7.2'], - ['mirall/1.7.0'], + ['Mozilla/5.0 (Windows) mirall/1.7.0'], ['Mozilla/5.0 (Bogus Text) mirall/1.9.3'], + ['Mozilla/5.0 (Not Our Client But Old Version) LegacySync/1.1.0'], ]; } /** * @dataProvider newAndAlternateDesktopClientProvider - * @param string $userAgent */ - public function testBeforeHandlerSuccess($userAgent): void { - /** @var \Sabre\HTTP\RequestInterface | \PHPUnit\Framework\MockObject\MockObject $request */ - $request = $this->createMock('\Sabre\HTTP\RequestInterface'); + public function testBeforeHandlerSuccess(string $userAgent): void { + /** @var RequestInterface|MockObject $request */ + $request = $this->createMock(RequestInterface::class); $request ->expects($this->once()) ->method('getHeader') @@ -124,8 +113,8 @@ class BlockLegacyClientPluginTest extends TestCase { } public function testBeforeHandlerNoUserAgent(): void { - /** @var \Sabre\HTTP\RequestInterface | \PHPUnit\Framework\MockObject\MockObject $request */ - $request = $this->createMock('\Sabre\HTTP\RequestInterface'); + /** @var RequestInterface|MockObject $request */ + $request = $this->createMock(RequestInterface::class); $request ->expects($this->once()) ->method('getHeader') diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php index f6aa79eb6c4..c4f8c21eae1 100644 --- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php +++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php @@ -31,6 +31,7 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre\RequestTest; use OC\Files\View; use OCA\DAV\Connector\Sabre\Server; use OCA\DAV\Connector\Sabre\ServerFactory; +use OCP\EventDispatcher\IEventDispatcher; use OCP\IRequest; use Psr\Log\LoggerInterface; use Sabre\HTTP\Request; @@ -70,7 +71,7 @@ abstract class RequestTestCase extends TestCase { ->disableOriginalConstructor() ->getMock(), \OC::$server->getPreviewManager(), - \OC::$server->getEventDispatcher(), + \OC::$server->get(IEventDispatcher::class), \OC::$server->getL10N('dav') ); } |