/** * 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; } }
public static function moveToCalendar($id, $calendarid) { $calendar = Calendar::find($calendarid); if ($calendar['userid'] !== \OCP\User::getUser()) { $sharedCalendar = \OCP\Share::getItemSharedWithBySource(App::SHARECALENDAR, App::SHARECALENDARPREFIX . $calendarid); if (!$sharedCalendar || !($sharedCalendar['permissions'] & \OCP\PERMISSION_UPDATE)) { throw new \Exception(App::$l10n->t('You do not have the permissions to add events to this calendar.')); } } $stmt = \OCP\DB::prepare('UPDATE `' . App::CldObjectTable . '` SET `calendarid`=? WHERE `id`=?'); $stmt->execute(array($calendarid, $id)); Calendar::touchCalendar($calendarid); $app = new Application(); $c = $app->getContainer(); $repeatController = $c->query('RepeatController'); $repeatController->updateEvent($id); //\OCP\Util::emitHook('\OCA\CalendarPlus', 'moveEvent', $id); return true; }
/** * @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(\OC::$server->getUserSession()->getUser())) { $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.')); } } $dbObject = \OC::$server->getDb(); $calendarDB = new CalendarDAO($dbObject, $user); $bDeleteCalendar = $calendarDB->delete($id); if ($bDeleteCalendar === true) { $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); $app = new Application(); $c = $app->getContainer(); $repeatController = $c->query('RepeatController'); $repeatController->cleanCalendar($id); $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 $bDeleteCalendar; } else { return $bDeleteCalendar; } }