PublicCalendar.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017, Georg Ehrke
  4. *
  5. * @author Georg Ehrke <oc.list@georgehrke.com>
  6. *
  7. * @license GNU AGPL version 3 or any later version
  8. *
  9. * This program is free software: you can redistribute it and/or modify
  10. * it under the terms of the GNU Affero General Public License as
  11. * published by the Free Software Foundation, either version 3 of the
  12. * License, or (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21. *
  22. */
  23. namespace OCA\DAV\CalDAV;
  24. use Sabre\DAV\Exception\NotFound;
  25. class PublicCalendar extends Calendar {
  26. /**
  27. * @param string $name
  28. * @throws NotFound
  29. * @return PublicCalendarObject
  30. */
  31. public function getChild($name) {
  32. $obj = $this->caldavBackend->getCalendarObject($this->calendarInfo['id'], $name);
  33. if (!$obj) {
  34. throw new NotFound('Calendar object not found');
  35. }
  36. if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) {
  37. throw new NotFound('Calendar object not found');
  38. }
  39. $obj['acl'] = $this->getChildACL();
  40. return new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
  41. }
  42. /**
  43. * @return PublicCalendarObject[]
  44. */
  45. public function getChildren() {
  46. $objs = $this->caldavBackend->getCalendarObjects($this->calendarInfo['id']);
  47. $children = [];
  48. foreach ($objs as $obj) {
  49. if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) {
  50. continue;
  51. }
  52. $obj['acl'] = $this->getChildACL();
  53. $children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
  54. }
  55. return $children;
  56. }
  57. /**
  58. * @param string[] $paths
  59. * @return PublicCalendarObject[]
  60. */
  61. public function getMultipleChildren(array $paths) {
  62. $objs = $this->caldavBackend->getMultipleCalendarObjects($this->calendarInfo['id'], $paths);
  63. $children = [];
  64. foreach ($objs as $obj) {
  65. if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) {
  66. continue;
  67. }
  68. $obj['acl'] = $this->getChildACL();
  69. $children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj);
  70. }
  71. return $children;
  72. }
  73. /**
  74. * public calendars are always shared
  75. * @return bool
  76. */
  77. protected function isShared() {
  78. return true;
  79. }
  80. }