From 32525fa9771a73e2bdd260ac38527afb9960d88a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20M=C3=BCller?= Date: Wed, 18 Nov 2015 20:26:14 +0100 Subject: [PATCH] save wip --- apps/dav/appinfo/app.php | 31 +++++++ apps/dav/lib/carddav/AddressBookImpl.php | 100 +++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 apps/dav/appinfo/app.php create mode 100644 apps/dav/lib/carddav/AddressBookImpl.php diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php new file mode 100644 index 00000000000..0a54df19c72 --- /dev/null +++ b/apps/dav/appinfo/app.php @@ -0,0 +1,31 @@ + + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see + * + */ + +$cm = \OC::$server->getContactsManager(); +$cm->register(function() use ($cm) { + $db = \OC::$server->getDatabaseConnection(); + $userId = \OC::$server->getUserSession()->getUser()->getUID(); + $cardDav = new \OCA\DAV\CardDAV\CardDavBackend($db); + $addressBooks = $cardDav->getAddressBooksForUser("principals/$userId"); + foreach ($addressBooks as $addressBook) { + $cm->registerAddressBook(new OCA\DAV\CardDAV\AddressBookImpl($addressBook)); + } +}); diff --git a/apps/dav/lib/carddav/AddressBookImpl.php b/apps/dav/lib/carddav/AddressBookImpl.php new file mode 100644 index 00000000000..7eee731fca9 --- /dev/null +++ b/apps/dav/lib/carddav/AddressBookImpl.php @@ -0,0 +1,100 @@ + + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see + * + */ + +namespace OCA\DAV\CardDAV; + +class AddressBookImpl implements \OCP\IAddressBook { + + public function __construct(array $values, CardDavBackend $backend) { + $this->values = $values; + $this->backend = $backend; + /* + * 'id' => $row['id'], + 'uri' => $row['uri'], + 'principaluri' => $row['principaluri'], + '{DAV:}displayname' => $row['displayname'], + '{' . Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'], + '{http://calendarserver.org/ns/}getctag' => $row['synctoken'], + '{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0', +*/ + } + + /** + * @return string defining the technical unique key + * @since 5.0.0 + */ + public function getKey() { + return $this->values['id']; + } + + /** + * In comparison to getKey() this function returns a human readable (maybe translated) name + * + * @return mixed + * @since 5.0.0 + */ + public function getDisplayName() { + return $this->values['{DAV:}displayname']; + } + + /** + * @param string $pattern which should match within the $searchProperties + * @param array $searchProperties defines the properties within the query pattern should match + * @param array $options - for future use. One should always have options! + * @return array an array of contacts which are arrays of key-value-pairs + * @since 5.0.0 + */ + public function search($pattern, $searchProperties, $options) { + // TODO: Implement search() method. + $cards = $this->backend->getCards($this->values['id']); + + // + // TODO: search now + // + + } + + /** + * @param array $properties this array if key-value-pairs defines a contact + * @return array an array representing the contact just created or updated + * @since 5.0.0 + */ + public function createOrUpdate($properties) { + // TODO: Implement createOrUpdate() method. + } + + /** + * @return mixed + * @since 5.0.0 + */ + public function getPermissions() { + // TODO: Implement getPermissions() method. + } + + /** + * @param object $id the unique identifier to a contact + * @return bool successful or not + * @since 5.0.0 + */ + public function delete($id) { + // TODO: Implement delete() method. + } +} -- 2.39.5