Пример #1
0
 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]);
 }
Пример #2
0
 /**
  * @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;
 }
Пример #3
0
 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);
     }
 }