/** * @NoAdminRequired */ public function deleteCalendar() { $calId = (int) $this->params('calendarid'); $del = CalendarCalendar::deleteCalendar($calId); if ($del === true) { $calendars = CalendarCalendar::allCalendars($this->userId, false, false, false); $bNewId = null; //\OCP\Util::writeLog($this->appName, 'DEL COUNT-> '.count($calendars).$calendars[0]['id'], \OCP\Util::DEBUG); if (\OCP\USER::isLoggedIn() && count($calendars) === 0) { $bNewId = CalendarCalendar::addDefaultCalendars($this->userId); } $params = ['status' => 'success', 'newid' => $bNewId]; } else { $params = ['status' => 'error']; } $response = new JSONResponse($params); return $response; }
/** * removes a calendar * @param integer $id * @param boolean $bLogActivity * @return associative array */ public function delete($id, $bLogActivity = true) { $calendar = $this->find($id); //\OCP\Util::writeLog('DAV', 'DEL ID-> '.$id, \OCP\Util::DEBUG); $group = \OC::$server->getGroupManager()->get('admin'); $this->setUserId(\OCP\User::getUser()); if ($calendar['userid'] !== $this->userId && !$group->inGroup($this->userId)) { $sharedCalendar = $this->shareConnector->getItemSharedWithBySourceCalendar($id); if (!$sharedCalendar || !($sharedCalendar['permissions'] & $this->shareConnector->getDeleteAccess())) { throw new \Sabre\DAV\Exception\Forbidden('You do not have the permissions to delete this calendar.'); } } $calendarDB = new CalendarDAO($this->db, $this->userId); $bDeleteCalendar = $calendarDB->delete($id); if ($bDeleteCalendar === true) { \OCP\Util::emitHook('\\OCA\\CalendarPlus', 'deleteCalendar', $id); $this->deleteObjects($id); $this->shareConnector->unshareAllCalendar($id); $app = new Application(); $c = $app->getContainer(); $repeatController = $c->query('RepeatController'); $repeatController->cleanCalendar($id); $calendars = $this->all(false, false); if (\OCP\USER::isLoggedIn() && count($calendars) === 0 || count($calendars) === 1 && $calendars[0]['id'] === 'birthday_' . $this->userId) { //self::addDefaultCalendars($user); } if ($bLogActivity === true) { $link = \OC::$server->getURLGenerator()->linkToRoute('calendarplus.page.index'); $params = array('mode' => 'deleted', 'link' => $link, 'trans_type' => '', 'summary' => $calendar['displayname'], 'cal_user' => $this->userId, 'cal_displayname' => $calendar['displayname']); ActivityData::logEventActivity($params, false, true); } return $bDeleteCalendar; } else { return $bDeleteCalendar; } }
/** * @brief Get the permissions for a calendar / an event * @param (int) $id - id of the calendar / event * @param (string) $type - type of the id (calendar/event) * @return (int) $permissions - CRUDS permissions * @param (string) $accessclass - access class (rfc5545, section 3.8.1.3) * @see \OCP\Share */ public static function getPermissions($id, $type, $accessclass = '') { $permissions_all = \OCP\PERMISSION_ALL; if ($type == self::CALENDAR) { $calendar = self::getCalendar($id, false, false); if ($calendar['userid'] == \OCP\USER::getUser()) { if (isset($calendar['issubscribe'])) { $permissions_all = \OCP\PERMISSION_READ; } return $permissions_all; } else { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(self::SHARECALENDAR, App::SHARECALENDARPREFIX . $id); if ($sharedCalendar) { return $sharedCalendar['permissions']; } } } elseif ($type == self::EVENT) { $object = Object::find($id); $cal = Calendar::find($object['calendarid']); if ($cal['userid'] == \OCP\USER::getUser()) { if ($cal['issubscribe']) { $permissions_all = \OCP\PERMISSION_READ; } return $permissions_all; } else { if (\OCP\USER::isLoggedIn()) { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(self::SHARECALENDAR, self::SHARECALENDARPREFIX . $object['calendarid']); $sharedEvent = \OCP\Share::getItemSharedWithBySource(self::SHAREEVENT, self::SHAREEVENTPREFIX . $id); $calendar_permissions = 0; $event_permissions = 0; if ($sharedCalendar) { $calendar_permissions = $sharedCalendar['permissions']; } if ($sharedEvent) { $event_permissions = $sharedEvent['permissions']; } } if (!\OCP\USER::isLoggedIn()) { //\OCP\Util::writeLog('calendar', __METHOD__ . ' id: ' . $id . ', NOT LOGGED IN: ', \OCP\Util::DEBUG); $sharedByLinkCalendar = \OCP\Share::getItemSharedWithByLink(self::SHARECALENDAR, self::SHARECALENDARPREFIX . $object['calendarid'], $cal['userid']); if ($sharedByLinkCalendar) { $calendar_permissions = $sharedByLinkCalendar['permissions']; $event_permissions = 0; } } if ($accessclass === 'PRIVATE') { return 0; } elseif ($accessclass === 'CONFIDENTIAL') { return \OCP\PERMISSION_READ; } else { return max($calendar_permissions, $event_permissions); } } } return 0; }
/** * @brief removes a calendar * @param integer $id * @return boolean */ public static function deleteCalendar($id) { $calendar = self::find($id); //\OCP\Util::writeLog('DAV', 'DEL ID-> '.$id, \OCP\Util::DEBUG); $group = \OC::$server->getGroupManager()->get('admin'); $user = \OCP\User::getUser(); if ($calendar['userid'] != $user && !$group->inGroup($user)) { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $id); if (!$sharedCalendar || !($sharedCalendar['permissions'] & \OCP\PERMISSION_DELETE)) { throw new \Exception(App::$l10n->t('You do not have the permissions to delete this calendar.')); } } $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldCalendarTable . '` WHERE `id` = ?'); $stmt->execute(array($id)); $stmt = \OCP\DB::prepare('DELETE FROM `' . App::CldObjectTable . '` WHERE `calendarid` = ?'); $stmt->execute(array($id)); \OCP\Share::unshareAll(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $id); \OCP\Util::emitHook('\\OCA\\CalendarPlus', 'deleteCalendar', $id); $calendars = self::allCalendars(\OCP\USER::getUser(), false, false); if (\OCP\USER::isLoggedIn() && count($calendars) === 0 || count($calendars) == 1 && $calendars[0]['id'] == 'birthday_' . \OCP\USER::getUser()) { self::addDefaultCalendars(\OCP\USER::getUser()); } $link = \OC::$server->getURLGenerator()->linkToRoute(App::$appname . '.page.index'); $params = array('mode' => 'deleted', 'link' => $link, 'trans_type' => '', 'summary' => $calendar['displayname'], 'cal_user' => $user, 'cal_displayname' => $calendar['displayname']); ActivityData::logEventActivity($params, false, true); return true; }
/** * @brief Get the permissions for a calendar / an event * @param (int) $id - id of the calendar / event * @param (string) $type - type of the id (calendar/event) * @return (int) $permissions - CRUDS permissions * @param (string) $accessclass - access class (rfc5545, section 3.8.1.3) * @see \OCP\Share */ public static function getPermissions($id, $type, $accessclass = '') { $permissions_all = \OCP\PERMISSION_ALL; if ($type === self::CALENDAR) { $calendar = self::getCalendar($id, false, false); if ($calendar['userid'] === \OCP\USER::getUser()) { return $permissions_all; } else { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $id); if ($sharedCalendar) { return $sharedCalendar['permissions']; } } } elseif ($type == self::TODO) { if (Object::getowner($id) === \OCP\USER::getUser()) { return $permissions_all; } else { $object = Object::find($id); $cal = Calendar::find($object['calendarid']); if (\OCP\USER::isLoggedIn()) { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $object['calendarid']); $sharedEvent = \OCP\Share::getItemSharedWithBySource(CalendarApp::SHARETODO, CalendarApp::SHARETODOPREFIX . $id); $calendar_permissions = 0; $event_permissions = 0; if ($sharedCalendar) { $calendar_permissions = $sharedCalendar['permissions']; } if ($sharedEvent) { $event_permissions = $sharedEvent['permissions']; } } if (!\OCP\USER::isLoggedIn()) { $sharedByLinkCalendar = \OCP\Share::getItemSharedWithByLink(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $object['calendarid'], $cal['userid']); if ($sharedByLinkCalendar) { $calendar_permissions = $sharedByLinkCalendar['permissions']; $event_permissions = 0; } } if ($accessclass === 'PRIVATE') { return 0; } elseif ($accessclass === 'CONFIDENTIAL') { return \OCP\PERMISSION_READ; } else { return max($calendar_permissions, $event_permissions); } } } return 0; }