GetIdViewHelper.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace Opentalent\OtTemplating\ViewHelpers\EventsPage;
  3. use Closure;
  4. use Opentalent\OtTemplating\Page\OtPageRepository;
  5. use TYPO3\CMS\Core\Utility\GeneralUtility;
  6. use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
  7. use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  8. /**
  9. * Retrieves and returns the uid of the events' page of the current site
  10. * The events page is the first page found with the template 'OpenTalent.OtTemplating->events'
  11. * Returns null if no such page is found
  12. *
  13. * Call it in fluid templates with:
  14. *
  15. * {namespace ot=Opentalent\OtTemplating\ViewHelpers}
  16. *
  17. * {ot:eventsPage.getId()}
  18. *
  19. * @package Opentalent\OtTemplating\ViewHelpers
  20. */
  21. class GetIdViewHelper extends AbstractViewHelper
  22. {
  23. /**
  24. * -- This method is expected by Fluid --
  25. * Renders the content as html
  26. *
  27. * @param array $arguments
  28. * @param Closure $renderChildrenClosure
  29. * @param RenderingContextInterface $renderingContext
  30. * @return int|null
  31. */
  32. public static function renderStatic(
  33. array $arguments,
  34. Closure $renderChildrenClosure,
  35. RenderingContextInterface $renderingContext
  36. ) {
  37. $rootId = \Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper::renderStatic(
  38. $arguments,
  39. $renderChildrenClosure,
  40. $renderingContext
  41. );
  42. $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
  43. $subpages = $pageRepository->getAllSubpagesForPage($rootId);
  44. foreach ($subpages as $page) {
  45. if ($page['tx_fed_page_controller_action'] === 'OpenTalent.OtTemplating->events') {
  46. return $page['uid'];
  47. }
  48. }
  49. return null;
  50. }
  51. }