GetPageUidViewHelper.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace Opentalent\OtTemplating\ViewHelpers;
  3. use Closure;
  4. use Opentalent\OtCore\Page\OtPageRepository;
  5. use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
  6. use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
  7. use TYPO3\CMS\Core\Utility\GeneralUtility;
  8. use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
  9. use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  10. /**
  11. * Returns the uid of the page with the given slug
  12. * if it exists in the current website,
  13. * else returns null
  14. *
  15. * {namespace ot=Opentalent\OtTemplating\ViewHelpers}
  16. *
  17. * {ot:getPageUid(slug: 'foo')}
  18. *
  19. * @package Opentalent\OtTemplating\ViewHelpers
  20. */
  21. class GetPageUidViewHelper extends OtAbstractViewHelper
  22. {
  23. /**
  24. * -- This method is expected by Fluid --
  25. * Declares the viewhelper's parameters
  26. */
  27. public function initializeArguments()
  28. {
  29. $this->registerArgument(
  30. 'slug',
  31. 'string',
  32. 'The slug of the researched page',
  33. true
  34. );
  35. }
  36. /**
  37. * -- This method is expected by Fluid --
  38. * Renders the content as html
  39. *
  40. * @param array $arguments
  41. * @param Closure $renderChildrenClosure
  42. * @param RenderingContextInterface $renderingContext
  43. * @return int|null
  44. */
  45. public static function renderStatic(
  46. array $arguments,
  47. Closure $renderChildrenClosure,
  48. RenderingContextInterface $renderingContext
  49. ) {
  50. $rootId = GetIdViewHelper::renderStatic(
  51. $arguments,
  52. $renderChildrenClosure,
  53. $renderingContext
  54. );
  55. $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
  56. $subpages = $pageRepository->getAllSubpagesForPage($rootId);
  57. foreach ($subpages as $page) {
  58. if ($page['slug'] === $arguments['slug']) {
  59. return $page['uid'];
  60. }
  61. }
  62. return null;
  63. }
  64. }