Example #1
0
 public function update(Article $article, Request $request)
 {
     $user = $this->user;
     //dd($request->all());
     $this->validate($request, ['title' => 'required|min:3', 'published' => 'required|in:0,1', 'content' => 'required|min:3', 'image' => 'mimes:jpeg,bmp,png,jpg|max:1024', 'tags.*' => 'min:2|max:30', 'categories.*' => 'integer']);
     $input = $request->all();
     $previousImage = $article->image;
     /* check if the user has uploaded image or not */
     if ($request->hasFile('image')) {
         $image = $input['image'];
         $imageName = $user->id . str_random(20) . '.' . $image->getClientOriginalExtension();
         $imageDbName = $user->id . '/' . $imageName;
         $image->move(public_path() . '/img/files/' . $user->id, $imageName);
         /* Delete the previous image */
         if ($previousImage != null) {
             if (File::exists(public_path() . '/img/files/' . $user->id . '/' . $previousImage)) {
                 unlink(public_path() . '/img/files/' . $user->id . '/' . $previousImage);
             }
         }
     } else {
         $imageDbName = $previousImage;
     }
     /*update article*/
     $article->update(['title' => $input['title'], 'content' => $input['content'], 'published' => $input['published'], 'image' => $imageDbName]);
     /*register subCategories*/
     $selectedCategories = $this->registerSubCategories($request);
     if (!$selectedCategories) {
         //if the selected tags has error
         return redirect()->back();
     }
     $article->categories()->sync($selectedCategories);
     /*register tags*/
     $selected = $this->registerTags($request);
     $article->tags()->sync($selected);
     Flash::success(trans('users.articleEdited'));
     return redirect()->back();
 }
 /**
  * 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');
 }