content = App::make(ContentRepository::class); $this->module = App::make(Module::class); $this->file = App::make(File::class); } /** * Create new content page * * @param array $data * @param $parameters * * @return Content */ public function handle($data, $parameters) { list($moduleHandler, $titlePhoto, $relatedFiles) = $parameters; // upload file - if provided $file = !is_null($titlePhoto) ? $this->file->upload($titlePhoto) : null; $data['userId'] = \Auth::user()->id; $data['language'] = LaravelLocalization::getCurrentLocale(); $data['titlePhoto'] = $file ? $file['filename'] : null; $data['moduleHandler'] = $moduleHandler; $page = Content::create($data); // save module-specific stuff $this->module->callOnString($moduleHandler, 'createNew', [&$page, $data]); // let template to modify data and content page CurrentTemplate::beforeSave($page, $data); // save content of page before (possible) uploading related files $page->save(); // upload files assigned to content page $page->uploadRelatedFiles($relatedFiles); return $page; } public function getValidationRules($parameters = []) { // get all available statuses $statuses = ContentStatuses::getSimple(); $statuses = implode(',', $statuses); return [ 'titlePhoto' => 'image', 'title' => 'required', 'url' => 'required|unique:contents,url,NULL,id,deleted_at,NULL,language,' . LaravelLocalization::getCurrentLocale(), 'status' => 'required|in:'.$statuses, 'parentPage' => 'exists:contents,id', 'publishedFrom' => 'date', 'publishedTo' => 'date', ]; } }