diff options
author | Thomas Citharel <tcit@tcit.fr> | 2023-03-21 18:11:56 +0100 |
---|---|---|
committer | Thomas Citharel <tcit@tcit.fr> | 2023-05-16 11:38:57 +0200 |
commit | 13a3ebd4cc4ca172e37e61f5dc9d91e46ae56890 (patch) | |
tree | 8c1e24ef83de8eb8ad43a34482161668a321147b /apps/dav/lib/Events | |
parent | 25dd264965905316672631db95707e9051d57d69 (diff) | |
download | nextcloud-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.php | 120 |
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; + } +} |