settings['organizationId']; // Get members of the structure $members = $this->memberRepository->findByOrganizationId($organizationId); // Sort alphabetically by name usort($members, function($a, $b) {return strcmp($a->getName(), $b->getName());}); // Instruments to display in first place (next will be sorted alphabetically) $stack1 = ['CONDUCTOR' => []]; $stack2 = []; foreach ($members as $member) { // If that Instrument exist in stack1: put it in this one if (array_key_exists($member->getInstrument(), $stack1)) { array_push($stack1[$member->getInstrument()], $member); } else { // Create the new array if needed in stack2, then put the member in it if (!array_key_exists($member->getInstrument(), $stack2)) { $stack2[$member->getInstrument()] = []; } array_push($stack2[$member->getInstrument()], $member); } } // remove empty instruments in stack 1 $stack1 = array_filter($stack1); // sort by instrument stack2 ksort($stack2); $membersByInstrument = array_merge($stack1, $stack2); $this->view->assign('membersByInstrument', $membersByInstrument); } /** @noinspection PhpUnused */ /** * action getCaMembersAction * * @param array $options * @return void * @throws \Exception */ public function getMembersCaAction(array $options = []) { $organizationId = (int) $this->settings['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); $this->view->assign('membersByMission', $membersByMission); } /** * @param MemberRepository $memberRepository */ public function injectMemberRepository(MemberRepository $memberRepository) { $this->memberRepository = $memberRepository; } }