Change logo Add luister and kijk icons Tip de streekredactie points to whatsapp 088-8505651 Add s to Podcast Removed waterschapsverkiezingen from menu Podcast autoplay disabled Remove Gooische Courant and NH Nieuws Changed NH Gooi to Over NH Gooi Added padding and border-radios to homepage posts Changed header 12px to 14px Add now and next programs to homepage Add new button to programs Changed contact text Add fallback image to program guide Make items height equally in program guide
192 lines
6.3 KiB
PHP
192 lines
6.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use \Model\NewsItem;
|
|
|
|
class NewsController extends Controller
|
|
{
|
|
private static function TimestampToDateTime($timestamp)
|
|
{
|
|
$result = new \DateTime;
|
|
$result->setTimestamp($timestamp);
|
|
return $result;
|
|
}
|
|
|
|
public function show(Request $request, $id)
|
|
{
|
|
parent::registerView($request, 'nieuws', $id);
|
|
$apiResult = $this->API('nieuws/bericht/' . $id);
|
|
$newsItem = new \Model\NewsItem($apiResult->news);
|
|
|
|
switch ($apiResult->version) {
|
|
case 1:
|
|
if (!$newsItem->content) return redirect('//nhnieuws.nl/gooi');
|
|
return view('newsitem', ['news' => $newsItem, 'metadata' => $newsItem->metadata]);
|
|
break;
|
|
|
|
case 2:
|
|
$source = $apiResult->source;
|
|
$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;
|
|
|
|
|
|
|
|
return view('newsitem', array_merge($this->getSidebareData(), ['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 as $_newsItem) {
|
|
$populair[] = new \Model\NewsItem($_newsItem);
|
|
}
|
|
|
|
return view('partial/newslist_small', ['id' => $id, 'news' => $populair]);
|
|
}
|
|
|
|
public function regionlist(Request $request, $region)
|
|
{
|
|
return $this->listNews($request, 'regio/' . $region, ucfirst($region));
|
|
}
|
|
|
|
public function themelist(Request $request, $theme)
|
|
{
|
|
return $this->listNews($request, 'thema/' . $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);
|
|
$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 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 as $newsItem) {
|
|
$news[] = new \Model\NewsItem($newsItem);
|
|
}
|
|
|
|
return view('popularnews', ['news' => $news]);
|
|
}
|
|
|
|
public function regionieuws()
|
|
{
|
|
return view('listen', [
|
|
'source' => $this->API_URL . 'nieuws/regionieuws',
|
|
'title' => 'Regionieuws',
|
|
'content' => 'het laatste nieuws uit de regio',
|
|
'isStream' => false,
|
|
'canDownload' => true]);
|
|
}
|
|
}
|