/**
  * @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
         }
     }
 }
Example #2
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;
 }
 /**
  * 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);
 }
Example #4
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();
 }
 /**
  * Patch a calendar from request
  * @param \OCA\Calendar\ICalendar $newCalendar
  * @param \OCA\Calendar\ICalendar $oldCalendar
  * @return \OCA\Calendar\ICalendar
  */
 public function patch(ICalendar $newCalendar, ICalendar $oldCalendar)
 {
     $newCalendar->setId($oldCalendar->getId());
     $newCalendar->setPrivateUri($oldCalendar->getPrivateUri());
     $this->resetReadOnlyProperties($newCalendar, $oldCalendar);
     if ($newCalendar->doesContainNullValues()) {
         $newCalendar = $oldCalendar->overwriteWith($newCalendar);
     }
     /** @var \OCA\Calendar\ICalendar $newCalendar */
     return parent::update($newCalendar);
 }
 /**
  * @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();
 }
 /**
  * Delete a calendar
  * @param \OCA\Calendar\ICalendar $calendar
  * @throws \OCA\Calendar\BusinessLayer\Exception
  */
 public function delete(ICalendar $calendar)
 {
     try {
         $api = $calendar->getBackend()->getCalendarAPI();
         if (!$api instanceof BackendUtils\ICalendarAPIDelete) {
             throw new Exception('Backend does not support deleting calendars!');
         }
         $backendId = $calendar->getBackend()->getId();
         $privateUri = $calendar->getPrivateUri();
         $userId = $calendar->getUserId();
         $api->delete($privateUri, $userId);
         $this->updater->remove($backendId, $privateUri, $userId);
     } catch (BackendUtils\Exception $ex) {
         \OC::$server->getLogger()->debug($ex->getMessage());
         throw Exception::fromException($ex);
     }
 }
 /**
  * @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')];
 }
Example #10
0
 /**
  * @param ICalendar $calendar
  */
 public function __construct(ICalendar $calendar)
 {
     $this->uri = $calendar->getPrivateUri();
     $this->userId = $calendar->getUserId();
 }