コード例 #1
0
ファイル: Forum.php プロジェクト: Max201/nanocore
 /**
  * @param $postId
  * @param \User $author
  * @return bool|void
  */
 public static function minus($postId, \User $author)
 {
     $forum = \ForumTheme::find(intval($postId));
     if (!$forum) {
         return false;
     }
     if ($forum->author_id == $author->id) {
         return $forum->author_id;
     }
     if ($forum->author->rate(-1)) {
         return $forum->author_id;
     }
     return false;
 }
コード例 #2
0
ファイル: Control.php プロジェクト: Max201/nanocore
 public function subject_list($request, $matches)
 {
     $title = $this->lang->translate('forum.themes');
     $root = \Forum::find($matches->get('id'));
     if (!$root) {
         return static::redirect_response('/control/forum/');
     }
     $title .= ' "' . $root->title . '"';
     // Delete topic
     if ($request->get('delete')) {
         $forum = \ForumTheme::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 = ?', $root->id]];
     if ($request->get('author')) {
         $author = \User::find($request->get('author'));
         if ($author) {
             $this->view->assign('author', $author->id);
             $title .= ', ' . $author->username;
             $filter['conditions'] = ['author_id = ? AND forum_id = ?', $author->id, $root->id];
         }
     }
     $filter['order'] = 'id DESC';
     if ($request->order) {
         $filter['order'] = $request->order;
     }
     /** @var Listing $paginator */
     $paginator = NCService::load('Paginator.Listing', [$request->page, \ForumTheme::count('all')]);
     $filter = array_merge($filter, $paginator->limit());
     // Filter subjects
     $subjects = \ForumTheme::as_array(\ForumTheme::all($filter));
     return $this->view->render('forum/list_subjects.twig', ['title' => $title, 'subjects_list' => $subjects, 'listing' => $paginator->pages(), 'page' => $paginator->cur_page]);
 }
コード例 #3
0
ファイル: Forum.php プロジェクト: Max201/nanocore
 /**
  * @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());
 }
コード例 #4
0
ファイル: Module.php プロジェクト: Max201/nanocore
 /**
  * Comments list
  *
  * @param $request
  * @param $matches
  * @return mixed
  */
 public function posts_list($request, $matches)
 {
     $topic = $this->view->get('topic', $matches->get('topic'));
     $topic = $topic instanceof \ForumTheme ? $topic : \ForumTheme::find($topic);
     $filter = ['conditions' => ['theme_id = ?', $topic->id], 'order' => 'created_at DESC'];
     /** @var Listing $paginator */
     $paginator = NCService::load('Paginator.Listing', [$request->page, \ForumPost::count($filter)]);
     $filter = array_merge($filter, $paginator->limit());
     // Comments
     $comments = \ForumPost::find('all', $filter);
     $comments = \ForumPost::as_array($comments);
     // Context
     $context = ['topic' => $topic, 'posts_list' => $comments, 'page' => $paginator->cur_page, 'listing' => $paginator->pages()];
     // Add comment status
     if ($status = $this->view->get('status', false)) {
         $context['status'] = $status;
     }
     // Build response
     if ($request->get('type', 'html') == 'json') {
         unset($context['listing']);
         $context['pages'] = $paginator->pages;
         $context['rows'] = $paginator->num_rows;
         return static::json_response($context);
     }
     return $this->view->render('forum/posts.twig', $context);
 }