public function generateTarget($itemSource, $shareWith, $exclude = null) { if (!self::$vtodo) { $itemSource = CalendarApp::validateItemSource($itemSource, CalendarApp::SHARETODOPREFIX); self::$vtodo = Object::find($itemSource); } return self::$vtodo['summary']; }
public function formatItems($items, $format, $parameters = null) { $events = array(); if ($format == self::FORMAT_EVENT) { foreach ($items as $item) { $item['item_source'] = App::validateItemSource($item['item_source'], App::SHAREEVENTPREFIX); if (!Object::checkSharedEvent($item['item_source'])) { $event = Object::find($item['item_source']); $event['summary'] = $item['item_target']; $event['item_source'] = (int) $item['item_source']; $event['privat'] = false; $event['shared'] = false; $event['isalarm'] = $event['isalarm']; $event['permissions'] = $item['permissions']; //$event['userid'] = $event['userid']; $event['orgevent'] = false; $events[] = $event; } } } return $events; }
private function isDuplicate($insertid) { $newobject = Object::find($insertid); $endDate = $newobject['enddate']; if (!$newobject['enddate']) { $endDate = null; } $stmt = \OCP\DB::prepare('SELECT * FROM `' . CalendarApp::CldObjectTable . '` `CO` LEFT JOIN `' . CalendarApp::CldCalendarTable . '` ON `CO`.`calendarid`=`' . CalendarApp::CldCalendarTable . '`.`id` WHERE `CO`.`objecttype`=? AND `CO`.`startdate`=? AND `CO`.`enddate`=? AND `CO`.`repeating`=? AND `CO`.`summary`=? AND `' . CalendarApp::CldCalendarTable . '`.`userid` = ? AND `CO`.`calendarid`=?'); $result = $stmt->execute(array($newobject['objecttype'], $newobject['startdate'], $endDate, $newobject['repeating'], $newobject['summary'], $this->userId, $newobject['calendarid'])); $rowCount = $result->rowCount(); if ($rowCount > 1) { return true; } return false; }
/** * @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; }
/** * @NoAdminRequired * * @brief generates the cache the first time * @param integer $id * @return bool true */ public function generateEventCache($id) { $event = Object::find($id); if ((int) $event['repeating'] === 0) { return false; } $calendarId = Object::getCalendarid($id); $object = VObject::parse($event['calendardata']); $start = new \DateTime('01-01-' . date('Y') . ' 00:00:00', new \DateTimeZone('UTC')); $start->modify('-2 years'); $end = new \DateTime('31-12-' . date('Y') . ' 23:59:59', new \DateTimeZone('UTC')); $end->modify('+2 years'); $object->expand($start, $end); foreach ($object->getComponents() as $vevent) { if (!$vevent instanceof \Sabre\VObject\Component) { continue; } $startenddate = Object::generateStartEndDate($vevent->DTSTART, Object::getDTEndFromVEvent($vevent), !$vevent->DTSTART->hasTime(), 'UTC'); $this->repeatDB->insertEvent($id, $calendarId, $startenddate['start'], $startenddate['end']); } return true; }
/** * @brief returns informations about an event * @param int $id - id of the event * @param bool $security - check access rights or not * @param bool $shared - check if the user got access via sharing * @return mixed - bool / array */ public static function getEventObject($id, $security = true, $shared = false) { $event = Object::find($id); if ($shared === true || $security === true) { //$permissions = self::getPermissions($id, self::TODO); //\OCP\Util::writeLog(self::$appname, __METHOD__.' id: '.$id.', permissions: '.$permissions, \OCP\Util::DEBUG); if (self::getPermissions($id, self::TODO)) { return $event; } } else { return $event; } return false; }