Exemple #1
0
 /**
  * Handle Ajax call for upvote/downvote of post
  *
  * @todo not available for init release - DJE : 2015-06-03
  */
 public function actionUpvote()
 {
     $json = array();
     if (isset(\Yii::$app->request->post()['id'])) {
         $criteria = new CDbCriteria();
         $criteria->condition = "member_id = :userid and post_id = :post_id";
         $criteria->params = array(':userid' => \Yii::$app->user->identity->id, ':post_id' => \Yii::$app->request->post()['id']);
         if (BbiiUpvoted::find()->exists($criteria)) {
             // remove upvote
             BbiiUpvoted::find()->deleteAll($criteria);
             $post = BbiiPost::find(\Yii::$app->request->post()['id']);
             $topic = BbiiTopic::find($post->topic_id);
             $member = BbiiMember::find($post->user_id);
             $post->updateCounters(array('upvoted' => -1));
             $topic->updateCounters(array('upvoted' => -1));
             $member->updateCounters(array('upvoted' => -1));
         } else {
             // add upvote
             $upvote = new BbiiUpvoted();
             $upvote->member_id = \Yii::$app->user->identity->id;
             $upvote->post_id = \Yii::$app->request->post()['id'];
             $upvote->save();
             $post = BbiiPost::find(\Yii::$app->request->post()['id']);
             $topic = BbiiTopic::find($post->topic_id);
             $member = BbiiMember::find($post->user_id);
             $post->updateCounters(array('upvoted' => 1));
             $topic->updateCounters(array('upvoted' => 1));
             $member->updateCounters(array('upvoted' => 1));
         }
         $json['success'] = 'yes';
         $json['html'] = $this->showUpvote(\Yii::$app->request->post()['id']);
     } else {
         $json['success'] = 'no';
     }
     echo json_encode($json);
     \Yii::$app->end();
 }