public function actionVote() { if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; } $id = Yii::$app->request->getQueryParam('id'); $vote = Yii::$app->request->getQueryParam('vote'); switch ($vote) { case 'up': $v = 1; break; case 'down': $v = -1; break; default: throw new InvalidParamException('Vote must be up or down!'); } $vote = new Vote(['vote' => $v, 'ip' => ip2long(Yii::$app->request->userIP), 'fingerprint' => md5(Yii::$app->request->userAgent), 'snippet_id' => $id]); if ($vote->validate()) { $vote->save(); $paste = Code::findOne($vote->snippet_id); $message = Yii::t('happycode', 'Voted!'); if (Yii::$app->request->isAjax) { return ['id' => $id, 'message' => $message, 'score' => $paste->score]; } else { AlertHelper::appendAlert('success', $message); return $this->goBack(); } } else { Yii::$app->response->statusCode = 403; $message = Yii::t('happycode', 'Already voted on this paste.'); if (Yii::$app->request->isAjax) { return ['id' => $id, 'message' => $message]; } else { AlertHelper::appendAlert('warning', $message); return $this->goBack(); } } }