Пример #1
0
 /**
  * @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());
 }
Пример #2
0
 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]);
 }