sub(new DateInterval('P'.$months.'D')); stdout('Skipping Conferences before %s', $conferencesAfter->format('Y-m-d')); $conferences = array_filter($conferences, function($conference) use ($conferencesAfter) { if($conference->isOpen()) { stdout( ' %s: %s', '---open---', $conference->getSlug() ); return true; } $isBefore = $conference->endsAt() < $conferencesAfter; if($isBefore) { stdout( ' %s: %s', $conference->endsAt()->format('Y-m-d'), $conference->getSlug() ); } return !$isBefore; }); } stdout(''); foreach ($conferences as $conference) { stdout('== %s ==', $conference->getSlug()); $relive = $conference->getRelive(); if($relive->isEnabled()) { download( 'relive-json', $conference, $relive->getJsonUrl(), $relive->getJsonCache() ); } $schedule = $conference->getSchedule(); if($schedule->isEnabled()) { download( 'schedule-xml', $conference, $schedule->getScheduleUrl(), $schedule->getScheduleCache() ); } foreach($conference->getExtraFiles() as $filename => $url) { download( 'extra-file', $conference, $url, get_file_cache($conference, $filename) ); } } function get_file_cache($conference, $filename) { return joinpath([$GLOBALS['BASEDIR'], 'configs/conferences', $conference->getSlug(), $filename]); } function download($what, $conference, $url, $cache) { $info = parse_url($url); if(!isset($info['scheme']) || !isset($info['host'])) { stderr( ' !! %s url for conference %s does look like an old-style path: "%s". please update to a full http/https url', $what, $conference->getSlug(), $url ); return false; } stdout( ' downloading %s from %s to %s', $what, $url, $cache ); if(!do_download($url, $cache)) { stderr( ' !! download %s for conference %s from %s to %s failed miserably !!', $what, $conference->getSlug(), $url, $cache ); } return true; } function do_download($url, $cache) { return true; }