diff --git a/api/app/Http/Controllers/NewsController.php b/api/app/Http/Controllers/NewsController.php index 35378e6..685c061 100644 --- a/api/app/Http/Controllers/NewsController.php +++ b/api/app/Http/Controllers/NewsController.php @@ -103,13 +103,19 @@ QUERY; public function retrieveNewsItems($page, $count, $filter, $params) { $filterSql = ""; - $params = ['target' => self::$WEBSITE_TARGET, 'category' => self::$NEWS_CATEGORY, 'secondarycategory' => self::$EXTERNAL_NEWS_CATEGORY]; - if($filter) { - foreach($filter as $field => $value) { - $paramName = preg_replace('/[^A-Za-z0-9]/', '', $field); - $filterSql .= " AND $field = :$paramName"; - $params[$paramName] = $value; - } + $params['target'] = self::$WEBSITE_TARGET; + $params['category'] = self::$NEWS_CATEGORY; + $params['secondarycategory'] = self::$EXTERNAL_NEWS_CATEGORY; + if($filter) { + if(is_array($filter)) { + 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; @@ -397,6 +403,64 @@ QUERY 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 .= '