/** * 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())]); }