/** * @param $meetupEvents * @param $speakers * @param $venues */ public function mergeEvents(&$meetupEvents, $speakers, $venues) { // key it on meetup ID $localEvents = array_reduce($this->eventsRepository->getAll(), function ($carry, $item) { $carry[$item->meetup_id] = $item; return $carry; }); if (empty($localEvents)) { return; } // Use only events which exist on the DB $meetupEvents = array_intersect_key($meetupEvents, $localEvents); foreach ($localEvents as $event) { if (array_key_exists($event->meetup_id, $meetupEvents)) { // check for speaker if (array_key_exists($event->speaker_id, $speakers)) { /** @var Speaker $speaker */ $speaker = $speakers[$event->speaker_id]; $meetupEvents[$event->meetup_id]['speaker'] = $speaker->getFirstName() . ' ' . $speaker->getLastName() . ' (' . $speaker->getTwitter() . ')'; } else { $meetupEvents[$event->meetup_id]['speaker'] = '-'; } $meetupEvents[$event->meetup_id]['joindin_url'] = $event->joindin_url ?? '-'; } } }