Populair nieuws en agenda redelijk vlot werkend

This commit is contained in:
2017-09-05 03:18:49 +02:00
parent 4392b1c188
commit eb2710a302
2 changed files with 26 additions and 13 deletions

View File

@@ -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(<<<QUERY
SELECT `type`, `item_id`, COUNT(DISTINCT session) AS `count`
FROM pagestats
WHERE `type` = 'nieuws' AND `timestamp` > 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);
}

View File

@@ -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' );