summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Events
diff options
context:
space:
mode:
authorThomas Citharel <tcit@tcit.fr>2023-03-21 18:11:56 +0100
committerThomas Citharel <tcit@tcit.fr>2023-05-16 11:38:57 +0200
commit13a3ebd4cc4ca172e37e61f5dc9d91e46ae56890 (patch)
tree8c1e24ef83de8eb8ad43a34482161668a321147b /apps/dav/lib/Events
parent25dd264965905316672631db95707e9051d57d69 (diff)
downloadnextcloud-server-13a3ebd4cc4ca172e37e61f5dc9d91e46ae56890.tar.gz
nextcloud-server-13a3ebd4cc4ca172e37e61f5dc9d91e46ae56890.zip
feat(CardDAV): Add Sabre\DAV\IMoveTarget support to OCA\DAV\CardDAV\AddressBook
This allows to just UPDATE the card row instead of deleting it and reinsert it. It's very similar to https://github.com/nextcloud/server/pull/30120 for calendars. As we need the addressbookid exposed, this introduces OCA\DAV\CardDAV\Card that extends Sabre's. I chose specifically NOT to auto-inject LoggerInterface in Addressbook like in #30120 because the chain of DI is huge just for ONE simple call and it would break an existing dirty call (OCA\Contacts calling OCA\DAV) of ContactsManager in Contacts: https://github.com/nextcloud/contacts/pull/1722 (in SocialApiService), but this is debatable. Signed-off-by: Thomas Citharel <tcit@tcit.fr>
Diffstat (limited to 'apps/dav/lib/Events')
-rw-r--r--apps/dav/lib/Events/CardMovedEvent.php120
1 files changed, 120 insertions, 0 deletions
diff --git a/apps/dav/lib/Events/CardMovedEvent.php b/apps/dav/lib/Events/CardMovedEvent.php
new file mode 100644
index 00000000000..07139cfdecf
--- /dev/null
+++ b/apps/dav/lib/Events/CardMovedEvent.php
@@ -0,0 +1,120 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023, Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @author Thomas Citharel <nextcloud@tcit.fr>
+ *
+ * @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;
+
+/**
+ * Class CardMovedEvent
+ *
+ * @package OCA\DAV\Events
+ * @since 27.0.0
+ */
+class CardMovedEvent extends Event {
+ private int $sourceAddressBookId;
+ private array $sourceAddressBookData;
+ private int $targetAddressBookId;
+ private array $targetAddressBookData;
+ private array $sourceShares;
+ private array $targetShares;
+ private array $objectData;
+
+ /**
+ * @since 27.0.0
+ */
+ public function __construct(int $sourceAddressBookId,
+ array $sourceAddressBookData,
+ int $targetAddressBookId,
+ array $targetAddressBookData,
+ array $sourceShares,
+ array $targetShares,
+ array $objectData) {
+ parent::__construct();
+ $this->sourceAddressBookId = $sourceAddressBookId;
+ $this->sourceAddressBookData = $sourceAddressBookData;
+ $this->targetAddressBookId = $targetAddressBookId;
+ $this->targetAddressBookData = $targetAddressBookData;
+ $this->sourceShares = $sourceShares;
+ $this->targetShares = $targetShares;
+ $this->objectData = $objectData;
+ }
+
+ /**
+ * @return int
+ * @since 27.0.0
+ */
+ public function getSourceAddressBookId(): int {
+ return $this->sourceAddressBookId;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getSourceAddressBookData(): array {
+ return $this->sourceAddressBookData;
+ }
+
+ /**
+ * @return int
+ * @since 27.0.0
+ */
+ public function getTargetAddressBookId(): int {
+ return $this->targetAddressBookId;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getTargetAddressBookData(): array {
+ return $this->targetAddressBookData;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getSourceShares(): array {
+ return $this->sourceShares;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getTargetShares(): array {
+ return $this->targetShares;
+ }
+
+ /**
+ * @return array
+ * @since 27.0.0
+ */
+ public function getObjectData(): array {
+ return $this->objectData;
+ }
+}