/** * Include attachments. * * @param \App\Article $article * @param \League\Fractal\ParamBag|null $params * @return \League\Fractal\Resource\Collection * @throws \Exception */ public function includeAttachments(Article $article, ParamBag $params = null) { $transformer = new \App\Transformers\AttachmentTransformer($params); $parsed = $this->getParsedParams(); $attachments = $article->attachments()->limit($parsed['limit'])->offset($parsed['offset'])->orderBy($parsed['sort'], $parsed['order'])->get(); return $this->collection($attachments, $transformer); }
/** * Stubbing test data. * * @param array $overrides */ protected function createTestStub($overrides = []) { $this->user = !empty($overrides) ? factory(User::class)->create() : factory(User::class)->create($overrides); $this->user->attachRole(Role::find(2)); $this->article = factory(Article::class)->create(['title' => 'title', 'author_id' => $this->user->id, 'content' => 'description']); $this->article->comments()->save(factory(Comment::class)->make(['author_id' => $this->user->id])); $this->article->tags()->attach(1); $this->article->attachments()->save(factory(Attachment::class)->make()); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // validate request $validateArticle = Validator::make($request->get('Article'), Article::$rules); $validationMessages = []; foreach ($request->get('ArticleTranslation') as $key => $value) { $validateArticleTranslation = Validator::make($value, ArticleTranslation::$rules); if ($validateArticleTranslation->fails()) { $validationMessages = array_merge_recursive($validationMessages, $validateArticleTranslation->messages()->toArray()); } } if ($validateArticle->fails() or count($validationMessages) > 0) { $validationMessages = array_merge_recursive($validateArticle->messages()->toArray(), $validationMessages); return redirect()->back()->withErrors($validationMessages)->withInput(); } // get all languages $languages = Language::all(); // find language default $languageDefault = $languages->where('is_key_language', 1)->first(); if (is_null($languageDefault)) { $languageDefault = $languages->first(); } // sure execute success, if not success rollback DB::transaction(function () use($request, $languageDefault) { $user = $request->user(); // insert Article $article = new Article(); $article->key = Common::createKeyURL($request->input('ArticleTranslation.' . $languageDefault->code . '.name')); $article->priority = $request->input('Article.priority'); $article->is_publish = $request->input('Article.is_publish'); $article->created_by = $user->name; $article->updated_by = $user->name; $article->save(); // sync categories if ($request->input('Article.categories') != "") { $categories = explode(",", $request->input('Article.categories')); if (count($categories) > 0) { $article->categories()->attach($categories); } } // save attachments if ($request->input('Article.attachments') != "") { $requestAttachments = explode(',', $request->input('Article.attachments')); $attachments = []; foreach ($requestAttachments as $key => $value) { array_push($attachments, new Attachment(['entry_id' => $article->id, 'table_name' => 'articles', 'path' => $value, 'priority' => 0, 'is_publish' => 1])); } if (count($attachments) > 0) { $article->attachments()->saveMany($attachments); } } // save data languages foreach ($request->get('ArticleTranslation') as $locale => $value) { $article->translateOrNew($locale)->name = $request->input('ArticleTranslation.' . $locale . '.name'); $article->translateOrNew($locale)->summary = $request->input('ArticleTranslation.' . $locale . '.summary'); $article->translateOrNew($locale)->content = $request->input('ArticleTranslation.' . $locale . '.content'); $article->translateOrNew($locale)->meta_description = $request->input('ArticleTranslation.' . $locale . '.meta_description'); $article->translateOrNew($locale)->meta_keywords = $request->input('ArticleTranslation.' . $locale . '.meta_keywords'); } $article->save(); }); return redirect()->route('admin.articles.index'); }
/** * Include attachments. * * @param \App\Article $article * @param \League\Fractal\ParamBag|null $params * @return \League\Fractal\Resource\Collection * @throws \Exception */ public function includeAttachments(Article $article, ParamBag $params = null) { list($limit, $offset, $orderCol, $orderBy) = $this->calculateParams($params); $attachments = $article->attachments()->limit($limit)->offset($offset)->orderBy($orderCol, $orderBy)->get(); return $this->collection($attachments, new \App\Transformers\AttachmentTransformer()); }