GetIdViewHelper.php 1.6 KB

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