Example #1
0
 /**
  * @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;
 }
Example #2
0
 /**
  * @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();
 }
Example #3
0
 /**
  * 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);
 }
Example #9
0
 /**
  * @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);
 }
Example #16
0
 /**
  * @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;
 }
Example #17
0
 /**
  * @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')];
 }