public function editAction() { $categories = PostCategory::find(['type = "post" AND id_web = "' . $this->auth->id_web . '"']); // print_r($this->params); $post = Post::findFirst($this->params->id); $this->view->setVar("data", $post); $this->view->setVar("categories", $categories); }
public function order() { $category_order = json_decode(Input::get('order')); $post_categories = PostCategory::all(); $order = 1; foreach ($category_order as $category_level_1) { $level1 = PostCategory::find($category_level_1->id); if ($level1->id) { $level1->order = $order; $level1->parent_id = NULL; $level1->save(); $order += 1; } if (isset($category_level_1->children)) { $children_level_1 = $category_level_1->children; foreach ($children_level_1 as $category_level_2) { $level2 = PostCategory::find($category_level_2->id); if ($level2->id) { $level2->order = $order; $level2->parent_id = $level1->id; $level2->save(); $order += 1; } if (isset($category_level_2->children)) { $children_level_2 = $category_level_2->children; foreach ($children_level_2 as $category_level_3) { $level3 = PostCategory::find($category_level_3->id); if ($level3->id) { $level3->order = $order; $level3->parent_id = $level2->id; $level3->save(); $order += 1; } } } } } } return 1; }
/** * Posts list * * @param Request $request * @param $opts * @return mixed */ public function posts_list(Request $request, $opts) { $title = $this->lang->translate('post.list'); // Delete post if ($request->get('delete')) { $post = \Post::find_by_id(intval($request->get('delete'))); if ($post && $post->delete()) { $this->view->assign('message', $this->lang->translate('form.deleted')); } } // Publish post if ($request->get('accept')) { $post = \Post::find_by_id(intval($request->get('accept'))); if ($post) { $post->moderate = '0'; $post->created_at = time(); if ($post->save()) { $this->view->assign('message', $this->lang->translate('post.published')); } // Export to social $post->export(); // Pinging sitemap NCService::load('SocialMedia.Ping'); } else { $this->view->assign('message', $this->lang->translate('post.error_publish')); } } // Filter $filter['order'] = 'id DESC'; if ($request->order) { $filter['order'] = $request->order; } $conditions = []; $values = []; // By Category if ($request->get('category')) { $category = \PostCategory::find($request->get('category')); if ($category) { $conditions[] = 'category_id = ?'; $values[] = $category->id; } } // By Author if ($request->get('author')) { $author = \User::find($request->get('author')); if ($author) { $conditions[] = 'author_id = ?'; $values[] = $author->id; } } // Premoderate $conditions[] = 'moderate = ?'; if ($opts->get('mod')) { $title = $this->lang->translate('post.onmoderation'); $values[] = '1'; } else { $values[] = '0'; } if ($conditions) { $filter['conditions'] = array_merge([implode(' AND ', $conditions)], $values); } /** @var Listing $paginator */ $paginator = NCService::load('Paginator.Listing', [$request->page, \Post::count($filter)]); $filter = array_merge($filter, $paginator->limit()); // Filter users $posts = \Post::all($filter); // Mass managing // Accept all visible if ($request->get('accept') == 'all') { foreach ($posts as $item) { $item->moderate = '0'; $item->save(); // Export to social Module::export($item, $this->view); } // Pinging sitemap NCService::load('SocialMedia.Ping'); return static::redirect_response($request->getPathInfo()); } // Sent to moderate all visible if ($request->get('moderate') == 'all') { foreach ($posts as $item) { $item->moderate = '1'; $item->save(); } return static::redirect_response($request->getPathInfo()); } // Delete all visible if ($request->get('delete') == 'all') { foreach ($posts as $item) { $item->delete(); } return static::redirect_response($request->getPathInfo()); } $posts = array_map(function ($i) { return $i->to_array(); }, $posts); return $this->view->render('posts/list.twig', ['title' => $title, 'posts_list' => $posts, 'listing' => $paginator->pages(), 'page' => $paginator->cur_page, 'moderate' => $opts->get('mod')]); }
/** * @param Request $request * @param Options $matches * @return string */ public function category(Request $request, Options $matches = null) { /** @var \PostCategory $category */ $category = \PostCategory::find($matches->get('id')); if ($category) { /** @var RecursiveTree $recursive_tree */ $recursive_tree = NCService::load('Module.RecursiveTree', [\PostCategory::listing()]); // Filter conditions $filter = ['conditions' => ['category_id IN (?) AND moderate = ?', $recursive_tree->childs($category->id), 0]]; // Rows count $rows = \Post::count($filter); // Paginator /** @var Listing $pagination */ $pagination = NCService::load('Paginator.Listing', [$request->page, $rows]); // Limitation $filter = array_merge($filter, $pagination->limit()); // Ordering if ($request->order) { $filter['order'] = $request->order; } else { $filter['order'] = 'created_at DESC'; } // Get posts $posts = \Post::all($filter); // Rendering return $this->view->render('posts/list.twig', ['title' => $category->title, 'category' => $category->to_array(), 'posts' => \Post::as_array($posts), 'listing' => $pagination->pages(), 'page' => $request->page]); } return $this->error404($request); }