Ejemplo n.º 1
0
 /**
  * @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);
 }