/** * Renders an insert tag. * * @param string $insertTag * * @return Response */ public function renderAction($insertTag) { $this->framework->initialize(); /** @var InsertTags $it */ $it = $this->framework->createInstance('Contao\\InsertTags'); // Never cache these responses return (new Response($it->replace($insertTag, false)))->setPrivate(); }
/** * Toggles the TL_VIEW cookie and redirects back to the referring page. * * @param GetResponseEvent $event The event object */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); if (!$this->isFrontendMasterRequest($event) || !$request->query->has('toggle_view')) { return; } $this->framework->initialize(); $response = new RedirectResponse(System::getReferer(), 303); $response->headers->setCookie($this->getCookie($request->query->get('toggle_view'), $request->getBasePath())); $event->setResponse($response); }
/** * {@inheritdoc} * * @return BackendUser|FrontendUser */ public function loadUserByUsername($username) { if ($this->isBackendUsername($username)) { $this->framework->initialize(); return BackendUser::getInstance(); } if ($this->isFrontendUsername($username)) { $this->framework->initialize(); return FrontendUser::getInstance(); } throw new UsernameNotFoundException('Can only load user "frontend" or "backend".'); }
/** * Forwards the request to the Frontend class and sets the response if any. * * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { if (!$this->isFrontendMasterRequest($event)) { return; } $this->framework->initialize(); /** @var Frontend $frontend */ $frontend = $this->framework->getAdapter('Contao\\Frontend'); if (null !== ($response = $frontend->getResponseFromCache())) { $event->setResponse($response); } }
/** * {@inheritdoc} */ public function warmUp($cacheDir) { if (!$this->isCompleteInstallation()) { return; } $this->framework->initialize(); $this->generateConfigCache($cacheDir); $this->generateDcaCache($cacheDir); $this->generateLanguageCache($cacheDir); $this->generateDcaExtracts($cacheDir); $this->generateTemplateMapper($cacheDir); }
/** * Returns the page model for an FAQ. * * @param int $id * * @return PageModel|false|null */ private function getPageForFaq($id) { $this->framework->initialize(); /** @var FaqCategoryModel $categoryAdapter */ $categoryAdapter = $this->framework->getAdapter(FaqCategoryModel::class); if (null === ($categoryModel = $categoryAdapter->findByPk($id))) { return false; } /** @var PageModel $pageModel */ $pageModel = $categoryModel->getRelated('jumpTo'); return $pageModel; }
/** * Adds the feeds to the page header. * * @param PageModel $objPage * @param LayoutModel|object $objLayout */ public function onGeneratePage(PageModel $objPage, LayoutModel $objLayout) { $newsfeeds = StringUtil::deserialize($objLayout->newsfeeds); if (empty($newsfeeds) || !is_array($newsfeeds)) { return; } $this->framework->initialize(); /** @var NewsFeedModel $adapter */ $adapter = $this->framework->getAdapter(NewsFeedModel::class); if (!($feeds = $adapter->findByIds($newsfeeds)) instanceof Collection) { return; } $this->addFeedMarkupToPageHeader($feeds); }
/** * Returns the page model for an event. * * @param int $id * * @return PageModel|false|null */ private function getPageForEvent($id) { $this->framework->initialize(); /** @var CalendarEventsModel $eventsAdapter */ $eventsAdapter = $this->framework->getAdapter(CalendarEventsModel::class); if (null === ($eventsModel = $eventsAdapter->findByPk($id))) { return false; } /** @var CalendarModel $calendarModel */ if (null === ($calendarModel = $eventsModel->getRelated('pid'))) { return false; } /** @var PageModel $pageModel */ $pageModel = $calendarModel->getRelated('jumpTo'); return $pageModel; }
/** * Returns the page model for a news item. * * @param int $id * * @return PageModel|false|null */ private function getPageForNews($id) { $this->framework->initialize(); /** @var NewsModel $newsAdapter */ $newsAdapter = $this->framework->getAdapter(NewsModel::class); if (null === ($newsModel = $newsAdapter->findByPk($id))) { return false; } /** @var NewsArchiveModel $archiveModel */ if (null === ($archiveModel = $newsModel->getRelated('pid'))) { return false; } /** @var PageModel $pageModel */ $pageModel = $archiveModel->getRelated('jumpTo'); return $pageModel; }
/** * Replaces FAQ insert tags. * * @param string $tag * * @return string|false */ public function onReplaceInsertTags($tag) { $elements = explode('::', $tag); $key = strtolower($elements[0]); if (!in_array($key, $this->supportedTags, true)) { return false; } $this->framework->initialize(); /** @var FaqModel $adapter */ $adapter = $this->framework->getAdapter(FaqModel::class); $faq = $adapter->findByIdOrAlias($elements[1]); if (null === $faq || false === ($url = $this->generateUrl($faq))) { return ''; } return $this->generateReplacement($faq, $key, $url); }
/** * Loads the language strings. * * @return array|null The language strings or null */ private function loadLanguageStrings() { $this->framework->initialize(); System::loadLanguageFile('exception'); if (!isset($GLOBALS['TL_LANG']['XPT'])) { return null; } return $GLOBALS['TL_LANG']['XPT']; }
/** * Replaces an event-related insert tag. * * @param string $insertTag * @param string $idOrAlias * * @return string */ private function replaceEventInsertTag($insertTag, $idOrAlias) { $this->framework->initialize(); /** @var CalendarEventsModel $adapter */ $adapter = $this->framework->getAdapter(CalendarEventsModel::class); if (null === ($event = $adapter->findByIdOrAlias($idOrAlias))) { return ''; } return $this->generateReplacement($event, $insertTag); }
/** * Replaces a news-related insert tag. * * @param string $insertTag * @param string $idOrAlias * * @return string */ private function replaceNewsInsertTags($insertTag, $idOrAlias) { $this->framework->initialize(); /** @var NewsModel $adapter */ $adapter = $this->framework->getAdapter(NewsModel::class); if (null === ($news = $adapter->findByIdOrAlias($idOrAlias))) { return ''; } return $this->generateReplacement($news, $insertTag); }
/** * Loads the options from the database. */ private function loadOptions() { if (null !== $this->options) { return; } // The framework is required to have the TL_CROP options available $this->framework->initialize(); $this->options = $GLOBALS['TL_CROP']; $rows = $this->connection->fetchAll('SELECT id, name, width, height FROM tl_image_size ORDER BY pid, name'); foreach ($rows as $imageSize) { $this->options['image_sizes'][$imageSize['id']] = sprintf('%s (%sx%s)', $imageSize['name'], $imageSize['width'], $imageSize['height']); } }
/** * Generates a Contao URL. * * @param string $name * @param array $parameters * @param int $referenceType * * @return string */ public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH) { $this->framework->initialize(); if (!is_array($parameters)) { $parameters = []; } $context = $this->getContext(); // Store the original request context $host = $context->getHost(); $scheme = $context->getScheme(); $httpPort = $context->getHttpPort(); $httpsPort = $context->getHttpsPort(); $this->prepareLocale($parameters); $this->prepareAlias($name, $parameters); $this->prepareDomain($context, $parameters, $referenceType); $url = $this->router->generate('index' === $name ? 'contao_index' : 'contao_frontend', $parameters, $referenceType); // Reset the request context $context->setHost($host); $context->setScheme($scheme); $context->setHttpPort($httpPort); $context->setHttpsPort($httpsPort); return $url; }