/**
 * プラグイン規定関数::ブロック型で呼び出された場合の処理
 * 動画再生画面を生成する
 *
 * 引数: コースID、セッションID、チャプターID
 *      カンマの後に空白は入れないこと
 * 例) #movieviewer_embed("GDGuide","01","01");
 *
 * @return string 画面(html)
 */
function plugin_movieviewer_embed_convert()
{
    $videoopts = func_get_args();
    $settings = MovieViewerSettings::loadFromYaml(PLUGIN_MOVIEVIEWER_PATH_TO_SETTINGS);
    $cf_settings = $settings->aws['cloud_front'];
    $builder = new MovieViewerAwsCloudFrontUrlBuilder($cf_settings);
    $signed_path_rtmp = $builder->buildVideoRTMPUrl($videoopts[0], $videoopts[1], $videoopts[2], 24 * 60 * 60);
    $signed_path_hls = $builder->buildVideoHLSUrl($videoopts[0], $videoopts[1], $videoopts[2], 24 * 60 * 60);
    $base_uri = plugin_movieviewer_get_base_uri();
    // videojs-contrib-hls.min.js は Firefox on Mac用 (現時点では)
    $embed = <<<EOC
    <link href="//vjs.zencdn.net/5.4/video-js.css" rel="stylesheet">
    <video id="my_video_1" class="video-js vjs-default-skin vjs-big-play-centered" preload="auto" controls width="550" height="319" 
           data-setup='{"techOrder":["flash","html5"]}'>
        <source src="rtmp://{$cf_settings['host']['video']['rtmp']}/cfx/st/&mp4:{$signed_path_rtmp}" type="rtmp/mp4">
        <source src="{$signed_path_hls}" type="application/x-mpegURL">
    </video>
    <p>
    最大化ボタン <img src="{$base_uri}/plugin/movieviewer/assets/images/button-maximize.png"> は再生ボタン <img src="{$base_uri}/plugin/movieviewer/assets/images/button-play.png"> を押した後、表示されます。
    </p>
    <script src="https://vjs.zencdn.net/5.4/video.js"></script>
    <script src="{$base_uri}/plugin/movieviewer/assets/js/videojs-contrib-hls.min.js"></script>    
EOC;
    return $embed;
}
/**
 * [アクション] 動画再生画面を生成し、クライアントに送信する
 *
 * 注意: exitを呼ぶので、処理の最後に呼び出すこと
 *
 * @return void
 */
function plugin_movieviewer_action_show_movie()
{
    date_default_timezone_set("Asia/Tokyo");
    $settings = MovieViewerSettings::loadFromYaml(PLUGIN_MOVIEVIEWER_PATH_TO_SETTINGS);
    $cf_settings = $settings->aws['cloud_front'];
    $target = array("course" => filter_input(INPUT_POST, "course"), "session" => filter_input(INPUT_POST, "session"), "chapter" => filter_input(INPUT_POST, "chapter"));
    try {
        plugin_movieviewer_validate_course_id($target["course"]);
    } catch (MovieViewerValidationException $ex) {
        plugin_movieviewer_abort("指定した内容に誤りがあります。");
    }
    try {
        plugin_movieviewer_validate_session_id($target["session"]);
    } catch (MovieViewerValidationException $ex) {
        plugin_movieviewer_abort("指定した内容に誤りがあります。");
    }
    try {
        plugin_movieviewer_validate_chapter_id($target["chapter"]);
    } catch (MovieViewerValidationException $ex) {
        plugin_movieviewer_abort("指定した内容に誤りがあります。");
    }
    $user_id = plugin_movieviewer_get_auth_manager()->getUserId();
    $current_user = plugin_movieviewer_get_user_repository()->findById($user_id);
    $viewing_periods = plugin_movieviewer_get_viewing_periods_by_user_repository()->findById($user_id);
    $canView = $viewing_periods->canView($target['course'], $target['session']);
    if (!$canView) {
        plugin_movieviewer_abort("この動画は見ることができません。");
    }
    $builder = new MovieViewerAwsCloudFrontUrlBuilder($cf_settings);
    $signed_path_rtmp = $builder->buildVideoRTMPUrl($target['course'], $target['session'], $target['chapter'], 24 * 60 * 60);
    $signed_path_hls = $builder->buildVideoHLSUrl($target['course'], $target['session'], $target['chapter'], 24 * 60 * 60);
    $base_uri = plugin_movieviewer_get_base_uri();
    pkwk_common_headers();
    header('Content-type: text/html');
    print <<<EOC
    <video id="my_video_1" class="video-js vjs-default-skin vjs-big-play-centered" preload="auto" controls width="800" height="500"
           data-setup='{"techOrder":["flash","html5"]}'>
        <source src="rtmp://{$cf_settings['host']['video']['rtmp']}/cfx/st/&mp4:{$signed_path_rtmp}" type="rtmp/mp4">
        <source src="{$signed_path_hls}" type="application/x-mpegURL">
    </video>
    <p>
    最大化ボタン <img src="{$base_uri}/plugin/movieviewer/assets/images/button-maximize.png"> は再生ボタン <img src="{$base_uri}/plugin/movieviewer/assets/images/button-play.png"> を押した後、表示されます。
    </p>
EOC;
    exit;
}