Small changes from dev

This commit is contained in:
2020-02-28 11:14:18 +01:00
parent 5bdd1e1e67
commit a6e78ef9e3
2 changed files with 28 additions and 24 deletions

View File

@@ -1,16 +1,13 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class NewsController extends Controller class NewsController extends Controller
{ {
private $EXTERNAL_NEWS_API;
private static $NEWS_CATEGORY = 1; private static $NEWS_CATEGORY = 1;
private static $CALENDAR_CATEGORY = 42; private static $CALENDAR_CATEGORY = 42;
private static $EXTERNAL_NEWS_CATEGORY = 44; private static $EXTERNAL_NEWS_CATEGORY = 0;
private static $BLOG_CATEGORY = 45; private static $BLOG_CATEGORY = 45;
private static $BASE_SQL = <<<QUERY private static $BASE_SQL = <<<QUERY
@@ -38,7 +35,20 @@ QUERY;
*/ */
public function __construct() public function __construct()
{ {
$this->EXTERNAL_NEWS_API = env('EXTERNAL_NEWS_API', '//'); }
/**
* RSS-feed van alle podcasts
*/
public function rss(Request $request) {
$page = (int)$request->get('page', 1);
if($page <= 0) {
return abort(400);
}
$podcasts = $this->retrieveNewsItems($page, $count = 20, $filter = null, $params = []);
$view = view('rss.news')->with('news', $podcasts)->with('url', $request->url())->with('page', $page);
return response($view)->header('Content-Type', 'application/xml');
} }
/** /**
@@ -51,6 +61,11 @@ QUERY;
return abort(400); return abort(400);
} }
$result = $this->retrieveNewsItems($page, $count, $filter, []);
return response()->json(['page' => $page, 'count' => $count, 'news' => $result]);
}
public function retrieveNewsItems($page, $count, $filter, $params) {
$filterSql = ""; $filterSql = "";
$params = ['category' => self::$NEWS_CATEGORY, 'secondarycategory' => self::$EXTERNAL_NEWS_CATEGORY]; $params = ['category' => self::$NEWS_CATEGORY, 'secondarycategory' => self::$EXTERNAL_NEWS_CATEGORY];
if($filter) { if($filter) {
@@ -75,7 +90,7 @@ QUERY;
$result[] = new \Model\NewsItem($newsItem, $pictures); $result[] = new \Model\NewsItem($newsItem, $pictures);
} }
return response()->json(['page' => $page, 'count' => $count, 'news' => $result]); return $result;
} }
public function regionlist(Request $request, $region) { public function regionlist(Request $request, $region) {
@@ -88,24 +103,19 @@ QUERY;
public function findnews(Request $request, $query) { public function findnews(Request $request, $query) {
$page = (int)$request->get('pagina', 1); $page = (int)$request->get('pagina', 1);
$count = (int)$request->get('aantal', 15);
if($page <= 0) { if($page <= 0) {
return abort(400); return abort(400);
} }
$start = ($page - 1) * $count;
$query = strip_tags(urldecode($query)); $query = strip_tags(urldecode($query));
$searchRange = [ $newsItems = app('db')->select($s=self::$BASE_SQL
(new \DateTimeImmutable())->setDate(date('Y') + 1 - $page, 1, 1), . ' AND MATCH(`content`.`title`, `content`.`content`) AGAINST(:query IN NATURAL LANGUAGE MODE)'
(new \DateTimeImmutable())->setDate(date('Y') + 2 - $page, 1, 1)];
$newsItems = app('db')->select(self::$BASE_SQL
. ' AND `news`.`creationdt` >= :startRange AND `news`.`creationdt` <= :endRange'
. ' AND MATCH(`content`.`title`, `content`.`content`) AGAINST(:query IN BOOLEAN MODE)'
. ' ORDER BY COALESCE(`news`.`pubupdatedt`, `news`.`creationdt`) DESC' . ' ORDER BY COALESCE(`news`.`pubupdatedt`, `news`.`creationdt`) DESC'
. ' LIMIT 0, 20', [ . ' LIMIT ' . $start . ', ' . $count, [
'category' => self::$NEWS_CATEGORY, 'category' => self::$NEWS_CATEGORY,
'secondarycategory' => self::$EXTERNAL_NEWS_CATEGORY, 'secondarycategory' => self::$EXTERNAL_NEWS_CATEGORY,
'startRange' => $searchRange[0]->format('Y-m-d'),
'endRange' => $searchRange[1]->format('Y-m-d'),
'query' => $query 'query' => $query
]); ]);
@@ -243,13 +253,6 @@ QUERY
$data = array('version' => 1, $data = array('version' => 1,
'news' => new \Model\NewsItem($item['data'], $item['images'], $item['podcast'])); 'news' => new \Model\NewsItem($item['data'], $item['images'], $item['podcast']));
if($externalId = (int)$item['data']->external_id) {
$externalSource = json_decode(file_get_contents($this->EXTERNAL_NEWS_API . 'news?source=api&externalid=' . (int)$externalId));
if($externalSource) {
$data['version'] = 2;
$data['source'] = $externalSource->news;
}
}
return response()->json($data); return response()->json($data);
} }

View File

@@ -17,6 +17,7 @@ $app->get('/', function () use ($app) {
}); });
$app->get( 'rss/podcasts', 'PodcastController@rss' ); $app->get( 'rss/podcasts', 'PodcastController@rss' );
$app->get( 'rss/nieuws', 'NewsController@rss' );
$app->get( 'menu/special', 'MenuController@special' ); $app->get( 'menu/special', 'MenuController@special' );