Populair nieuws en agenda redelijk vlot werkend
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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' );
|
||||
|
||||
Reference in New Issue
Block a user