events' * Returns null if no such page is found, or if the page is disabled * * Call it in fluid templates with: * * {namespace ot=Opentalent\OtTemplating\ViewHelpers} * * {ot:eventsPage.getId()} * * @package Opentalent\OtTemplating\ViewHelpers */ class GetIdViewHelper extends OtAbstractViewHelper { public function __construct( private readonly OtPageRepository $otPageRepository, ) {} /** * -- This method is expected by Fluid -- * Declares the viewhelper's parameters */ public function initializeArguments(): void { $this->registerArgument( 'children', 'integer', 'If true, look for the events page of the children structures, instead of the current one', false, 0 ); } /** * -- This method is expected by Fluid -- * Renders the content as html * * @return int|null */ public function render(): ?int { $rootId = \Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper::renderStatic( $this->arguments, $this->renderChildrenClosure, $this->renderingContext ); $subpages = $this->otPageRepository->getAllSubpagesForPage($rootId); $templateName = $this->arguments['children'] == 1 ? 'OpenTalent.OtTemplating->structuresEvents' : 'OpenTalent.OtTemplating->events'; foreach ($subpages as $page) { if ($page['tx_fed_page_controller_action'] === $templateName & $page['deleted'] == 0 & $page['hidden'] == 0 ) { return $page['uid']; } } return null; } }