* {members} * * * @package Opentalent\OtTemplating\ViewHelpers */ class GetAllCaViewHelper extends AbstractViewHelper { use TemplateVariableViewHelperTrait; /** * >> Required to prevent typo3 to escape the html output * @var boolean */ protected $escapeOutput = false; /** * @var \Opentalent\OtTemplating\Domain\Repository\MemberRepository * */ protected $memberRepository; public function initializeArguments() { $this->registerArgument( 'as', 'string', 'Name of the returned array', true ); $this->registerArgument( 'organizationId', 'integer', 'Id of the current structure', true ); } /** * @return string */ public function render() { // Get current settings $as = $this->arguments['as']; $organizationId = $this->arguments['organizationId']; // Get members of the structure (only CA members) $members = $this->memberRepository->findByOrganizationId($organizationId, true); // Sort alphabetically by name usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());}); // Missions to display (sorted) $membersByMission = [ 'PRESIDENT' => [], 'HONORARY_PRESIDENT' => [], 'VICE_PRESIDENT' => [], 'VICE_PRESIDENT_OF_HONOR' => [], 'PRESIDENT_ASSISTANT' => [], 'HOUR_PRESIDENT' => [], 'MEMBER_OF_THE_BOARD' => [], 'MEMBER_OF_BOARD_OF_HONOR' => [], 'ACTIVE_COOPTED_BOARD_MEMBER' => [], 'TREASURER' => [], 'TREASURER_ASSISTANT' => [], 'SECRETARY' => [], 'ASSISTANT_SECRETARY' => [], 'ACTIVE_MEMBER_OF_THE_CA' => [], 'HONORARY_MEMBER' => [], 'YOUTH_REPRESENTATIVE' => [] ]; // Put members into their categorie(s) foreach ($members as $member) { if (array_key_exists($member->getMission(), $membersByMission)) { array_push($membersByMission[$member->getMission()], $member); } } // Remove empty sections $membersByMission = array_filter($membersByMission); $variables = [$as => $membersByMission]; return $this->renderChildrenWithVariables($variables); } /** * @param \Opentalent\OtTemplating\Domain\Repository\MemberRepository $memberRepository */ public function injectMemberRepository(MemberRepository $memberRepository) { $this->memberRepository = $memberRepository; } }