/** * Список тем */ public function forum($id) { if (!($forum = Forum::find_by_id($id))) { App::abort('default', 'Данного раздела не существует!'); } $total = Topic::count(['conditions' => ['forum_id = ?', $id]]); $page = App::paginate(Setting::get('topics_per_page'), $total); $topics = Topic::all(['conditions' => ['forum_id = ?', $id], 'offset' => $page['offset'], 'limit' => $page['limit'], 'order' => 'updated_at desc', 'include' => ['forum', 'post_count', 'post_last' => ['user']]]); /* $topics = Topic::all([ 'select' => 't.*, p.user_id post_user, p.created_at post_created', 'from' => 'topics as t', 'conditions' => ['t.forum_id = ?', $id], 'joins' => ['LEFT JOIN ( SELECT topic_id, MAX(created_at) AS max FROM posts GROUP BY topic_id ) AS latest ON t.id = latest.topic_id LEFT JOIN posts p ON p.created_at = latest.max AND p.topic_id = latest.topic_id'], 'offset' => $page['offset'], 'limit' => $page['limit'], 'order' => 't.updated_at desc', 'include' => [ 'forum', 'post_count', ],*/ $crumbs = ['/forum' => 'Форум', $forum->title]; if ($forum->parent_id) { $crumbs = ['/forum' => 'Форум', '/forum/' . $forum->parent_id => $forum->parent()->title, $forum->title]; } App::view('forums.forum', compact('forum', 'topics', 'page', 'crumbs')); }
public function edit_topic(Request $request, $matches) { $title = $this->lang->translate('forum.create'); // Get page for updating $id = intval($matches->get('id', $request->get('id'))); // Parent topic $topics = \Forum::as_array(\Forum::find('all', ['conditions' => ['forum_id = 0 AND id <> ?', $id]])); if ($id > 0) { $forum = \Forum::find_by_id($id); $title = $this->lang->translate('forum.editing', $forum->title); } else { $forum = ['title' => $this->lang->translate('page.name'), 'forum_id' => null]; } // Create or update page if ($request->isMethod('post')) { if ($forum instanceof \Forum) { $forum->title = $request->get('title'); $forum->forum_id = $request->get('forum'); $forum->author_id = $this->user->id; } else { $forum = new \Forum(['title' => $request->get('title'), 'forum_id' => $request->get('forum'), 'author_id' => $this->user->id]); } // Updating instance $forum->save(); $forum = $forum->to_array(); return static::json_response(['success' => true, 'message' => $this->lang->translate('form.saved')]); } return $this->view->render('forum/create.twig', ['forum' => $forum, 'title' => $title, 'topics' => $topics]); }