/** * @param IDBConnection $db * @param ICalendar $calendar * @param ObjectFactory $factory * @param string $calendarTableName * @param string $objectTableName */ public function __construct(IDBConnection $db, ICalendar $calendar, ObjectFactory $factory, $calendarTableName = 'clndr_calendars', $objectTableName = 'clndr_objects') { parent::__construct($db, $calendarTableName, $objectTableName); $this->calendar = $calendar; $this->calendarId = parent::getCalendarId($calendar->getPrivateUri(), $calendar->getUserId()); $this->factory = $factory; }
/** * @param IManager $contactsManager * @param ICalendar $calendar * @param IL10N $l10n * @param ObjectFactory $objectFactory */ public function __construct(IManager $contactsManager, ICalendar $calendar, IL10N $l10n, ObjectFactory $objectFactory) { parent::__construct($contactsManager); $this->calendar = $calendar; $this->l10n = $l10n; $this->factory = $objectFactory; $this->uri = $calendar->getPrivateUri(); $this->userId = $calendar->getUserId(); }
/** * delete all objects from cache */ public function clear() { $sql = 'DELETE FROM `' . $this->getTableName() . '` '; $sql .= 'WHERE `calendarid` = ?'; $params = [$this->calendar->getId()]; $this->execute($sql, $params); }
/** * @param ICalendar $calendar * @param ILogger $logger */ public function __construct(ICalendar $calendar, ILogger $logger) { $this->calendar = $calendar; $this->logger = $logger; if ($calendar->getBackend() instanceof IBackend) { try { $this->api = $calendar->getBackend()->getObjectAPI($calendar); } catch (BackendUtils\Exception $ex) { //TODO } $this->cache = $calendar->getBackend()->getObjectCache($calendar); $this->updater = $calendar->getBackend()->getObjectUpdater($calendar); $this->watcher = $calendar->getBackend()->getObjectWatcher($calendar); $this->isCachingEnabled = $this->api->cache(); } }
/** * @param ICalendar $calendar */ public function __construct(ICalendar $calendar) { $this->calendar = $calendar; $backend = $this->calendar->getBackend(); if (!$backend instanceof IBackend) { $identifier = implode('::', [$this->calendar->getUserId(), '?', $this->calendar->getPrivateUri()]); $this->logger->error('Backend of calendar \'' . $identifier . '\' not found'); } else { $this->cache = $backend->getObjectCache($calendar); try { $this->objectAPI = $backend->getObjectAPI($calendar); } catch (BackendUtils\Exception $ex) { //TODO } } }
/** * @param ICalendar $calendar * @param \OCA\Calendar\IObject|\OCA\Calendar\IObjectCollection $data * @param TimezoneMapper $timezones */ public function __construct(ICalendar $calendar, $data, TimezoneMapper $timezones) { $vobject = $data->getVObject(); if ($vobject) { if ($timezones) { SabreUtility::addMissingVTimezones($vobject, $timezones); } $serialized = $vobject->serialize(); $contentType = 'application/octet-stream'; $filename = $calendar->getPublicUri(); if ($data instanceof IObject) { $filename .= '-' . $data->getSummary(); } $filename .= '.ics'; parent::__construct($serialized, $filename, $contentType); } }
/** * rescan objects that changed and update the corresponding cached calendars */ public function propagateChanges() { $changes = $this->getChanges(); $this->resetChanges(); if (empty($changes)) { return; } $backend = $this->calendar->getBackend(); $scanner = $backend->getObjectScanner($this->calendar); foreach ($changes as $objectUri) { $scanner->scanObject($objectUri); } $calendarScanner = $backend->getBackendCollection()->getScanner(); $backendId = $this->calendar->getBackend()->getId(); $privateUri = $this->calendar->getPrivateUri(); $userId = $this->calendar->getUserId(); $calendarScanner->scanCalendar($backendId, $privateUri, $userId); }
/** * remove deleted objects from cache */ public function clean() { try { $objectAPI = $this->calendar->getBackend()->getObjectAPI($this->calendar); $list = $objectAPI->listAll(); } catch (BackendUtils\Exception $ex) { return; } $cList = $this->cache->listAll(); $deletedOnRemote = array_diff($cList, $list); $this->cache->deleteList($deletedOnRemote); }
/** * @param boolean $force return value all the time * @return mixed (integer|null) */ public function getRuds($force = false) { if ($force && $this->ruds === null) { if ($this->calendar instanceof ICalendar) { $cruds = $this->calendar->getCruds(); if ($cruds & Permissions::CREATE) { return $cruds - Permissions::CREATE; } else { return $cruds; } } } return $this->getter('ruds'); }
/** * @param ICalendar &$calendar * @param callable $doesExist * @param boolean $isPublicUri */ public static function generateURI(ICalendar &$calendar, \closure $doesExist, $isPublicUri = true) { if ($isPublicUri === true) { $uri = $calendar->getPublicUri(); } else { $uri = $calendar->getPrivateUri(); } if ($uri === null) { $uri = mb_strtolower($calendar->getDisplayname()); } $uri = CalendarUtility::slugify($uri); while ($doesExist($uri)) { $newUri = self::suggestUri($uri); if ($newUri === $uri) { break; } $uri = $newUri; } if ($isPublicUri) { $calendar->setPublicUri($uri); } else { $calendar->setPrivateUri($uri); } }
/** * {@inheritDoc} */ public function hasUpdated(ICalendar $calendar) { $privateUri = $calendar->getPrivateUri(); $userId = $calendar->getUserId(); $oldCalendar = $this->find($privateUri, $userId); return $calendar->getCtag() !== $oldCalendar->getCtag(); }
/** * {@inheritDoc} */ public function hasUpdated(ICalendar $calendar) { $oldCTag = $calendar->getCtag(); $currentCTag = $this->generateCTag(); return $oldCTag !== $currentCTag; }
/** * Make sure either a publicUri or a displayname are set * @param \OCA\Calendar\ICalendar $calendar * @throws \OCA\Calendar\BusinessLayer\Exception */ private function checkUriOrDisplaynameExists(ICalendar $calendar) { $displayname = $calendar->getDisplayname(); if (($displayname === null || trim($displayname) === '') && $calendar->getPublicUri() === null) { throw new Exception('Please enter a calendar-name', Http::STATUS_UNPROCESSABLE_ENTITY); } }
/** * check if the user is allowed to actually read the calendar * @param ICalendar $calendar * @throws BusinessLayer\Exception */ private function checkAllowedToRead(ICalendar $calendar) { if (!$calendar->doesAllow(Permissions::READ)) { throw new BusinessLayer\Exception('Not allowed to read calendar', HTTP::STATUS_FORBIDDEN); } }
/** * @param ICalendar $calendar * @return boolean */ private function areMinorChanges(ICalendar $calendar) { $allowed = ['color', 'components', 'description', 'displayname', 'enabled', 'order']; $updatedFields = array_keys($calendar->getUpdatedFields()); $majorChanges = array_diff($updatedFields, $allowed); return empty($majorChanges); }
/** * @param IBackend $backend * @param ICalendar $calendar * @param ICalendar $cachedCalendar * @return ICalendar */ protected function resetUnsupportedProperties(IBackend $backend, ICalendar $calendar, ICalendar $cachedCalendar) { $backendAPI = $backend->getBackendAPI(); if (!$backendAPI->canStoreColor()) { $calendar->setColor($cachedCalendar->getColor()); } if (!$backendAPI->canStoreComponents()) { $calendar->setComponents($cachedCalendar->getComponents()); } if (!$backendAPI->canStoreDescription()) { $calendar->setDescription($cachedCalendar->getDescription()); } if (!$backendAPI->canStoreDisplayname()) { $calendar->setDisplayname($cachedCalendar->getDisplayname()); } if (!$backendAPI->canStoreEnabled()) { $calendar->setEnabled($cachedCalendar->getEnabled()); } if (!$backendAPI->canStoreOrder()) { $calendar->setOrder($cachedCalendar->getOrder()); } return $calendar; }
/** * @param ICalendar $calendar */ public function __construct(ICalendar $calendar) { $this->uri = $calendar->getPrivateUri(); $this->userId = $calendar->getUserId(); }
/** * @param ICalendar $calendar * @return array */ private function getCalendarSqlParams(ICalendar $calendar) { return [$calendar->getUserId(), $calendar->getDisplayname(), $calendar->getPrivateUri(), $calendar->getEnabled(), $calendar->getCtag(), $calendar->getOrder(), $calendar->getColor(), $this->getTypes($calendar->getComponents(), 'string')]; }