summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2017-04-09 18:51:14 +0200
committerGeorg Ehrke <developer@georgehrke.com>2017-04-09 21:20:59 +0200
commitc99bdc9eb4c2b003fcddf826b0f1ee3383a30714 (patch)
tree774ab6482e6fb28bb1bc18646155403d9ab486ba /apps/dav/lib
parent16091f4424b44d9d8ab6076f1cf9218b1d25da4d (diff)
downloadnextcloud-server-c99bdc9eb4c2b003fcddf826b0f1ee3383a30714.tar.gz
nextcloud-server-c99bdc9eb4c2b003fcddf826b0f1ee3383a30714.zip
don't remove owner property for public calendars
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav/lib')
-rw-r--r--apps/dav/lib/CalDAV/Calendar.php2
-rw-r--r--apps/dav/lib/CalDAV/CalendarObject.php2
-rw-r--r--apps/dav/lib/CalDAV/PublicCalendar.php87
-rw-r--r--apps/dav/lib/CalDAV/PublicCalendarObject.php33
-rw-r--r--apps/dav/lib/CalDAV/PublicCalendarRoot.php3
5 files changed, 123 insertions, 4 deletions
diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php
index d5e41c3c8c5..d1eff1aeaa3 100644
--- a/apps/dav/lib/CalDAV/Calendar.php
+++ b/apps/dav/lib/CalDAV/Calendar.php
@@ -282,7 +282,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
return isset($this->calendarInfo['{http://owncloud.org/ns}public']);
}
- private function isShared() {
+ protected function isShared() {
if (!isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
return false;
}
diff --git a/apps/dav/lib/CalDAV/CalendarObject.php b/apps/dav/lib/CalDAV/CalendarObject.php
index c5dc50650af..86aa2c98e8d 100644
--- a/apps/dav/lib/CalDAV/CalendarObject.php
+++ b/apps/dav/lib/CalDAV/CalendarObject.php
@@ -43,7 +43,7 @@ class CalendarObject extends \Sabre\CalDAV\CalendarObject {
return $data;
}
- private function isShared() {
+ protected function isShared() {
if (!isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
return false;
}
diff --git a/apps/dav/lib/CalDAV/PublicCalendar.php b/apps/dav/lib/CalDAV/PublicCalendar.php
new file mode 100644
index 00000000000..63cbdbfa118
--- /dev/null
+++ b/apps/dav/lib/CalDAV/PublicCalendar.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017, Georg Ehrke
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>
+ *
+ */
+namespace OCA\DAV\CalDAV;
+
+use Sabre\DAV\Exception\NotFound;
+
+class PublicCalendar extends Calendar {
+
+ /**
+ * @param string $name
+ * @throws NotFound
+ * @return PublicCalendarObject
+ */
+ public function getChild($name) {
+ $obj = $this->caldavBackend->getCalendarObject($this->calendarInfo['id'], $name);
+
+ if (!$obj) {
+ throw new NotFound('Calendar object not found');
+ }
+ if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) {
+ throw new NotFound('Calendar object not found');
+ }
+ $obj['acl'] = $this->getChildACL();
+
+ return new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
+ }
+
+ /**
+ * @return PublicCalendarObject[]
+ */
+ public function getChildren() {
+ $objs = $this->caldavBackend->getCalendarObjects($this->calendarInfo['id']);
+ $children = [];
+ foreach ($objs as $obj) {
+ if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) {
+ continue;
+ }
+ $obj['acl'] = $this->getChildACL();
+ $children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
+ }
+ return $children;
+ }
+
+ /**
+ * @param string[] $paths
+ * @return PublicCalendarObject[]
+ */
+ public function getMultipleChildren(array $paths) {
+ $objs = $this->caldavBackend->getMultipleCalendarObjects($this->calendarInfo['id'], $paths);
+ $children = [];
+ foreach ($objs as $obj) {
+ if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) {
+ continue;
+ }
+ $obj['acl'] = $this->getChildACL();
+ $children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
+ }
+ return $children;
+ }
+
+ /**
+ * public calendars are always shared
+ * @return bool
+ */
+ protected function isShared() {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/apps/dav/lib/CalDAV/PublicCalendarObject.php b/apps/dav/lib/CalDAV/PublicCalendarObject.php
new file mode 100644
index 00000000000..a4e33ca5ce1
--- /dev/null
+++ b/apps/dav/lib/CalDAV/PublicCalendarObject.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017, Georg Ehrke
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>
+ *
+ */
+namespace OCA\DAV\CalDAV;
+
+class PublicCalendarObject extends CalendarObject {
+
+ /**
+ * public calendars are always shared
+ * @return bool
+ */
+ protected function isShared() {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/apps/dav/lib/CalDAV/PublicCalendarRoot.php b/apps/dav/lib/CalDAV/PublicCalendarRoot.php
index 94fb7e5e4d5..20654549884 100644
--- a/apps/dav/lib/CalDAV/PublicCalendarRoot.php
+++ b/apps/dav/lib/CalDAV/PublicCalendarRoot.php
@@ -47,8 +47,7 @@ class PublicCalendarRoot extends Collection {
*/
function getChild($name) {
$calendar = $this->caldavBackend->getPublicCalendar($name);
- $calendar['{http://owncloud.org/ns}owner-principal'] = '';
- return new Calendar($this->caldavBackend, $calendar, $this->l10n);
+ return new PublicCalendar($this->caldavBackend, $calendar, $this->l10n);
}
/**