Пример #1
0
 public function init()
 {
     $assets = dirname(__FILE__) . '/assets';
     $this->assetsPath = Yii::app()->assetManager->publish($assets, false, 1, YII_DEBUG);
     if (empty($this->imageAds)) {
         $this->imageAds = '/web/images/bg_default.png';
     }
     if (empty($this->data)) {
         $data[] = array('file' => 'https://s3.amazonaws.com/jomedia-jwplayer/samples/tears-of-steel.mp4', 'label' => '128K');
         $data[] = array('file' => 'https://s3.amazonaws.com/jomedia-jwplayer/samples/tears-of-steel.mp4', 'label' => '320K VIP');
         $source = json_encode($data);
     }
     $video = VideoModel::model()->findByPk($this->videoId);
     //check xem co phai iphone 3G khong
     $device = Yii::app()->session['device'];
     /*if(!empty($device) && $device['os'] == 'iOS' && (int) Yii::app()->session['deviceOS'] <= 6 ){
           $source = VideoModel::model()->builDataPlayerVideo($this->videoId,null, Yii::app()->params['video.profile.default']['iphone'][0]);
       }else {
           $source = VideoModel::model()->builDataPlayerVideo($this->videoId);
       }*/
     $source = VideoModel::model()->builDataPlayerVideo($this->videoId);
     $image = AvatarHelper::getAvatar("video", $this->videoId, 640);
     $cs = Yii::app()->clientScript;
     $cs->registerScriptFile($this->assetsPath . '/jwplayer.js', CClientScript::POS_END);
     $cs->registerScript('play_video' . $this->id, "\n            jwplayer('" . $this->id . "').setup({\n                width: '" . $this->width . "',\n                height: " . $this->height . ",\n                image: '" . $image . "',\n                sources: {$source},\n                autostart: " . $this->autostart . ",\n                expand: '" . $this->expand . "',\n                primary: '" . $this->primary . "',\n                /*plugins: {\n                    '" . $this->assetsPath . "/vast.js': {\n                      client:'vast',\n                      schedule:{\n                        overlay: { offset: " . $this->offset . ", tag: '" . Yii::app()->createUrl('/player/banner') . "', type:'nonlinear' }\n                      }\n                    }\n                  }*/\n            });\n        ", CClientScript::POS_END);
     if ($this->expand) {
         $cs->registerScript('play_video_expand' . $this->id, "\n            function onPlayerExpandCollapse() {\n\n                if(jwplayer('" . $this->id . "').getFullscreen) {\n                    jwplayer('" . $this->id . "').setFullscreen(false);\n                }\n                if(\$('.video_player').width() <= 745){\n                    \$('.colum2').css({'margin-top':'20px'});\n                    \$('.video_player').css({'height':'540px'});\n                    \$('.video_player').css({'width':'960px'});\n                    \$('#player-holder').removeClass('watch-normal-mode');\n                    \$('#player-holder').addClass('watch-large-mode');\n                    \$('.video_player .colum2').css({'margin-top':'-370px'});\n                    onPlayerExpand();\n                }else{\n                    onPlayerCollapse();\n                    \$('.colum2').css({'margin-top':''});\n                    \$('.video_player').css({'height':'390px'});\n                    \$('.video_player').css({'width':'745px'});\n                    \$('#player-holder').removeClass('watch-large-mode');\n                    \$('#player-holder').addClass('watch-normal-mode');\n                }\n            }\n\n            function onPlayerExpand() {\n              jwplayer('" . $this->id . "').resize(960,540);\n            }\n\n            function onPlayerCollapse() {\n              jwplayer('" . $this->id . "').resize(745,390);\n            }\n            ;\n        ", CClientScript::POS_END);
     }
     //track and log
     $deviceType = 'mobile';
     $isUserLogin = Yii::app()->user->isGuest ? 'false' : 'true';
     $cs->registerScript('play_video_current' . $this->id, "\n        var device_type = '" . $deviceType . "';\n        var listPlayed =Array();\n        var playVideoFlag = true;\n        var logedin = " . $isUserLogin . ";\n        jwplayer().onPlay(function(){\n            console.log(JSON.stringify(check_video_quality()));\n            if(!check_video_quality()){\n             jwplayer('" . $this->id . "').pause();\n            }\n\n        });\n        jwplayer().onBeforePlay(function() {\n\n            playVideoFlag = false;\n        });\n        jwplayer().onTime(function(event) {\n            if(Math.round(event.position) >=5){\n                if(playVideoFlag) {\n                    playVideoFlag = false;\n                    var action = 'Play Video';\n                    if(in_array_item(listPlayed,'video_" . $video->id . "')){\n                        var action = 'Replay Video';\n                    }\n                    var item = 'video_" . $video->id . "';\n                    if(!in_array_item(listPlayed,item)){\n                        listPlayed.push(item);\n                    }\n                    console.log(device_type+'-'+action);\n                    ga('send', 'event', device_type, action,'" . CHtml::encode($video->name . "-" . $video->artist_name . "-" . $video->id) . "');\n                    ajax_load('/player/logVideo',{'id':" . $video->id . "});\n                }\n            }\n        });\n        ", CClientScript::POS_END);
     //check login 720p
     $obj = array("obj_type" => 'video', 'name' => $video->name, 'id' => $video->id, 'artist' => $video->artist_name);
     $urlDetail = URLHelper::makeUrl($obj);
     $lac = Yii::app()->user->getState('last_action');
     $lurl = Yii::app()->user->getState('last_url');
     Yii::app()->user->setState('last_url', null);
     $register_url = Yii::app()->createUrl("account/package");
     $login_url = Yii::app()->createUrl("account/login");
     $js = '';
     if ($lac == '720p' && $lurl == $urlDetail && !Yii::app()->user->isGuest) {
         $js = 'jwplayer().setCurrentQuality(0);';
     }
     $js = 'jwplayer().setCurrentQuality(0);';
     $cs->registerScript('play_video_current_changeQ' . $this->id, "\n\n                jwplayer().onQualityLevels(function(event){\n                    var currQIndex = jwplayer().getCurrentQuality();\n                    var currQL = jwplayer().getQualityLevels();\n                    var bitrate = currQL[currQIndex].label;\n                    if(logedin==false && bitrate=='720p'){\n                        jwplayer().setCurrentQuality(currQIndex+1);\n                    }\n                    jwplayer().setCurrentQuality(currQIndex+1);\n                });\n                jwplayer().onQualityChange(function(event){\n                    var logedin = false;\n\n                    \$.ajax({\n                        url: '/ajax/isAuthenticate',\n                        type: 'post',\n                        data: {fa:'720p',url_return:'" . $urlDetail . "'},\n                        async: false,\n                        dataType: 'json',\n                        success: function(data){\n                            if(data.errorCode==0){\n                                logedin = true;\n                            }\n                        }\n                    })\n                    var currEQIndex = jwplayer().getCurrentQuality();\n                    var currQL = jwplayer().getQualityLevels();\n                    var bitrate = currQL[currEQIndex].label;\n\n                    if(logedin==false && bitrate=='720p'){\n                         var html = 'Quý khách vui lòng đăng ký để nghe miễn phí nội dung chất lượng cao.';\n                            html += '<div class=\"clb ovh\">';\n                            html += '<div class=\"btn-popup btn-popup-green\" style=\"width: 45%; float: left;\">';\n                            html += '<a href=\"  {$register_url} \" class=\"show\" style=\"color: #FFF\">Đăng ký</a>';\n                            html += '</div>';\n                            html += '<div class=\"btn-popup btn-popup-green\" style=\"width: 45%; float: right;\">';\n                            html += '<a href=\"javascript::void();\" onclick=\"Popup.close()\" class=\"show\" style=\"color: #FFF\">Hủy</a>';\n                            html += '</div>';\n                            html += '</div>';\n                            html += '</div>';\n                         Popup.alert(html);\n\n\n                    }\n                });\n            ", CClientScript::POS_END);
     $cs->registerScript('check_current_video' . $this->id, "\n        function check_video_quality(){\n            var anable_play = true;\n            var currEQIndex = jwplayer().getCurrentQuality();\n            var currQL = jwplayer().getQualityLevels();\n            var bitrate = currQL[currEQIndex].label;\n            if(!userSubs){\n                console.log(JSON.stringify(bitrate));\n                if(userPhone && bitrate == '720p'){\n                   return false;\n                }else{\n                }\n            }\n        }\n            ", CClientScript::POS_END);
     parent::init();
 }
Пример #2
0
 public function actionDownload()
 {
     $this->layout = false;
     $contentId = (int) Yii::app()->request->getParam('id');
     $type = Yii::app()->request->getParam('type', 'downloadSong');
     $deviceId = yii::app()->session['deviceId'];
     $downloadUrl = '';
     if ($type == 'downloadVideo') {
         $video = WapVideoModel::model()->findByPk($contentId);
         $downloadUrl = VideoModel::model()->getDownloadUrl($contentId, $deviceId, 'http', true);
         $contentType = 'video/mp4';
         $fileName = $video->name;
         $fileName = Common::makeFriendlyUrl($fileName) . ".mp4";
     } elseif ($type == 'downloadSong') {
         $song = WapSongModel::model()->findByPk($contentId);
         //$downloadUrl = WapSongModel::model()->getNiceDownloadUrl($song->id, $deviceId, 'http', $song->profile_ids, $song->url_key, $song->artist_name);
         //$downloadUrl = WapSongModel::model()->getAudioFileUrl($song->id, $deviceId, 'http', $song->profile_ids);
         $downloadUrl = WapSongModel::model()->getNiceDownloadUrl($song->id, $deviceId, 'http', $song->profile_ids, $song->url_key, $song->artist_name);
         echo '<meta http-equiv="refresh" content="0;url=' . $downloadUrl . '" />';
         exit;
         $contentType = 'audio/mpeg';
         $fileName = $song->name;
         $fileName = Common::makeFriendlyUrl($fileName) . ".mp3";
     }
     echo '<meta http-equiv="refresh" content="0;url=' . $downloadUrl . '" />';
     exit;
     //$this->redirect($downloadUrl);
     //Yii::app()->end();
     //echo '<meta http-equiv="refresh" content="0;url='.$downloadUrl.'" />';
     header("Cache-Control: public");
     header("Content-Description: File Transfer");
     header("Content-Disposition: attachment; filename=" . $fileName);
     header("Content-Type: {$contentType}");
     header("Content-Transfer-Encoding: binary");
     readfile($downloadUrl);
     //Yii::app()->end();
     //Common::DownloadWithName($this->userPhone, $contentId, $type);
     exit;
 }
Пример #3
0
                    <?php 
        foreach ($list_video as $item) {
            ?>
                        <li class="item-video-playlist <?php 
            echo $video->id == $item->id ? 'selected' : '';
            ?>
"
                            id="video-item-<?php 
            echo $i;
            ?>
" rel="<?php 
            echo $item->id;
            ?>
">
                            <?php 
            $playUrl = VideoModel::model()->getVideoFileUrl($item->id, $deviceId, 'rtsp', true);
            $videoPlaylistLink = Yii::app()->createUrl('videoPlaylist/view', array('id' => $content->id, 'url_key' => Common::makeFriendlyUrl($item['name']), 'video_id' => $item->id));
            ?>
                            <a data-toggle="modal" data-freeview="1" data-allowview="3" data-pricev="0" data-priced="0"
                               data-id="39618" data-3g="0" data-hp="0" href="javascript:void(0)"
                               class="thumb-link popup-modal">
                                <?php 
            $avatarImage = CHtml::image(WapVideoModel::model()->getThumbnailUrl(100, $item['id']), 'avatar', array('class' => 'video-avatar', 'align' => 'left'));
            ?>
                                <div class="thumb">
                                    <?php 
            echo $avatarImage;
            ?>
                                </div>
                                <h2><?php 
            echo Formatter::smartCut(CHtml::encode($item['name']), Yii::app()->params['limit_substring_title'], 0);
Пример #4
0
 public function actionGetContentPrice()
 {
     $id = Yii::app()->request->getParam('id');
     $action = Yii::app()->request->getParam('action', 'play_song');
     $phone = Yii::app()->user->getState('msisdn');
     $phone = Formatter::formatPhone($phone);
     $checkCharg24h = WapUserTransactionModel::model()->checkCharging24h($phone, $phone, $id, $action);
     $error = 99;
     $chargPrice = -1;
     if ($checkCharg24h) {
         $chargPrice = 0;
         $error = 0;
     } else {
         switch ($action) {
             case "play_song":
                 $obj = SongModel::model()->findByPk($id);
                 if (!empty($obj)) {
                     $chargPrice = Yii::app()->params['promotion.song.play.unsub'];
                     //$chargPrice = $obj->listen_price;
                     $error = 0;
                 }
                 break;
             case "download_song":
                 $obj = SongModel::model()->findByPk($id);
                 if (!empty($obj)) {
                     $chargPrice = Yii::app()->params['promotion.song.download.unsub'];
                     $error = 0;
                 }
                 break;
             case "play_video":
                 $obj = VideoModel::model()->findByPk($id);
                 if (!empty($obj)) {
                     $chargPrice = Yii::app()->params['promotion.video.play.unsub'];
                     $error = 0;
                 }
                 break;
             case "download_video":
                 $obj = VideoModel::model()->findByPk($id);
                 if (!empty($obj)) {
                     $chargPrice = Yii::app()->params['promotion.video.download.unsub'];
                     $error = 0;
                 }
                 break;
         }
     }
     $return = new stdClass();
     $return->errorCode = $error;
     $return->message = "";
     $return->data = array("price" => $chargPrice);
     header("Content-type: application/json");
     echo json_encode($return);
     Yii::app()->end();
 }
Пример #5
0
 public function actionAjaxMap()
 {
     Yii::import("application.models.web.*");
     $fileId = Yii::app()->request->getParam('fileId');
     $offset = Yii::app()->request->getParam('offset', 0);
     $return = new stdClass();
     $return->error = 0;
     $return->errorMessage = "";
     $return->success = 0;
     $return->data = array();
     try {
         $c = new CDbCriteria();
         $c->condition = "id=:FID";
         $c->params = array(":FID" => $fileId);
         $fileInfo = CopyrightInputFileModel::model()->find($c);
         if (isset($fileInfo)) {
             $content_type = $fileInfo->content_type;
             $c = new CDbCriteria();
             $c->condition = "input_file=:FID";
             $c->params = array(":FID" => $fileId);
             $c->order = "id ASC";
             $c->limit = 1;
             $c->offset = $offset;
             $item = CopyrightInputContentModel::model()->find($c);
             $Log = new KLogger("log_map", KLogger::INFO);
             if (empty($item)) {
                 $return->success = 1;
             } else {
                 $inputId = $item->id;
                 $countMapSong = $countMapVideo = 0;
                 if ($content_type == 'song') {
                     $cr = new CDbCriteria();
                     $cr->condition = "LOWER(TRIM(name)) LIKE :NAME AND cp_id=1";
                     $cr->params = array(":NAME" => strtolower(trim($item->name)) . "%");
                     $items = SongModel::model()->findAll($cr);
                     foreach ($items as $song) {
                         if (isset($song['cp_id']) && $song['cp_id'] == 1) {
                             $songName = strtoupper(trim($song['name']));
                             $songArtist = strtoupper(trim($song['artist_name']));
                             $songArtist = Common::strNormal($songArtist);
                             $itemName = strtoupper(trim($item->name));
                             $itemArtist = strtoupper(trim($item->artist));
                             $itemArtist = Common::strNormal($itemArtist);
                             if ($item->id == 574692) {
                                 $s = strlen($songName) - strlen($itemName);
                                 $d = strrpos($songArtist, $itemArtist);
                                 $Log->LogInfo("songName: {$songName} | itemName:{$itemName} |{$s}|| songArtist:{$songArtist} | itemArtist:{$itemArtist} " . json_encode($d), false);
                             }
                             if (strlen($songName) - strlen($itemName) > 3) {
                                 continue;
                             }
                             if (strrpos($songArtist, $itemArtist) === false) {
                                 continue;
                             }
                             $sql = "\n                                                                    INSERT INTO copyright_content_map(input_id,content_id,content_name,content_artist,content_type)\n                                                                    VALUES(:INPUT_ID,:CONTENT_ID,:CONTENT_NAME,:CONTENT_ARTIST,'song')\n                                                                    ON DUPLICATE KEY UPDATE content_name=:CONTENT_NAME_2, content_artist=:CONTENT_ARTIST_2\n                                                                ";
                             $contentId = $song['id'];
                             $contentName = $song['name'];
                             $contentArtist = $song['artist_name'];
                             $dataCmd = Yii::app()->db->createCommand($sql);
                             $dataCmd->bindParam(":INPUT_ID", $inputId, PDO::PARAM_INT);
                             $dataCmd->bindParam(":CONTENT_ID", $contentId, PDO::PARAM_INT);
                             $dataCmd->bindParam(":CONTENT_NAME", $contentName, PDO::PARAM_STR);
                             $dataCmd->bindParam(":CONTENT_ARTIST", $contentArtist, PDO::PARAM_STR);
                             $dataCmd->bindParam(":CONTENT_NAME_2", $contentName, PDO::PARAM_STR);
                             $dataCmd->bindParam(":CONTENT_ARTIST_2", $contentArtist, PDO::PARAM_STR);
                             $dataCmd->execute();
                             $countMapSong++;
                         }
                     }
                     $return->error = 0;
                     $return->errorMessage = $item->name . ">> Bài hát ({$countMapSong})";
                 }
                 if ($content_type == 'video') {
                     $cr = new CDbCriteria();
                     $cr->condition = "LOWER(TRIM(name)) LIKE :NAME AND cp_id=1";
                     $cr->params = array(":NAME" => strtolower(trim($item->name)) . "%");
                     $items = VideoModel::model()->findAll($cr);
                     foreach ($items as $video) {
                         if (isset($video['cp_id']) && $video['cp_id'] == 1) {
                             $videoName = strtoupper(trim($video['name']));
                             $videoArtist = strtoupper(trim($video['artist_name']));
                             $videoArtist = Common::strNormal($videoArtist);
                             $itemName = strtoupper(trim($item->name));
                             $itemArtist = strtoupper(trim($item->artist));
                             $itemArtist = Common::strNormal($itemArtist);
                             if (strlen($videoName) - strlen($itemName) > 3) {
                                 continue;
                             }
                             if (strrpos($videoArtist, $itemArtist) === false) {
                                 continue;
                             }
                             $sql = "\n                                                                    INSERT INTO copyright_content_map(input_id,content_id,content_name,content_artist,content_type)\n                                                                    VALUES(:INPUT_ID,:CONTENT_ID,:CONTENT_NAME,:CONTENT_ARTIST,'video')\n                                                                    ON DUPLICATE KEY UPDATE content_name=:CONTENT_NAME_2, content_artist=:CONTENT_ARTIST_2\n                                                                ";
                             $contentId = $video['id'];
                             $contentName = $video['name'];
                             $contentArtist = $video['artist_name'];
                             $dataCmd = Yii::app()->db->createCommand($sql);
                             $dataCmd->bindParam(":INPUT_ID", $inputId, PDO::PARAM_INT);
                             $dataCmd->bindParam(":CONTENT_ID", $contentId, PDO::PARAM_INT);
                             $dataCmd->bindParam(":CONTENT_NAME", $contentName, PDO::PARAM_STR);
                             $dataCmd->bindParam(":CONTENT_ARTIST", $contentArtist, PDO::PARAM_STR);
                             $dataCmd->bindParam(":CONTENT_NAME_2", $contentName, PDO::PARAM_STR);
                             $dataCmd->bindParam(":CONTENT_ARTIST_2", $contentArtist, PDO::PARAM_STR);
                             $dataCmd->execute();
                             $countMapVideo++;
                         }
                     }
                     $return->error = 0;
                     $return->errorMessage = $item->name . ">> Video ({$countMapVideo})";
                 }
             }
         }
     } catch (Exception $e) {
         $return->error = 500;
         $return->errorMessage = $e->getMessage();
     }
     echo json_encode($return);
     Yii::app()->end();
 }
Пример #6
0
        <?php 
} elseif ($deactive) {
    $msg = Yii::app()->params['alert_content_limited'];
    $this->widget('application.widgets.touch.common.NotifyMessageWidget', array('msg' => $msg, 'type' => 'video'));
} else {
    ?>
        <div class="poster" id="video-poster"
             style="background: #000 url(<?php 
    echo str_replace('imuzik2013/imuzik2013', 'imuzik2013', WapVideoModel::model()->getThumbnailUrl(320, $video->id));
    ?>
) no-repeat center center; width: 320px;height: 240px; margin: 0 auto">
            <?php 
    if (VideoModel::model()->isHD($video['profile_ids'])) {
        ?>
                <?php 
        $playUrlHD = VideoModel::model()->getVideoFileUrl($video->id, $deviceId, 'http', true, 9);
        ?>
                <div class="_mbx">
                    <div><a class="playHd" href="javascript: void(0)"><span class="vhd">HD</span></a></div>
                </div>
                <script>
                    $(function () {
                        $(".playHd").live("click", function () {
                            $(this).find("span").toggleClass("nhd");
                            var video = document.getElementsByTagName('video')[0];
                            var sources = video.getElementsByTagName('source');
                            if ($(this).find("span").hasClass("nhd")) {
                                sources[0].src = '<?php 
        echo $playUrlHD;
        ?>
';
Пример #7
0
 public function actionCharge()
 {
     $id = Yii::app()->request->getParam('id');
     $video = VideoModel::model()->findByPk($id);
     $action = Yii::app()->request->getParam('action', 'playVideo');
     $deviceId = yii::app()->session['deviceId'];
     $msg = "";
     $playUrl = '';
     if (!$video) {
         $this->redirect($this->createUrl("site/error404"));
     }
     $back_url = Yii::app()->params['base_url'] . Yii::app()->createUrl('video/view', array('id' => $video->id, 'url_key' => Common::makeFriendlyUrl($video->name)));
     if (Yii::app()->user->isGuest) {
         if ($action == 'downloadVideo') {
             $this->redirect($this->createUrl("/account/login", array('back_url' => $back_url)));
             Yii::app()->end();
         } else {
             //cho nghe 5 lan free
             $limit = isset(Yii::app()->session["limit_play"]) ? Yii::app()->session["limit_play"] : 0;
             if ($limit >= 5) {
                 $msg = Yii::app()->params['message']['limit_content'];
             } else {
                 Yii::app()->session["limit_play"] = Yii::app()->session["limit_play"] + 1;
                 $playUrl = VideoModel::model()->getVideoFileUrl($video->id, $deviceId, 'rtsp', true);
                 $this->redirect($this->createUrl("video/view", array('url' => $playUrl, "id" => $id, 'url_key' => $video->url_key)));
             }
             $this->render('play', compact('msg', 'back_url', 'playUrl'));
             exit;
         }
     }
     if ($action == 'downloadVideo' && empty($this->isSub)) {
         $msg = "Quý khách vui lòng đăng ký dịch vụ để tải miễn phí nội dung";
         $this->render('download', compact('msg', 'back_url'));
         exit;
     }
     $bmUrl = Yii::app()->params['bmConfig']['remote_wsdl'];
     $client = new SoapClient($bmUrl, array('trace' => 1));
     if ($action == 'playVideo') {
         $params = array('code' => $video->code, 'from_phone' => Yii::app()->user->getState('msisdn'), 'source_type' => 'wap', 'promotion' => 0);
         $result = $client->__soapCall('playVideo', $params);
     } elseif ($action == 'downloadVideo') {
         $params = array('code' => $video->code, 'from_phone' => yii::app()->user->getState('msisdn'), 'to_phone' => yii::app()->user->getState('msisdn'), 'source_type' => 'wap', 'promotion' => 0, 'smsId' => '', 'noteOptions' => array());
         $result = $client->__soapCall('downloadVideo', $params);
     }
     $errorCode = $result->message;
     // Log url trả về cho user
     if ($errorCode == "success") {
         if ($action == 'playVideo') {
             $playUrl = VideoModel::model()->getVideoFileUrl($video->id, $deviceId, 'rtsp', true);
         } else {
             $playUrl = VideoModel::model()->getDownloadUrl($video->id, $deviceId, 'http', true);
         }
         $this->redirect($this->createUrl("video/view", array('url' => $playUrl, "id" => $id, 'url_key' => $video->url_key)));
     } else {
         $msg = Yii::app()->params['subscribe'][$errorCode];
     }
     $this->render('play', compact('msg', 'back_url', 'playUrl'));
 }