Liveblog - start work

This commit is contained in:
NH Gooi
2026-02-08 20:43:55 +01:00
parent 733e18531f
commit b78379f268
7 changed files with 375 additions and 353 deletions

View File

@@ -9,22 +9,25 @@ class HomeController extends Controller
{
public function show(Request $request)
{
$page = (int)$request->get('pagina', 1);
$apiResult = $this->API('nieuws/overzicht?pagina=' . (int)max(1, $page) . '&aantal=10');
$page = (int) $request->get('pagina', 1);
$apiResult = $this->API('nieuws/overzicht?pagina=' . (int) max(1, $page) . '&aantal=10');
$news = [];
foreach ($apiResult->news as $newsItem) {
$news[] = new \Model\NewsItem($newsItem);
}
}
$apiResult = $this->API('nieuws/liveblogs');
$liveblogs = $apiResult->liveblogs;
$populair = [];
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
$apiResult = $this->API('nieuws/populair?pagina=' . (int) max(1, $page) . '&aantal=5');
foreach ($apiResult->news as $newsItem) {
$populair[] = new \Model\NewsItem($newsItem);
}
$apiResult = $this->API('podcast/overzicht?aantal=15');
$index = array_rand($apiResult->podcasts);
$apiResult = $this->API('podcast/overzicht?aantal=15');
$index = array_rand($apiResult->podcasts);
$podcast = new \Model\Podcast($apiResult->podcasts[$index]);
return view('home', ['populair' => $populair, 'podcast' => $podcast, 'title' => 'Home', 'news' => $news, 'searchURL' => 'nieuws/zoeken']);
return view('home', ['populair' => $populair, 'podcast' => $podcast, 'title' => 'Home', 'news' => $news, 'liveblogs' => $liveblogs, 'searchURL' => 'nieuws/zoeken']);
}
}

View File

@@ -18,7 +18,7 @@ class NewsController extends Controller
{
parent::registerView($request, 'nieuws', $id);
$preview = "";
if(request()->get('preview', null) != null) {
if (request()->get('preview', null) != null) {
$preview = "?preview=" . request()->get('preview');
}
$apiResult = $this->API('nieuws/bericht/' . $id . $preview);
@@ -26,21 +26,22 @@ class NewsController extends Controller
switch ($apiResult->version) {
case 1:
if (!$newsItem->content) return redirect('//nhnieuws.nl/gooi');
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']));
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']));
}
}
@@ -51,9 +52,9 @@ class NewsController extends Controller
public function more(Request $request)
{
$page = (int)$request->get('pagina', 1);
$page = (int) $request->get('pagina', 1);
$id = $request->get('id', '');
$apiResult = $this->API('nieuws/overzicht?pagina=' . (int)max(1, $page) . '&aantal=5');
$apiResult = $this->API('nieuws/overzicht?pagina=' . (int) max(1, $page) . '&aantal=5');
$news = [];
foreach ($apiResult->news as $newsItem) {
$news[] = new \Model\NewsItem($newsItem);
@@ -64,10 +65,10 @@ class NewsController extends Controller
public function populair(Request $request)
{
$page = (int)$request->get('pagina', 1);
$page = (int) $request->get('pagina', 1);
$id = $request->get('id', '');
$populair = [];
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
$apiResult = $this->API('nieuws/populair?pagina=' . (int) max(1, $page) . '&aantal=5');
foreach ($apiResult->news as $_newsItem) {
$populair[] = new \Model\NewsItem($_newsItem);
}
@@ -109,30 +110,19 @@ class NewsController extends Controller
return abort(404);
}
public function blog(Request $request, $id)
public function liveblog(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;
$blog = $this->API('nieuws/liveblog/' . (int) $id);
foreach( $blog->artikelen as &$item ) {
$item = new \Model\NewsItem( $item );
}
if (count($blog->artikelen)) {
return view('blog', ['blog' => $blog]);
}
return abort(404);
return abort();
}
private function listNews(Request $request, $url, $title = null, $id = 'items', $total = null)
@@ -140,11 +130,11 @@ class NewsController extends Controller
if ($request->ajax()) {
$total = 5;
}
$page = (int)$request->get('pagina', 1);
$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 : ''));
$apiResult = $this->API('nieuws/' . $url . '?pagina=' . (int) max(1, $page) . ($total ? '&aantal=' . $total : ''));
$news = [];
foreach ($apiResult->news ?? [] as $newsItem) {
$news[] = new \Model\NewsItem($newsItem);
@@ -154,8 +144,10 @@ class NewsController extends Controller
if ($title == null) {
$total = 5;
}
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1,
$page) . ($total ? '&aantal=' . $total : ''));
$apiResult = $this->API('nieuws/populair?pagina=' . (int) max(
1,
$page
) . ($total ? '&aantal=' . $total : ''));
foreach ($apiResult->news as $newsItem) {
$populair[] = new \Model\NewsItem($newsItem);
}
@@ -192,15 +184,15 @@ class NewsController extends Controller
public function regionieuws()
{
$data = $this->API('nieuws/regionieuws.json');
$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
]);
'canDownload' => true,
'lengte' => $data->length * 0.25,
'waveform' => $data
]);
}
}