FluidTYPO3\Vhs\Service\PageService::getPage PHP Method

getPage() public method

public getPage ( integer $pageUid, boolean $disableGroupAccessCheck = false ) : array
$pageUid integer
$disableGroupAccessCheck boolean
return array
    public function getPage($pageUid, $disableGroupAccessCheck = false)
    {
        $cacheKey = md5($pageUid . (int) $disableGroupAccessCheck);
        if (false === isset(static::$cachedPages[$cacheKey])) {
            static::$cachedPages[$cacheKey] = $this->getPageRepository()->getPage($pageUid, $disableGroupAccessCheck);
        }
        return static::$cachedPages[$cacheKey];
    }

Usage Example

Beispiel #1
0
 /**
  * Render method
  * @return NULL|string
  */
 public function render()
 {
     // Check if link wizard link
     $pageUid = $this->arguments['pageUid'];
     $additionalParameters = (array) $this->arguments['additionalParams'];
     if (false === is_numeric($pageUid)) {
         $linkConfig = GeneralUtility::unQuoteFilenames($pageUid, true);
         if (true === isset($linkConfig[0])) {
             $pageUid = $linkConfig[0];
         }
         if (true === isset($linkConfig[1]) && '-' !== $linkConfig[1]) {
             $this->tag->addAttribute('target', $linkConfig[1]);
         }
         if (true === isset($linkConfig[2]) && '-' !== $linkConfig[2]) {
             $this->tag->addAttribute('class', $linkConfig[2]);
         }
         if (true === isset($linkConfig[3]) && '-' !== $linkConfig[3]) {
             $this->tag->addAttribute('title', $linkConfig[3]);
         }
         if (true === isset($linkConfig[4]) && '-' !== $linkConfig[4]) {
             $additionalParametersString = trim($linkConfig[4], '&');
             $additionalParametersArray = GeneralUtility::trimExplode('&', $additionalParametersString);
             foreach ($additionalParametersArray as $parameter) {
                 list($key, $value) = GeneralUtility::trimExplode('=', $parameter);
                 $additionalParameters[$key] = $value;
             }
         }
     }
     // Get page via pageUid argument or current id
     $pageUid = (int) $pageUid;
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $showAccessProtected = (bool) $this->arguments['showAccessProtected'];
     //TODO: Remove handling of deprecated argument
     if ($this->hasArgument('linkAccessRestrictedPages')) {
         $showAccessProtected = (bool) $this->arguments['linkAccessRestrictedPages'];
     }
     $page = $this->pageService->getPage($pageUid, $showAccessProtected);
     if (empty($page)) {
         return null;
     }
     $targetPage = $this->pageService->getShortcutTargetPage($page);
     if ($targetPage !== null) {
         if ($this->pageService->shouldUseShortcutTarget($this->arguments)) {
             $page = $targetPage;
         }
         if ($this->pageService->shouldUseShortcutUid($this->arguments)) {
             $pageUid = $targetPage['uid'];
         }
     }
     // Do not render the link, if the page should be hidden
     $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
     $hidePage = $this->pageService->hidePageForLanguageUid($page, $currentLanguageUid);
     if (true === $hidePage) {
         return null;
     }
     // Get the title from the page or page overlay
     $title = $this->getTitleValue($page);
     // Check if we should assign page title to the template variable container
     $pageTitleAs = $this->arguments['pageTitleAs'];
     if (!empty($pageTitleAs)) {
         $variables = [$pageTitleAs => $title];
     } else {
         $variables = [];
     }
     // Render children to see if an alternative title content should be used
     $renderedTitle = $this->renderChildrenWithVariables($variables);
     if (!empty($renderedTitle)) {
         $title = $renderedTitle;
     }
     $class = [];
     if ($showAccessProtected && $this->pageService->isAccessProtected($page)) {
         $class[] = $this->arguments['classAccessProtected'];
     }
     if ($showAccessProtected && $this->pageService->isAccessGranted($page)) {
         $class[] = $this->arguments['classAccessGranted'];
     }
     $additionalCssClasses = implode(' ', $class);
     $uriBuilder = $this->controllerContext->getUriBuilder();
     $uri = $uriBuilder->reset()->setTargetPageUid($pageUid)->setTargetPageType($this->arguments['pageType'])->setNoCache($this->arguments['noCache'])->setUseCacheHash(!$this->arguments['noCacheHash'])->setSection($this->arguments['section'])->setArguments($additionalParameters)->setCreateAbsoluteUri($this->arguments['absolute'])->setAddQueryString($this->arguments['addQueryString'])->setArgumentsToBeExcludedFromQueryString((array) $this->arguments['argumentsToBeExcludedFromQueryString'])->build();
     $this->tag->addAttribute('href', $uri);
     if (!empty($this->arguments['class'])) {
         $this->tag->addAttribute('class', $this->arguments['class'] . ' ' . $additionalCssClasses);
     } else {
         $this->tag->addAttribute('class', $additionalCssClasses);
     }
     $this->tag->setContent($title);
     return $this->tag->render();
 }