示例#1
0
 /**
  * Список тем
  */
 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'));
 }
示例#2
0
 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]);
 }