Пример #1
0
function plugin_movieviewer_set_global_settings()
{
    $settings = plugin_movieviewer_load_settings();
    $cfg = array("movieviewer_settings" => $settings);
    // $GLOBALSに値が保存される
    set_plugin_messages($cfg);
    // CSRF対策用トークンを生成し、セッションに登録する
    plugin_movieviewer_set_csrf_token();
}
function plugin_movieviewer_qhmcommu_patch_set_global_settings()
{
    $settings = plugin_movieviewer_load_settings();
    $GLOBALS['movieviewer_settings'] = $settings;
}
/**
 * [アクション] 指定した単元のテキストをダウンロードするようLocationヘッダを返す
 *
 * 注意: exitを呼ぶので、処理の最後に呼び出すこと
 *
 * @return void
 */
function plugin_movieviewer_action_download_text()
{
    date_default_timezone_set("Asia/Tokyo");
    $settings = plugin_movieviewer_load_settings();
    $cf_settings = $settings->aws['cloud_front'];
    $target = array("course" => filter_input(INPUT_GET, "course"), "session" => filter_input(INPUT_GET, "session"));
    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("指定した内容に誤りがあります。");
    }
    $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 = $builder->buildTextUrl($target['course'], $target['session']);
    header('Location: ' . $signed_path);
    exit;
}