API endpoint voor NLPO-dashboard
This commit is contained in:
@@ -103,13 +103,19 @@ QUERY;
|
|||||||
|
|
||||||
public function retrieveNewsItems($page, $count, $filter, $params) {
|
public function retrieveNewsItems($page, $count, $filter, $params) {
|
||||||
$filterSql = "";
|
$filterSql = "";
|
||||||
$params = ['target' => self::$WEBSITE_TARGET, 'category' => self::$NEWS_CATEGORY, 'secondarycategory' => self::$EXTERNAL_NEWS_CATEGORY];
|
$params['target'] = self::$WEBSITE_TARGET;
|
||||||
if($filter) {
|
$params['category'] = self::$NEWS_CATEGORY;
|
||||||
foreach($filter as $field => $value) {
|
$params['secondarycategory'] = self::$EXTERNAL_NEWS_CATEGORY;
|
||||||
$paramName = preg_replace('/[^A-Za-z0-9]/', '', $field);
|
if($filter) {
|
||||||
$filterSql .= " AND $field = :$paramName";
|
if(is_array($filter)) {
|
||||||
$params[$paramName] = $value;
|
foreach($filter as $field => $value) {
|
||||||
}
|
$paramName = preg_replace('/[^A-Za-z0-9]/', '', $field);
|
||||||
|
$filterSql .= " AND $field = :$paramName";
|
||||||
|
$params[$paramName] = $value;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$filterSql .= ' AND ' . $filter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$start = ($page - 1) * $count;
|
$start = ($page - 1) * $count;
|
||||||
@@ -397,6 +403,64 @@ QUERY
|
|||||||
return $item ? response()->json(new \Model\CalendarEvent($item['data'], $item['images'], $item['podcast'])) : abort(404);
|
return $item ? response()->json(new \Model\CalendarEvent($item['data'], $item['images'], $item['podcast'])) : abort(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overzicht voor het NLPO-dashboard
|
||||||
|
*/
|
||||||
|
public function nlpo(Request $request) {
|
||||||
|
$from = $request->get('from');
|
||||||
|
if(!$from) { $from = date('Y-m-d', strtotime('-7 days')); }
|
||||||
|
$to = $request->get('to');
|
||||||
|
if(!$to) { $to = date('Y-m-d'); }
|
||||||
|
|
||||||
|
$filter = 'DATE(`news`.`creationdt`) >= :from AND DATE(`news`.`creationdt`) <= :to';
|
||||||
|
$items = $this->retrieveNewsItems(1, 10000,
|
||||||
|
$filter,
|
||||||
|
['from' => $from, 'to' => $to]);
|
||||||
|
$result = [];
|
||||||
|
foreach($items as $item) {
|
||||||
|
$tags = [];
|
||||||
|
if($item->theme) $tags[] = $item->theme->title;
|
||||||
|
if($item->region) $tags[] = $item->region->title;
|
||||||
|
|
||||||
|
$text = $item->content;
|
||||||
|
$source = app('db')->select('SELECT content FROM `news_target_content` WHERE news = :news AND target = 0 AND published = 1 AND active = 1',
|
||||||
|
['news' => $item->id]);
|
||||||
|
if(count($source)) {
|
||||||
|
$text = $source[0]->content;
|
||||||
|
$source_data = json_decode($source[0]->content);
|
||||||
|
if($source_data) {
|
||||||
|
$text = "";
|
||||||
|
foreach($source_data->article->blocks as $block) {
|
||||||
|
if($block->type == 'authors') {
|
||||||
|
$authors = [];
|
||||||
|
foreach($block->authors as $author) {
|
||||||
|
$authors[] = $author->name;
|
||||||
|
}
|
||||||
|
$item->author = implode(', ', $authors);
|
||||||
|
} else if(isset($block->text)) {
|
||||||
|
$text .= '<div class="' . $block->type . '">' . $block->text . '</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$text = $source[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result[] = [
|
||||||
|
'title' => $item->title,
|
||||||
|
'url' => 'https://nhgooi.nl/' . $item->url,
|
||||||
|
'text' => $text,
|
||||||
|
'date' => $item->published->format('Y-m-d\TH:i:s.z\Z'),
|
||||||
|
'art_id' => $item->id,
|
||||||
|
'author' => $item->author,
|
||||||
|
'excerpt' => strip_tags($item->content),
|
||||||
|
'categories' => $tags,
|
||||||
|
'tags' => $tags,
|
||||||
|
'comment_count' => 0
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return response()->json($result);
|
||||||
|
}
|
||||||
|
|
||||||
private function itemFromCategory($category, $id) {
|
private function itemFromCategory($category, $id) {
|
||||||
$params = ['id' => (int)$id, 'target' => self::$WEBSITE_TARGET];
|
$params = ['id' => (int)$id, 'target' => self::$WEBSITE_TARGET];
|
||||||
if(is_array($category)) {
|
if(is_array($category)) {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ $app->get( 'menu/special', 'MenuController@special' );
|
|||||||
|
|
||||||
$app->get('nieuws/overzicht', 'NewsController@newslist' );
|
$app->get('nieuws/overzicht', 'NewsController@newslist' );
|
||||||
$app->get('nieuws/kabelkrant', 'NewsController@tvlist' );
|
$app->get('nieuws/kabelkrant', 'NewsController@tvlist' );
|
||||||
|
$app->get('nieuws/nlpo', 'NewsController@nlpo' );
|
||||||
$app->get('nieuws/regio/{region:[a-z0-9-]+}', 'NewsController@regionlist' );
|
$app->get('nieuws/regio/{region:[a-z0-9-]+}', 'NewsController@regionlist' );
|
||||||
$app->get('nieuws/thema/{theme:[a-z0-9-]+}', 'NewsController@themelist' );
|
$app->get('nieuws/thema/{theme:[a-z0-9-]+}', 'NewsController@themelist' );
|
||||||
$app->get('nieuws/zoeken/{query}', 'NewsController@findnews' );
|
$app->get('nieuws/zoeken/{query}', 'NewsController@findnews' );
|
||||||
|
|||||||
Reference in New Issue
Block a user