Ejemplo n.º 1
0
 /**
  * Edit post or create new
  *
  * @param Request $request
  * @param $matches
  * @return mixed|string
  */
 public function edit_post(Request $request, $matches)
 {
     $title = $this->lang->translate('post.create');
     // Get post for updating
     $id = intval($matches->get('id', $request->get('id')));
     if ($id > 0) {
         $post = \Post::find_by_id($id);
         $title = $this->lang->translate('post.editing', $post->title);
     } else {
         $category = \PostCategory::last();
         $post = ['title' => $this->lang->translate('post.name'), 'content' => '', 'category' => $category ? $category->to_array() : null];
     }
     // Create or update page
     if ($request->isMethod('post')) {
         if ($post instanceof \Post) {
             $post->title = $request->get('title');
             $post->content = $request->get('content');
             $post->category_id = $request->get('category');
             $post->keywords = $request->get('keywords');
             $post->slug = $request->get('slug');
             $post->moderate = $request->get('moderate');
         } else {
             $post = new \Post(['title' => $request->get('title'), 'content' => $request->get('content'), 'category_id' => $request->get('category'), 'keywords' => $request->get('keywords'), 'slug' => $request->get('slug'), 'author_id' => $this->user->id, 'moderate' => $request->get('moderate')]);
         }
         // Updating instance
         $post->save();
         if (!$post->moderate) {
             // Exporting to social
             Module::export($post, $this->view);
             // Ping sitemap
             NCService::load('SocialMedia.Ping');
         }
         return static::json_response(['success' => true, 'message' => $this->lang->translate('form.saved')]);
     }
     if ($post instanceof \Post) {
         $post = $post->to_array();
     }
     return $this->view->render('posts/create.twig', ['post' => $post, 'title' => $title, 'categories' => \PostCategory::as_array(\PostCategory::all())]);
 }