$valB) ? 1 : 0); } function loadData($config) { $filenames = [ 'events' => 'events.json', 'speakers' => 'speakers.json', 'tracks' => 'tracks.json', 'event_types' => 'event_types.json', 'halls' => 'halls.json', 'slots' => 'slots.json', ]; $data = []; $curl = new SmartCurl($config['cfp_url'] . '/api/conferences/'); foreach ($filenames as $name => $filename) { $json = $curl->getUrl($config['conferenceId'] . '/' . $filename); if ($json === false) { #echo 'get failed: ', $filename, PHP_EOL; return false; exit; } $decoded = json_decode($json, true); if ($decoded === false) { echo 'decode failed: ', $filename, PHP_EOL; exit; } $add = true; switch ($name) { case 'halls': $decoded = array_map(function($el) { return $el['name']; }, $decoded); break; case 'slots': $decoded = array_map(function($el) { foreach (['starts_at', 'ends_at'] as $key) { $el[$key] = strtotime($el[$key]); } return $el; }, $decoded); break; } $data[$name] = $decoded; } uasort($data['slots'], function($a, $b) { return compareKeys($a, $b, 'starts_at') ?: compareKeys($a, $b, 'hall_id'); }); return $data; }