setTimestamp($timestamp); return $result; } public function show(Request $request, $id) { parent::registerView($request, 'nieuws', $id); $preview = ""; if(request()->get('preview', null) != null) { $preview = "?preview=" . request()->get('preview'); } $apiResult = $this->API('nieuws/bericht/' . $id . $preview); $newsItem = new \Model\NewsItem($apiResult->news); switch ($apiResult->version) { case 1: if (!$newsItem->content) return redirect('//nhnieuws.nl/gooi'); case 2: if(isset($apiResult->source->article)) { $source = $apiResult->source->article; $newsItem->published = self::TimestampToDateTime($source->created); $newsItem->edited = self::TimestampToDateTime($source->updated); $newsItem->author = $source->author; $newsItem->images = null; // Images will be embedded $newsItem->video = null; // Videos will be embedded $newsItem->content = $source->blocks; } elseif(isset($apiResult->source->blocks)) { $newsItem->content = $apiResult->source->blocks; } return view('newsitem', array_merge($this->getSidebareData(), ['type' => $apiResult->type, 'news' => $newsItem, 'metadata' => $newsItem->metadata, 'searchURL' => 'nieuws/zoeken'])); } } public function overview(Request $request) { return $this->listNews($request, 'overzicht', null, 'items-more-news', 10); } public function more(Request $request) { $page = (int)$request->get('pagina', 1); $id = $request->get('id', ''); $apiResult = $this->API('nieuws/overzicht?pagina=' . (int)max(1, $page) . '&aantal=5'); $news = []; foreach ($apiResult->news as $newsItem) { $news[] = new \Model\NewsItem($newsItem); } return view('partial/newslist_small', ['id' => $id, 'news' => $news]); } public function populair(Request $request) { $page = (int)$request->get('pagina', 1); $id = $request->get('id', ''); $populair = []; $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5'); foreach ($apiResult->news as $_newsItem) { $populair[] = new \Model\NewsItem($_newsItem); } return view('partial/newslist_small', ['id' => $id, 'news' => $populair]); } public function taglist(Request $request, $tag) { return $this->listNews($request, 'tag/' . $tag, ucfirst($tag)); } public function regionlist(Request $request, $region) { return $this->listNews($request, 'tag/' . $region, ucfirst($region)); } public function themelist(Request $request, $theme) { return $this->listNews($request, 'tag/' . $theme, ucfirst($theme)); } public function search(Request $request, $query) { return $this->listNews($request, 'zoeken/' . $query, 'Zoekresultaat')->with('query', urldecode($query)); } public function activeblog() { $apiResult = $this->API('blog/overzicht'); if (count($apiResult)) { $blog = new \Model\Blog($apiResult[0]); if ($blog->is_active) { return redirect($blog->url); } } return abort(404); } public function blog(Request $request, $id) { parent::registerView($request, 'blog', $id); $page = (int)$request->get('pagina', 1); $hasNext = true; while ($page > 0) { $apiResult = $this->API('blog/overzicht/' . (int)$id . '?pagina=' . (int)max(1, $page)); $blog = new \Model\Blog($apiResult->blog); $items = []; foreach ($apiResult->items as $blogItem) { $items[] = new \Model\NewsItem($blogItem); } if (count($items) || ($page == 1)) { return view('blog', ['blog' => $blog, 'pagina' => $page, 'items' => $items, 'hasNext' => $hasNext && count($items) == 15]); } $hasNext = false; --$page; } return abort(404); } private function listNews(Request $request, $url, $title = null, $id = 'items', $total = null) { if ($request->ajax()) { $total = 5; } $page = (int)$request->get('pagina', 1); if ($url == 'overzicht' && $request->get('dateStart', null) && $request->get('dateEnd', null)) { $url = 'datum/' . $request->get('dateStart', null) . '/' . $request->get('dateEnd', null); } $apiResult = $this->API('nieuws/' . $url . '?pagina=' . (int)max(1, $page) . ($total ? '&aantal=' . $total : '')); $news = []; foreach ($apiResult->news as $newsItem) { $news[] = new \Model\NewsItem($newsItem); } $populair = []; if ($title == null) { $total = 5; } $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . ($total ? '&aantal=' . $total : '')); foreach ($apiResult->news as $newsItem) { $populair[] = new \Model\NewsItem($newsItem); } $podcast = null; $podcasts = []; if ($title == null) { $apiResult = $this->API('podcast/overzicht?aantal=3'); $podcast = new \Model\Podcast($apiResult->podcasts[0]); foreach ($apiResult->podcasts as $_podcast) { $podcasts[] = new \Model\Podcast($_podcast); } } $newsItems = []; $apiResult = $this->API('nieuws/overzicht?aantal=5'); foreach ($apiResult->news as $_newsItem) { $newsItems[] = new \Model\NewsItem($_newsItem); } return view($request->ajax() ? ($title == null ? 'partial/home_newslist_small' : 'partial/newslist_small') : ($title == null ? 'news' : 'newslist'), ['populair' => $populair, 'newsItems' => $newsItems, 'podcasts' => $podcasts, 'podcast' => $podcast, 'id' => $id, 'title' => $title, 'news' => $news, 'searchURL' => 'nieuws/zoeken']); } public function popular() { $apiResult = $this->API('nieuws/populair'); $news = []; foreach ($apiResult->news as $newsItem) { $news[] = new \Model\NewsItem($newsItem); } return view('popularnews', ['news' => $news]); } public function regionieuws() { $data = $this->API('nieuws/regionieuws.json'); return view('listen', [ 'source' => $this->API_URL . 'nieuws/regionieuws.mp3', 'title' => 'Regionieuws', 'content' => 'het laatste nieuws uit de regio', 'isStream' => false, 'canDownload' => true, 'lengte' => $data->length * 0.25, 'waveform' => $data ]); } }