/** * @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); } }
/** * 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); } }
/** * @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')]; }
/** * @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; }