/** * @return array */ public function to_array() { return array_merge(['author' => $this->author->to_array(), 'forum' => $this->forum_id ? $this->forum->to_array() : [], 'subjects' => $this->forum_id ? 0 : Forum::count(['conditions' => ['forum_id = ?', $this->id]]), 'topics' => $this->forum_id ? ForumTheme::count(['conditions' => ['forum_id = ?', $this->id]]) : 0], parent::to_array()); }
public function subjects(Request $request, $matches) { $title = $this->lang->translate('forum.list'); // Delete topic if ($request->get('delete')) { $forum = \Forum::find_by_id(intval($request->get('delete'))); if ($forum) { $forum->delete(); $this->view->assign('message', $this->lang->translate('form.deleted')); } } // Filter $filter = ['conditions' => ['forum_id < 1']]; if ($request->get('author')) { $author = \User::find($request->get('author')); if ($author) { $filter['conditions'] = ['author_id = ?', $author->id]; } } // Parent if ($request->get('parent')) { $parent = \Forum::find($request->get('parent')); if ($parent) { $filter['conditions'] = ['forum_id = ?', $parent->id]; } } $filter['order'] = 'id DESC'; if ($request->order) { $filter['order'] = $request->order; } /** @var Listing $paginator */ $paginator = NCService::load('Paginator.Listing', [$request->page, \Forum::count('all')]); $filter = array_merge($filter, $paginator->limit()); // Filter topics $forums = \Forum::as_array(\Forum::all($filter)); return $this->view->render('forum/list.twig', ['title' => $title, 'forums_list' => $forums, 'listing' => $paginator->pages(), 'page' => $paginator->cur_page]); }