public function actionRespond($id = null, $hash = null) { $model = null; $userModel = new \frontend\models\User(); if ($id) { $model = Razz::findOne($id); } elseif ($hash) { $model = Razz::findOne(['hash' => $hash]); } if (Yii::$app->getUser()->id === $model->uid) { //throw new HttpException(404, 'You are not allowed to respond to your own challenge!'); return $this->render('error', ['model' => $model, 'message' => 'You are not allowed to respond to your own challenge!', 'userModel' => $userModel]); } if (!$model) { throw new HttpException(404, 'Razzd not found'); } $model->scenario = 'respond'; if ($model->responder_stream) { throw new HttpException(403, 'Razzd already responded.'); } if (!Yii::$app->user->isGuest && $id && $model->hash && Yii::$app->user->id != $model->responder_uid) { // throw new HttpException(403, 'This razzd for other user.'); } elseif (Yii::$app->user->isGuest && $model->responder_uid) { $this->redirect(['/login']); } if (!Yii::$app->user->isGuest && $id && $model->hash) { if (!is_null($model->facebook_id)) { $client_id = User::getClientIdByUid(Yii::$app->user->id); if ((int) $client_id != (int) $model->facebook_id) { throw new HttpException(403, 'This razzd for other user!'); } } elseif (!is_null($model->responder_uid)) { if (Yii::$app->user->id != $model->responder_uid) { throw new HttpException(403, 'This razzd for other user...'); } } } if ($model->load(Yii::$app->request->post()) && $model->save()) { $this->redirect('/razz/' . $model->id); } else { // print_r($model->getErrors()); //exit(); } return $this->render('respond', ['model' => $model, 'userModel' => $userModel]); }
/** * @param $id * @param $stream * @param $stream_preview * @param bool|false $isRespond * @param string $class * @param bool $showPlayer - выводить Ziggeo player * @return string */ static function getImage($id, $stream, $stream_preview, $isRespond = false, $class = "video-preview", $showPlayer = false) { $image = "<img class=\"no-image\" src=\"" . Url::base(true) . "" . \common\helpers\Html::noImage() . "\" >"; ///$default_ext = ".mp4"; if (is_null($stream)) { return $image; } $ziggeo_video_url = Yii::$app->params['ziggeo']['video_url'] . "/" . Yii::$app->params['ziggeo']['api_version'] . "/applications/" . Yii::$app->params['ziggeo']['application_token'] . "/videos/:token/video.mp4"; $scheme = ""; // Stream is an Image if (preg_match('/^http(s)?:\\/\\/([\\w\\d-\\.]*)(.)*\\.(png|jpg|jpeg|gif|wav|mp3|mp4)$/i', $stream) and is_null($stream_preview)) { return $image; } if (preg_match('/^http(s)?:\\/\\/([\\w\\d-\\.]*)(.)*\\.(png|jpg|jpeg|gif|wav|mp3|mp4)$/i', $stream_preview)) { // Stream is pure Url $image = "<img class=\"{$class}\" data-video=\"{$stream}\" src=\"{$stream_preview}\">"; } elseif (preg_match('/(http(s)?:\\/\\/){0,1}[a-z\\.]*ziggeo(.)*/i', $stream_preview)) { // Preview is Ziggeo url if ($showPlayer === true) { $image = self::getPlayer($stream); } else { if (!preg_match('/http/i', $stream_preview)) { $scheme = "http://"; } $src = str_replace(':token', $stream, $ziggeo_video_url); $image = "<img class=\"{$class}\" data-video=\"{$src}\" src=\"{$scheme}{$stream_preview}\">"; } } else { if (preg_match('/([\\w\\d])*/i', $stream) and !preg_match('/(http)/i', $stream) or is_null($stream_preview)) { // It seems like Stream is a Ziggeo Token if (is_null($stream_preview)) { // Запросить урл имаджа через апи и положить его в базу try { $video = self::getInstance()->videos()->get($stream); if (is_object($video)) { ///$default_ext = $video->default_stream->video_type; if (isset($video->embed_image_url)) { $src = str_replace(':token', $stream, $ziggeo_video_url); $image = "<img class=\"{$class}\" data-video=\"{$src}\" src=\"http://{$video->embed_image_url}\">"; $razz = Razz::findOne($id); $razz->pureUpdate = true; if ($isRespond) { $razz->responder_stream_preview = $video->embed_image_url; } else { $razz->stream_preview = $video->embed_image_url; } $razz->fb_friend = $razz->facebook_id; if (!$razz->save()) { self::addError(serialize($razz->getErrors())); $logger = Yii::$app->getLog()->getLogger(); $logger->log('ZiggeoHelper error', \yii\log\Logger::LEVEL_INFO); $logger->log($razz->getErrors(), \yii\log\Logger::LEVEL_ERROR); } } } } catch (ZiggeoException $e) { self::addError($e->getMessage()); } } else { // Только сгенерить имадж // FIXME - Сюда заходит, когда в базе битый урл $razz = Razz::findOne($id); $video_src = str_replace(':token', $stream, $ziggeo_video_url); if ($isRespond) { $preview = $razz->responder_stream_preview; } else { $preview = $razz->stream_preview; } if (!preg_match('/http/i', $preview)) { $preview = "http://" . $preview; } $image = "<img class=\"{$class}\" data-video=\"{$video_src}\" src=\"{$preview}\">"; } if ($showPlayer === true) { $image = self::getPlayer($stream); } } } return $image; }
public function actionRazzRespond() { $request = Yii::$app->request; $token = Token::checkToken($request->get('token')); if (!is_array($token)) { throw new HttpException(401, $token); } $model = Razz::findOne($request->get('id')); if (!$model) { throw new HttpException(404, 'Razzd not found'); } if ($model->responder_stream) { throw new HttpException(403, 'Razzd already responded.'); } if ($model->hash && $token['user_id'] != $model->responder_uid) { throw new HttpException(403, 'This razzd for other user.'); } $model->api = true; $model->user_id = $token['user_id']; if ($model->load(['Razz' => $request->get()]) && $model->save()) { return RestApi::response(['id' => $model->id]); } else { RestApi::error($model); } }