format('Y-m-d') : (new \DateTime("-2 day"))->format('Y-m-d'); $end = $date ? (new \DateTime($date))->modify('+1 day')->format('Y-m-d') : (new \DateTime("+3 day"))->format('Y-m-d'); $apiResult = $this->API('programma/schema/periode/' . $start . '/' . $end); $schedule = []; foreach($apiResult->schedule as $program) { $schedule[self::JsonToDateTime($program->start)->format('Ymd')][] = [ 'starttime' => self::JsonToDateTime($program->start), 'endtime' => self::JsonToDateTime($program->end), 'shift' => 0, 'program' => new \Model\Program($program->program) ]; } if ($date) { $days = [ 'custom' => (new \DateTime($date))->format('Ymd'), ]; } else { $days = [ 'day_before_yesterday' => (new \DateTime("-2 day"))->format('Ymd'), 'yesterday' => (new \DateTime("yesterday"))->format('Ymd'), 'today' => (new \DateTime("now"))->format('Ymd'), 'tomorrow' => (new \DateTime("+1 day"))->format('Ymd'), 'day_after_tomorrow' => (new \DateTime("+2 day"))->format('Ymd'), 'custom' => (new \DateTime($date))->format('Ymd'), ]; } return view($request->ajax() ? 'partial/radioscheduleweek' : 'radioschedule', ['start' => $start, 'end' => $end, 'schedule' => $schedule, 'shift' => 0, 'days' => $days, 'date' => $date]); } public function onair() { $data = $this->API('programma/schema/onair'); return response()->json($data); } public function program($id) { $apiResult = $this->API('programma/details/' . (int)$id); if($apiResult == null) { return abort(404); } return view('radioprogram', ['program' => new \Model\Program($apiResult)]); } public function podcast(Request $request, $id, $title = '') { if($this->checkAPI('podcast/details/' . (int)$id) != "200"){ return view('podcastitem', array_merge($this->getSidebareData(), ['title' => $title, 'podcast' => null, 'metadata' => null, 'related' => [], 'searchURL' => 'gemist/zoeken', 'isPodcast' => false])); } parent::registerView($request, 'podcast', $id); $apiResult = $this->API('podcast/details/' . (int)$id); $podcast = new \Model\Podcast($apiResult); $page = (int)$request->get('pagina', 1); $apiResult = $this->API('podcast/overzicht?pagina=' . (int)max(1, $page) . '&aantal=6'); $podcasts = []; foreach($apiResult->podcasts as $_podcast) { $podcasts[] = new \Model\Podcast($_podcast); } return view($request->ajax() ? 'partial/podcastitems' : 'podcastitem', ['title' => $title, 'podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => false]); } public function podcasts(Request $request, $programma = null) { $action = 'overzicht'; $viewData = []; if((int)$programma > 0) { $action = 'programma/' . (int)$programma; $viewData['program'] = new \Model\Program($this->API('programma/details/' . (int)$programma)); } return $this->getPodcastList($request, $action, array_merge($this->getSidebareData(), $viewData)); } public function searchpodcast(Request $request, $query) { return $this->getPodcastList($request, 'zoeken/' . $query)->with('query', urldecode($query)); } public function terugluisteren(Request $request) { $programs = []; $now = new \DateTimeImmutable('2 minutes ago'); $page = (int)$request->get('pagina', 1); $apiResult = $this->API('programma/schema/recent?pagina=' . (int)max(1, $page) . '&aantal=12'); foreach($apiResult->schedule as $item) { if(!$item->program->nonstop && !$item->program->rerun) { $item->start = self::JsonToDateTime($item->start); $item->end = self::JsonToDateTime($item->end); $item->current = $item->end >= $now; $item->program = new \Model\Program($item->program); $programs[] = $item; } } return view($request->ajax() ? 'partial/programitems' : 'programlist', ['programs' => array_reverse($programs), 'isPodcast' => false]); } private function getPodcastList(Request $request, $action, $viewData = []) { $page = (int)$request->get('pagina', 1); $apiResult = $this->API('podcast/' . $action . '?pagina=' . (int)max(1, $page) . '&aantal=12'); $podcasts = []; foreach($apiResult->podcasts as $podcast) { $podcasts[] = new \Model\Podcast($podcast); } return view($request->ajax() ? 'partial/podcastitems' : 'podcastlist', array_merge($viewData, ['id' => 'items-podcasts', 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => false])); } }