/** * Categories list * * @param Request $request * @return mixed */ public function posts_categories(Request $request) { $title = $this->lang->translate('post.categories'); // Delete post if ($request->get('delete')) { $post = \PostCategory::find_by_id(intval($request->get('delete'))); if ($post && $post->delete()) { $this->view->assign('message', $this->lang->translate('form.deleted')); } } // Filter categories $filter = []; if ($request->order) { $filter['order'] = $request->order; } if ($request->get('category')) { $category = \PostCategory::find($request->get('category')); $filter['conditions'] = ['parent_id = ?', $category->id]; $title = $this->lang->translate('post.category') . ' ' . $category->title; } /** @var Listing $paginator */ $paginator = NCService::load('Paginator.Listing', [$request->page, \PostCategory::count()]); $filter = array_merge($filter, $paginator->limit()); // Listing categories $categories = \PostCategory::all($filter); $categories = array_map(function ($i) { $a = $i->to_array(); $a['posts'] = \Post::count(['conditions' => ['category_id = ?', $a['id']]]); return $a; }, $categories); return $this->view->render('posts/list_categories.twig', ['title' => $title, 'category_list' => $categories, 'listing' => $paginator->pages(), 'page' => $paginator->cur_page]); }