/** * 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(); }