aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/CalDAV/CalendarImpl.php
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2017-11-07 01:31:28 +0100
committerGeorg Ehrke <developer@georgehrke.com>2017-11-09 15:14:58 +0100
commitfa416e031b1d630d443c4b484f269d0290e372be (patch)
tree45ab2ea68574b7fbe7809ea741d7c6c7a56415b5 /apps/dav/lib/CalDAV/CalendarImpl.php
parent556b2a2b6facb147295abebb18d1b391afa3f184 (diff)
downloadnextcloud-server-fa416e031b1d630d443c4b484f269d0290e372be.tar.gz
nextcloud-server-fa416e031b1d630d443c4b484f269d0290e372be.zip
integrate Dav app with Calendar API
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav/lib/CalDAV/CalendarImpl.php')
-rw-r--r--apps/dav/lib/CalDAV/CalendarImpl.php119
1 files changed, 119 insertions, 0 deletions
diff --git a/apps/dav/lib/CalDAV/CalendarImpl.php b/apps/dav/lib/CalDAV/CalendarImpl.php
new file mode 100644
index 00000000000..cfdf821a563
--- /dev/null
+++ b/apps/dav/lib/CalDAV/CalendarImpl.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.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\CalDAV;
+
+use OCP\Constants;
+use OCP\Calendar\ICalendar;
+
+class CalendarImpl implements ICalendar {
+
+ /** @var CalDavBackend */
+ private $backend;
+
+ /** @var Calendar */
+ private $calendar;
+
+ /** @var array */
+ private $calendarInfo;
+
+ /**
+ * CalendarImpl constructor.
+ *
+ * @param Calendar $calendar
+ * @param array $calendarInfo
+ * @param CalDavBackend $backend
+ */
+ public function __construct(Calendar $calendar, array $calendarInfo,
+ CalDavBackend $backend) {
+ $this->calendar = $calendar;
+ $this->calendarInfo = $calendarInfo;
+ $this->backend = $backend;
+ }
+
+ /**
+ * @return string defining the technical unique key
+ * @since 13.0.0
+ */
+ public function getKey() {
+ return $this->calendarInfo['id'];
+ }
+
+ /**
+ * In comparison to getKey() this function returns a human readable (maybe translated) name
+ * @return null|string
+ * @since 13.0.0
+ */
+ public function getDisplayName() {
+ return $this->calendarInfo['{DAV:}displayname'];
+ }
+
+ /**
+ * Calendar color
+ * @return null|string
+ * @since 13.0.0
+ */
+ public function getDisplayColor() {
+ return $this->calendarInfo['{http://apple.com/ns/ical/}calendar-color'];
+ }
+
+ /**
+ * @param string $pattern which should match within the $searchProperties
+ * @param array $searchProperties defines the properties within the query pattern should match
+ * @param array $options - optional parameters:
+ * ['timerange' => ['start' => new DateTime(...), 'end' => new DateTime(...)]]
+ * @param integer|null $limit - limit number of search results
+ * @param integer|null $offset - offset for paging of search results
+ * @return array an array of events/journals/todos which are arrays of key-value-pairs
+ * @since 13.0.0
+ */
+ public function search($pattern, array $searchProperties=[], array $options=[], $limit=null, $offset=null) {
+ return $this->backend->search($this->calendarInfo, $pattern,
+ $searchProperties, $options, $limit, $offset);
+ }
+
+ /**
+ * @return integer build up using \OCP\Constants
+ * @since 13.0.0
+ */
+ public function getPermissions() {
+ $permissions = $this->calendar->getACL();
+ $result = 0;
+ foreach ($permissions as $permission) {
+ switch($permission['privilege']) {
+ case '{DAV:}read':
+ $result |= Constants::PERMISSION_READ;
+ break;
+ case '{DAV:}write':
+ $result |= Constants::PERMISSION_CREATE;
+ $result |= Constants::PERMISSION_UPDATE;
+ break;
+ case '{DAV:}all':
+ $result |= Constants::PERMISSION_ALL;
+ break;
+ }
+ }
+
+ return $result;
+ }
+}