FEATURE #1853: move widget areas 'views' into middleware

This commit is contained in:
Michal Kváček
2017-08-10 19:59:40 +02:00
parent c2209538db
commit 6af0c16a9a
8 changed files with 57 additions and 20 deletions
+10 -6
View File
@@ -3,7 +3,6 @@
namespace App\CMS\Helpers;
use App\CMS\Repositories\Widgets\WidgetArea as WidgetAreaRepository;
use App\Models\Widgets\WidgetArea;
use Illuminate\Support\Facades\Cache;
class WidgetAreas
@@ -27,9 +26,6 @@ class WidgetAreas
protected static function loadWidgetArea($uniqueCode)
{
WidgetArea::where('code', $uniqueCode)
->increment('viewed');
$widgets = Cache::remember('widget-area-' . $uniqueCode, setting('widgetCacheLifetime', 5), function () use ($uniqueCode) {
$widgetArea = app(\App\CMS\Repositories\Widgets\WidgetArea::class);
@@ -69,12 +65,20 @@ class WidgetAreas
self::initWidgetAreas();
}
// dd($uniqueCode);
if (!isset(self::$widgetAreas[$uniqueCode])) {
self::loadWidgetArea($uniqueCode);
}
echo isset(self::$widgetAreas[$uniqueCode]) ? self::$widgetAreas[$uniqueCode] : null;
}
/**
* Get list of loaded widgets and areas
*
* @return array
*/
public static function getLoadedWidgets()
{
return ['areas' => array_keys(self::$widgetAreas)];
}
}
+9 -9
View File
@@ -2,8 +2,7 @@
namespace App\Http;
use App\Http\Middleware\TemplatePathInstaller;
use App\Http\Middleware\WidgetInstaller;
use App\Http\Middleware\Web\IncrementWidgetsViews;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode;
@@ -37,12 +36,13 @@ class Kernel extends HttpKernel
'web' => [
CheckForMaintenanceMode::class,
AddQueuedCookiesToResponse::class,
IncrementWidgetsViews::class
],
'admin' => [
Middleware\Authenticate::class,
Middleware\AdminMenuRegistrator::class,
TemplatePathInstaller::class,
WidgetInstaller::class,
Middleware\Admin\Authenticate::class,
Middleware\Admin\AdminMenuRegistrator::class,
Middleware\Admin\TemplatePathInstaller::class,
Middleware\Admin\WidgetInstaller::class,
],
'api' => [
'throttle:60,1',
@@ -54,9 +54,9 @@ class Kernel extends HttpKernel
* @var array
*/
protected $routeMiddleware = [
'auth' => Middleware\Authenticate::class,
'onlyAdmin' => Middleware\RequireAdminRole::class,
'adminMenu' => Middleware\AdminMenuRegistrator::class,
'auth' => Middleware\Admin\Authenticate::class,
'onlyAdmin' => Middleware\Admin\RequireAdminRole::class,
'adminMenu' => Middleware\Admin\AdminMenuRegistrator::class,
'guest' => Middleware\RedirectIfAuthenticated::class,
'throttle' => ThrottleRequests::class,
'localize' => LaravelLocalizationRoutes::class,
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Middleware;
namespace App\Http\Middleware\Admin;
use App\CMS\Handlers\Handler;
use App\CMS\Repositories\Module as ModuleRepository;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Middleware;
namespace App\Http\Middleware\Admin;
use App\Models\User;
use Closure;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Middleware;
namespace App\Http\Middleware\Admin;
use App\Models\User;
use Closure;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Middleware;
namespace App\Http\Middleware\Admin;
use App\CMS\Handlers\Registrators\TemplateRegistrator;
use Closure;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Middleware;
namespace App\Http\Middleware\Admin;
use App\CMS\Handlers\Registrators\WidgetRegistrator;
use Closure;
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Middleware\Web;
use App\CMS\Helpers\WidgetAreas;
use App\Models\Widgets\WidgetArea;
use Closure;
class IncrementWidgetsViews
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
$widgets = WidgetAreas::getLoadedWidgets();
if (!empty($widgets['areas'])) {
WidgetArea::whereIn('code', $widgets['areas'])
->increment('viewed');
}
}
}