FEATURE #1853: move widget areas 'views' into middleware
This commit is contained in:
@@ -3,7 +3,6 @@
|
|||||||
namespace App\CMS\Helpers;
|
namespace App\CMS\Helpers;
|
||||||
|
|
||||||
use App\CMS\Repositories\Widgets\WidgetArea as WidgetAreaRepository;
|
use App\CMS\Repositories\Widgets\WidgetArea as WidgetAreaRepository;
|
||||||
use App\Models\Widgets\WidgetArea;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class WidgetAreas
|
class WidgetAreas
|
||||||
@@ -27,9 +26,6 @@ class WidgetAreas
|
|||||||
|
|
||||||
protected static function loadWidgetArea($uniqueCode)
|
protected static function loadWidgetArea($uniqueCode)
|
||||||
{
|
{
|
||||||
WidgetArea::where('code', $uniqueCode)
|
|
||||||
->increment('viewed');
|
|
||||||
|
|
||||||
$widgets = Cache::remember('widget-area-' . $uniqueCode, setting('widgetCacheLifetime', 5), function () use ($uniqueCode) {
|
$widgets = Cache::remember('widget-area-' . $uniqueCode, setting('widgetCacheLifetime', 5), function () use ($uniqueCode) {
|
||||||
$widgetArea = app(\App\CMS\Repositories\Widgets\WidgetArea::class);
|
$widgetArea = app(\App\CMS\Repositories\Widgets\WidgetArea::class);
|
||||||
|
|
||||||
@@ -69,12 +65,20 @@ class WidgetAreas
|
|||||||
self::initWidgetAreas();
|
self::initWidgetAreas();
|
||||||
}
|
}
|
||||||
|
|
||||||
// dd($uniqueCode);
|
|
||||||
|
|
||||||
if (!isset(self::$widgetAreas[$uniqueCode])) {
|
if (!isset(self::$widgetAreas[$uniqueCode])) {
|
||||||
self::loadWidgetArea($uniqueCode);
|
self::loadWidgetArea($uniqueCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo isset(self::$widgetAreas[$uniqueCode]) ? self::$widgetAreas[$uniqueCode] : null;
|
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
@@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http;
|
namespace App\Http;
|
||||||
|
|
||||||
use App\Http\Middleware\TemplatePathInstaller;
|
use App\Http\Middleware\Web\IncrementWidgetsViews;
|
||||||
use App\Http\Middleware\WidgetInstaller;
|
|
||||||
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
||||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||||
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode;
|
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode;
|
||||||
@@ -37,12 +36,13 @@ class Kernel extends HttpKernel
|
|||||||
'web' => [
|
'web' => [
|
||||||
CheckForMaintenanceMode::class,
|
CheckForMaintenanceMode::class,
|
||||||
AddQueuedCookiesToResponse::class,
|
AddQueuedCookiesToResponse::class,
|
||||||
|
IncrementWidgetsViews::class
|
||||||
],
|
],
|
||||||
'admin' => [
|
'admin' => [
|
||||||
Middleware\Authenticate::class,
|
Middleware\Admin\Authenticate::class,
|
||||||
Middleware\AdminMenuRegistrator::class,
|
Middleware\Admin\AdminMenuRegistrator::class,
|
||||||
TemplatePathInstaller::class,
|
Middleware\Admin\TemplatePathInstaller::class,
|
||||||
WidgetInstaller::class,
|
Middleware\Admin\WidgetInstaller::class,
|
||||||
],
|
],
|
||||||
'api' => [
|
'api' => [
|
||||||
'throttle:60,1',
|
'throttle:60,1',
|
||||||
@@ -54,9 +54,9 @@ class Kernel extends HttpKernel
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $routeMiddleware = [
|
protected $routeMiddleware = [
|
||||||
'auth' => Middleware\Authenticate::class,
|
'auth' => Middleware\Admin\Authenticate::class,
|
||||||
'onlyAdmin' => Middleware\RequireAdminRole::class,
|
'onlyAdmin' => Middleware\Admin\RequireAdminRole::class,
|
||||||
'adminMenu' => Middleware\AdminMenuRegistrator::class,
|
'adminMenu' => Middleware\Admin\AdminMenuRegistrator::class,
|
||||||
'guest' => Middleware\RedirectIfAuthenticated::class,
|
'guest' => Middleware\RedirectIfAuthenticated::class,
|
||||||
'throttle' => ThrottleRequests::class,
|
'throttle' => ThrottleRequests::class,
|
||||||
'localize' => LaravelLocalizationRoutes::class,
|
'localize' => LaravelLocalizationRoutes::class,
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware\Admin;
|
||||||
|
|
||||||
use App\CMS\Handlers\Handler;
|
use App\CMS\Handlers\Handler;
|
||||||
use App\CMS\Repositories\Module as ModuleRepository;
|
use App\CMS\Repositories\Module as ModuleRepository;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware\Admin;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Closure;
|
use Closure;
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware\Admin;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Closure;
|
use Closure;
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware\Admin;
|
||||||
|
|
||||||
use App\CMS\Handlers\Registrators\TemplateRegistrator;
|
use App\CMS\Handlers\Registrators\TemplateRegistrator;
|
||||||
use Closure;
|
use Closure;
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware\Admin;
|
||||||
|
|
||||||
use App\CMS\Handlers\Registrators\WidgetRegistrator;
|
use App\CMS\Handlers\Registrators\WidgetRegistrator;
|
||||||
use Closure;
|
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');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user