Populair nieuws en agenda redelijk vlot werkend
This commit is contained in:
@@ -4,9 +4,6 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
ini_set('display_errors', true);
|
|
||||||
|
|
||||||
class NewsController extends Controller
|
class NewsController extends Controller
|
||||||
{
|
{
|
||||||
private static $NEWS_CATEGORY = 1;
|
private static $NEWS_CATEGORY = 1;
|
||||||
@@ -88,26 +85,41 @@ QUERY;
|
|||||||
/**
|
/**
|
||||||
* Populaire berichten ophalen
|
* 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);
|
$count = (int)$request->get('aantal', 5);
|
||||||
$recent = app('db')->select(<<<QUERY
|
$recent = app('db')->select(<<<QUERY
|
||||||
SELECT `type`, `item_id`, COUNT(DISTINCT session) AS `count`
|
SELECT `news`.`id`, COUNT(DISTINCT pagestats.visitor_ip) AS visitors
|
||||||
FROM pagestats
|
FROM news
|
||||||
WHERE `type` = 'nieuws' AND `timestamp` > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 DAY)
|
INNER JOIN pagestats ON pagestats.type = :type AND pagestats.item_id = news.id
|
||||||
GROUP BY `item_id`
|
INNER JOIN `news_target_content` AS `content` ON `content`.`news` = `news`.`id`
|
||||||
ORDER BY `count` DESC
|
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
|
LIMIT 0, :count
|
||||||
QUERY
|
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
|
'count' => $count
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response()->json($recent);
|
|
||||||
|
|
||||||
$result = array();
|
$result = array();
|
||||||
foreach($recent as $item)
|
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]);
|
$pictures = app('db')->select(self::$LOAD_IMAGES, ['newsId' => $newsItem->id]);
|
||||||
$result[] = new \Model\NewsItem($newsItem, $pictures);
|
$result[] = new \Model\NewsItem($newsItem, $pictures);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,12 +16,13 @@ $app->get('/', function () use ($app) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$app->get('nieuws/overzicht', 'NewsController@newslist' );
|
$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/bericht/{id:\d+}', 'NewsController@newsitem' );
|
||||||
$app->get('nieuws/regionieuws', 'PodcastController@latestNews' );
|
$app->get('nieuws/regionieuws', 'PodcastController@latestNews' );
|
||||||
|
|
||||||
$app->get('agenda/overzicht[/week]', 'NewsController@calendarlist' );
|
$app->get('agenda/overzicht[/week]', 'NewsController@calendarlist' );
|
||||||
$app->get('agenda/item/{id:\d+}', 'NewsController@calendaritem' );
|
$app->get('agenda/item/{id:\d+}', 'NewsController@calendaritem' );
|
||||||
|
$app->get('agenda/populair', 'NewsController@popularCalendar' );
|
||||||
|
|
||||||
$app->get('podcast/overzicht', 'PodcastController@overview' );
|
$app->get('podcast/overzicht', 'PodcastController@overview' );
|
||||||
$app->get('podcast/details/{id:\d+}', 'PodcastController@details' );
|
$app->get('podcast/details/{id:\d+}', 'PodcastController@details' );
|
||||||
|
|||||||
Reference in New Issue
Block a user