widget_area_code])) self::$widgetAreas[$widget->widget_area_code] = ''; $handler = $widget->widget_type_handler; $widget->settings = json_decode($widget->settings); $presenter = call_user_func([$handler, 'getPresenter']); self::$widgetAreas[$widget->widget_area_code] .= call_user_func([$presenter, 'render'], $widget); } } protected static function loadWidgetArea($uniqueCode) { $widgetArea = new WidgetArea(); $widgets = $widgetArea->getWidgets($uniqueCode) ->get(); WidgetArea::where('code', $uniqueCode) ->increment('viewed'); self::saveRenderedWidgetArea($widgets); } protected static function initWidgetAreas() { if (self::$initialized) return; $widgetArea = new WidgetArea(); $widgets = $widgetArea->getWidgets() ->get(); self::saveRenderedWidgetArea($widgets); self::$initialized = true; } /** * Renderer for whole widget area. * * @param $uniqueCode * * @return mixed */ public static function render($uniqueCode) { if (!self::$initialized) { self::initWidgetAreas(); } if (!isset(self::$widgetAreas[$uniqueCode])) { self::loadWidgetArea($uniqueCode); } echo self::$widgetAreas[$uniqueCode]; } }