Example #1
0
 /**
  * Update the specified resource in storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function update(Article $article, Request $request)
 {
     $validator = Validator::make($request->all(), ['published' => 'sometimes|date', 'title' => 'sometimes|min:3|max:255', 'group' => 'sometimes|integer', 'comments' => 'sometimes|boolean', 'content' => 'sometimes|min:10', 'help' => 'sometimes|boolean', 'approve' => 'sometimes|boolean|required_with:content', 'revision' => 'sometimes|integer', 'reason' => 'required_with:title|max:255', 'deleted' => 'sometimes|date']);
     if ($validator->passes()) {
         // TBD check user has write access to group
         if ($article->deleted_at !== null && $request->has('deleted') && $request->deleted === null) {
             $article->restore();
             return $this->respondWithItem($article, new ArticleTransformer());
         } else {
             $article->allow_comments = $request->exists('comments') ? (bool) $request->comments : $article->allow_comments;
             $article->group_id = $request->exists('group') ? (bool) $request->group : $article->group_id;
             if ($request->title && $request->content) {
                 $content = $this->createArticleContent($article, $request, $request->reason);
                 if ($content) {
                     return $this->respondWithItem($content, new ArticleContentTransformer());
                 }
             } else {
                 if ($request->has('revision')) {
                     // check is admin
                     $article->content_id = $request->exists('revision') ? $request->revision : $article->content_id;
                     $this->approveContent($article, $request->revision);
                 }
             }
             if ($article->save()) {
                 return $this->respondWithItem($article, new ArticleTransformer());
             } else {
                 return $this->errorInternal('Unable to update article');
             }
         }
     } else {
         return $this->errorValidation($validator->messages());
     }
 }