public function actionView($id)
 {
     /* @var TopicModels $topic */
     $topic = TopicModels::find()->where(['id' => $id])->with('forum')->one();
     if (!$topic) {
         throw new NotFoundHttpException();
     }
     $topic->updateCounters(['number_views' => 1]);
     $topic->save();
     $dataProvider = PostModels::getDataProviderByTopic($topic->id);
     $posts = $dataProvider->getModels();
     if (!Yii::$app->getUser()->getIsGuest()) {
         $userMentions = UserMention::findAll(['topic_id' => $id, 'mention_user_id' => Yii::$app->getUser()->getId(), 'status' => UserMention::MENTION_STATUS_UNVIEWED]);
         /* user mention update */
         foreach ($userMentions as $userMention) {
             $userMention->status = UserMention::MENTION_STATUS_VIEWED;
             $userMention->save();
         }
         $model = new PostForm();
         if ($model->load(Yii::$app->getRequest()->post()) && $model->create($topic)) {
             $page = $model->post->getPostPage($model->post);
             if ($page > 1) {
                 $this->redirect(['view', 'id' => $model->getPost()->topic->id, 'page' => $page, '#' => 'p' . $model->getPost()->id]);
             } else {
                 $this->redirect(['view', 'id' => $model->getPost()->topic->id, '#' => 'p' . $model->getPost()->id]);
             }
         }
         return $this->render('view', ['dataProvider' => $dataProvider, 'model' => $model, 'topic' => $topic, 'posts' => $posts]);
     } else {
         return $this->render('view', ['dataProvider' => $dataProvider, 'topic' => $topic, 'posts' => $posts]);
     }
 }
 /**
  * @param $id
  * @return string
  */
 public function actionView($id)
 {
     /* @var SiteModels $forum */
     $forum = SiteModels::findOne(['id' => $id]);
     $query = TopicModels::find()->where(['forum_id' => $id])->orderBy(['sticked' => SORT_DESC])->addOrderBy(['last_post_created_at' => SORT_DESC]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['forcePageParam' => false, 'pageSizeLimit' => false, 'defaultPageSize' => Yii::$app->config->get('display_topics_count')]]);
     $topics = $dataProvider->getModels();
     return $this->render('view', ['dataProvider' => $dataProvider, 'forum' => $forum, 'topics' => $topics]);
 }
 public function actionViewOwnpostTopics()
 {
     // !!! need access check
     if (Yii::$app->getUser()->getIsGuest()) {
         throw new NotFoundHttpException();
     }
     $user = Yii::$app->getUser()->getIdentity();
     $posts = PostModels::find()->select(['topic_id', 'user_id'])->where('user_id = :user_id', [':user_id' => $user->id])->asArray()->all();
     $ids = ArrayHelper::getColumn($posts, 'topic_id');
     $uniqueIDs = array_unique($ids);
     $query = TopicModels::find()->where(['IN', 'id', $uniqueIDs])->andWhere('forum_id NOT LIKE 0')->with('forum')->orderBy(['last_post_created_at' => SORT_DESC]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['forcePageParam' => false, 'pageSizeLimit' => false, 'defaultPageSize' => Yii::$app->config->get('display_topics_count')]]);
     $topics = $dataProvider->getModels();
     return $this->render('topic_list', ['title' => 'Темы с вашим участием', 'dataProvider' => $dataProvider, 'topics' => $topics]);
 }