diff --git a/api/app/Http/Controllers/NewsController.php b/api/app/Http/Controllers/NewsController.php index 0cb947b..202c993 100644 --- a/api/app/Http/Controllers/NewsController.php +++ b/api/app/Http/Controllers/NewsController.php @@ -4,9 +4,6 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -error_reporting(E_ALL); -ini_set('display_errors', true); - class NewsController extends Controller { private static $NEWS_CATEGORY = 1; @@ -88,26 +85,41 @@ QUERY; /** * Populaire berichten ophalen */ - public function popular(Request $request) { + public function popularNews(Request $request) { + return $this->popularInCategory($request, self::$NEWS_CATEGORY); + } + + public function popularCalendar(Request $request) { + return $this->popularInCategory($request, self::$CALENDAR_CATEGORY); + } + + protected function popularInCategory(Request $request, $category) { $count = (int)$request->get('aantal', 5); $recent = app('db')->select(<< DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 DAY) - GROUP BY `item_id` - ORDER BY `count` DESC + SELECT `news`.`id`, COUNT(DISTINCT pagestats.visitor_ip) AS visitors + FROM news + INNER JOIN pagestats ON pagestats.type = :type AND pagestats.item_id = news.id + INNER JOIN `news_target_content` AS `content` ON `content`.`news` = `news`.`id` + WHERE `news`.`startdt` >= DATE_SUB(CURRENT_TIMESTAMP, INTERVAL :interval DAY) + AND `news`.`category` = :category AND `content`.`target` = 1 AND `news`.`active` = 1 AND `content`.`active` = 1 + GROUP BY news.id ORDER BY visitors DESC LIMIT 0, :count QUERY , [ + 'type' => $category == self::$NEWS_CATEGORY ? 'nieuws' + : ($category == self::$CALENDAR_CATEGORY ? 'agenda' + : ( "" ) ), + 'interval' => $category == self::$NEWS_CATEGORY ? 60 + : ($category == self::$CALENDAR_CATEGORY ? 0 + : 60 ), + 'category' => $category, 'count' => $count ]); -return response()->json($recent); - $result = array(); foreach($recent as $item) { - $newsItem = app('db')->select(self::$BASE_SQL . ' AND `news`.`id` = :newsId', ['newsId' => $item->item_id])[0]; + $newsItem = app('db')->select(self::$BASE_SQL . ' AND `news`.`id` = :newsId', ['category' => $category, 'newsId' => $item->id])[0]; $pictures = app('db')->select(self::$LOAD_IMAGES, ['newsId' => $newsItem->id]); $result[] = new \Model\NewsItem($newsItem, $pictures); } diff --git a/api/routes/web.php b/api/routes/web.php index 34d4024..b53feb9 100644 --- a/api/routes/web.php +++ b/api/routes/web.php @@ -16,12 +16,13 @@ $app->get('/', function () use ($app) { }); $app->get('nieuws/overzicht', 'NewsController@newslist' ); -$app->get('nieuws/populair', 'NewsController@popular' ); +$app->get('nieuws/populair', 'NewsController@popularNews' ); $app->get('nieuws/bericht/{id:\d+}', 'NewsController@newsitem' ); $app->get('nieuws/regionieuws', 'PodcastController@latestNews' ); $app->get('agenda/overzicht[/week]', 'NewsController@calendarlist' ); $app->get('agenda/item/{id:\d+}', 'NewsController@calendaritem' ); +$app->get('agenda/populair', 'NewsController@popularCalendar' ); $app->get('podcast/overzicht', 'PodcastController@overview' ); $app->get('podcast/details/{id:\d+}', 'PodcastController@details' );