initfest/schedule/load.php

75 lines
1.6 KiB
PHP
Raw Normal View History

<?php
require __DIR__ . DIRECTORY_SEPARATOR . 'class.SmartCurl.php';
$base_url = 'https://cfp.openfest.org/api/conferences/2/';
$filenames = [
'events' => 'events.json',
'speakers' => 'speakers.json',
'tracks' => 'tracks.json',
'event_types' => 'event_types.json',
'halls' => 'halls.json',
'slots' => 'slots.json',
];
2016-10-16 21:13:25 +03:00
if (empty($allowedhallids)) {
$allowedhallids = array(6, 7, 8);
}
function compareKeys($a, $b, $key) {
$valA = &$a[$key];
$valB = &$b[$key];
return ($valA < $valB) ? -1 : (($valA > $valB) ? 1 : 0);
}
$data = [];
foreach ($filenames as $name => $filename) {
$curl = new SmartCurl($base_url);
$json = $curl->getUrl($filename);
if ($json === false) {
echo 'get failed: ', $filename, PHP_EOL;
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');
});
2016-10-16 21:13:25 +03:00
$data['halls'] = array_filter($data['halls'], function($key) use ($allowedhallids) {
return in_array($key, $allowedhallids);
}, ARRAY_FILTER_USE_KEY);
return $data;