Files
core/app/Models/Widgets/ModelTraits/Widget.php
T

41 lines
1.6 KiB
PHP

<?php
namespace App\Models\Widgets\ModelTraits;
use App\Events\CreateNewWidget;
use App\Http\Requests\Request;
use App\Models\Widgets\Widget as WidgetModel;
use App\Models\Widgets\WidgetType;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
trait Widget
{
/**
* Create new widget of given type
*
* @param WidgetType $widgetType
* @param Request $request
*
* @return WidgetModel
*/
public function createNew(WidgetType $widgetType, Request $request)
{
$settings = call_user_func([$widgetType->handler, 'save'], $request);
// create new widget
$widget = WidgetModel::create([
'widget_type_handler' => $widgetType->handler,
'language' => LaravelLocalization::getCurrentLocale(),
'user_id' => \Auth::user()->id,
'name' => $request->name,
'container_class' => $request->containerClass,
'container_id' => empty($request->containerId) ? null : $request->containerId,
'description' => $request->description,
'settings' => json_encode($settings),
]);
// fire event with newly created widget
\Event::fire(new CreateNewWidget($widget));
return $widget;
}
}