Пример #1
0
 /**
  * @param SiteModels $forum
  * @return boolean
  */
 public function create($forum)
 {
     // very, so much, stupid source code :)
     if ($this->validate()) {
         $user = Yii::$app->getUser()->getIdentity();
         // create post
         $post = new PostModels();
         $post->topic_id = 0;
         $post->message = $this->message;
         $post->save();
         if ($post->save()) {
             // create topic
             $topic = new TopicModels();
             $topic->forum_id = $forum->id;
             $topic->subject = $this->subject;
             $topic->post = $post;
             $topic->save();
             // update post.topic_id
             $post->link('topic', $topic);
             // update forum information
             $forum->updateCounters(['number_topics' => 1]);
             $forum->last_post_created_at = time();
             $forum->last_post_user_id = $post->id;
             $forum->last_post_username = $user->username;
             $forum->save();
             $this->topic = $topic;
             return true;
         }
     }
 }
 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]);
 }
Пример #5
0
 /**
  * @return ActiveQuery
  */
 public function getTopics()
 {
     return $this->hasMany(TopicModels::className(), ['forum_id' => 'id'])->inverseOf('forum');
 }
Пример #6
0
    }
    ?>
                </tbody>
            </table>
        </div>
    <?php 
}
?>
    <div class="statistic">
        <div class="clearfix">
            <ul class="right">
                <li><?php 
echo Yii::t('forum', 'Тем:');
?>
 <strong><?php 
echo $formatter->asInteger(TopicModels::countAll());
?>
</strong></li>
                <li><?php 
echo Yii::t('forum', 'Сообщений:');
?>
 <strong><?php 
echo $formatter->asInteger(PostModels::find()->count());
?>
</strong></li>
            </ul>
            <ul class="left">
                <li><?php 
echo Yii::t('forum', 'Количество пользователей:');
?>
 <strong><?php 
Пример #7
0
 /**
  * @return ActiveQuery
  */
 public function getTopic()
 {
     return $this->hasOne(TopicModels::className(), ['id' => 'topic_id']);
 }