function __construct($course_id, $session_id) { $this->course_id = $course_id; $this->session_id = $session_id; $courses = plugin_movieviewer_get_courses_repository()->find(); $this->_course = $courses->getCourse($this->course_id); }
function __construct($course_id, $pack_number, $session_ids, $fixed_price, $discount_price, $report_form_id) { $this->_course_id = $course_id; $this->_pack_number = $pack_number; $this->_session_ids = $session_ids; $this->_fixed_price = $fixed_price; $this->_discount_price = $discount_price; $this->_report_form_id = $report_form_id; $courses = plugin_movieviewer_get_courses_repository()->find(); $this->_course = $courses->getCourse($this->_course_id); }
private function getItemNames($request) { $item_names = array(); $courses = plugin_movieviewer_get_courses_repository()->find(); foreach ($request->getItemsByCourse() as $course_id => $items) { $course = $courses->getCourse($course_id); foreach ($items as $item) { $session = $course->getSession($item->session_id); $item_names[] = "{$course->describe()} {$session->describe()}"; } } return $item_names; }
/** * プラグイン規定関数::ブロック型で呼び出された場合の処理 * 認証済みの場合: 再視聴対象選択画面を生成する * 未認証の場合: エラー画面を生成する * * 引数: なし * * @return string 画面(html) */ function plugin_movieviewer_review_convert() { try { $user = plugin_movieviewer_get_current_user(); } catch (MovieViewerRepositoryObjectNotFoundException $ex) { return plugin_movieviewer_convert_error_response("ログインが必要です。"); } $plugin_args = func_get_args(); try { plugin_movieviewer_review_assert_plugin_arguments($plugin_args); } catch (Exception $ex) { return plugin_movieviewer_convert_error_response("プラグインの引数が設定されていません。"); } $start_page_bank = $plugin_args[0]; $start_page_credit = $plugin_args[1]; $viewing_periods = plugin_movieviewer_get_viewing_periods_by_user_repository()->findById($user->id); $requests_not_yet_confirmed = plugin_movieviewer_get_review_pack_purchase_request_repository()->findNotYetConfirmed($user->id); $hsc = "plugin_movieviewer_hsc"; // 期限の切れているものをリストアップ $viewing_periods = $viewing_periods->getExpiredPeriods(); // コースごとに分類 $viewing_periods_by_course = MovieViewerViewingPeriod::sortByCourse($viewing_periods); $courses = plugin_movieviewer_get_courses_repository()->find(); $content_courses = ""; foreach ($viewing_periods_by_course as $course_id => $periods) { $course = $courses->getCourse($course_id); $content_periods = ""; foreach ($periods as $period) { if (MovieViewerReviewPackPurchaseRequest::requestsHasItem($requests_not_yet_confirmed, $course_id, $period->session_id)) { continue; } $session = $course->getSession($period->session_id); $field_id = "{$hsc($course->id)}_{$hsc($session->id)}"; $content_periods .= <<<TEXT <label class='movie-session' for="{$field_id}">{$session->describe()}</label> <input class='movie-session' type="checkbox" name="sessions" id="{$field_id}" value="{$field_id}"> TEXT; } if ($content_periods === "") { continue; } $content_course = <<<TEXT <div class='movieviewer-course'> <h3>{$hsc($course->name)}</h3> <fieldset style='border: none;'> {$content_periods} </fieldset> </div> TEXT; $content_courses .= $content_course; } $uri_start_bank = plugin_movieviewer_get_script_uri() . "?{$start_page_bank}&purchase_method=bank"; $uri_start_credit = plugin_movieviewer_get_script_uri() . "?{$start_page_credit}&purchase_method=credit"; $buttons_payment = <<<TEXT <a href="{$uri_start_bank}" class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'>銀行振り込みで申し込み</a> TEXT; $settings = plugin_movieviewer_get_global_settings(); if ($settings->payment->isCreditEnabled()) { $buttons_payment .= <<<TEXT <a href="{$uri_start_credit}" class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'>クレジットカードで申し込み</a> TEXT; } $content = <<<TEXT <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script> <link href="https://code.jquery.com/ui/1.12.0/themes/cupertino/jquery-ui.css" rel="stylesheet"> <script src="plugin/movieviewer/assets/js/movieviewer_review.js"></script> <link href="plugin/movieviewer/assets/css/movieviewer.css" rel="stylesheet"> <link href="plugin/movieviewer/assets/css/movieviewer_review.css" rel="stylesheet"> <style> </style> <h2>再視聴可能な単元</h2> <p> 再視聴したい単元を選択して、申し込みボタンを押してください。 </p> <p> <ul style='margin-left:0;'> <li>1回にお申込みいただける回数は最大4回分までです。 <li>ご入金後のキャンセル、変更はできません。 <li>視聴可能な単元(通常受講分)がある場合、平行してご覧いただけます。 </ul> </p> {$content_courses} <div style="margin-top:10px;"> {$buttons_payment} <ul style='margin-left:0;margin-top:1.5em;'> <li>再視聴が可能な期間は、1ヵ月のみです。ご入金確認後、約1週間後から視聴が 可能になります。<br>確定した期間については、マイページにてご確認ください。ご自身で期間を指 定することはできません。 <li>複数回の再視聴をお申込みの場合、すべて同時視聴となり、視聴可能期間は 1ヵ月のみとなります。<br>第1回から第4回までを1回分1ヵ月ずつずらして4か月ご覧になりたい場合は、 お手数ですが1回分ずつお申込み下さい。<br>第1回の再視聴が終了してから第2回をお申込みいただくか、 再視聴期間が終わる頃に第2回をお申込み下さい。 </ul> </div> TEXT; return $content; }
/** * [ブロック] 視聴期限から単元の一覧を生成する * * @param array $viewing_periods 視聴期限 * * @return string 単元の一覧(html) */ function plugin_movieviewer_convert_render_courses($viewing_periods) { if (count($viewing_periods) == 0) { return "<div>対象の動画はありません。</div>"; } $body_courses = ""; $body_course = ""; $current_course_id = ""; $hsc = "plugin_movieviewer_hsc"; $courses = plugin_movieviewer_get_courses_repository()->find(); $timezone = plugin_movieviewer_get_global_settings()->timezone; $date_now = new DateTime(null, $timezone); foreach ($viewing_periods as $period) { $isValid = $period->isValid($date_now); $course = $courses->getCourse($period->course_id); $session = $course->getSession($period->session_id); $body_chapters = ""; foreach ($session->chapters as $chapter) { $list_item = $hsc($chapter->describe()); if ($isValid) { $list_item = <<<TEXT <a href="#" onclick="return movieviewer_showMovie('{$hsc($course->name)}', '{$hsc($session->describe())}', '{$hsc($chapter->describe())}', '{$hsc($course->id)}', '{$hsc($session->id)}', '{$hsc($chapter->id)}');">{$hsc($chapter->describe())}</a> TEXT; } $body_chapters .= <<<TEXT <li>{$list_item}</li> TEXT; } if ($isValid) { $action = <<<TEXT <button class="movieviewer-course-text-download" id="{$hsc($course->id)}_{$hsc($session->id)}_text_download" style="position:absolute;right:1em;"> <span>テキストダウンロード</span> </button> TEXT; } $body_session = <<<TEXT <div style="position: relative;"> <h4 class="movieviewer-course-title" id="{$hsc($course->id)}_{$hsc($session->id)}_title"> <span>{$hsc($session->describe())}</span> <button class="movieviewer-course-show-chapters" id="{$hsc($course->id)}_{$hsc($session->id)}_show_chapters"> <span>チャプター一覧</span> </button> {$action} </h4> <ul id="{$hsc($course->id)}_{$hsc($session->id)}_list" class="list1" style="display:none;"> {$body_chapters} </ul> </div> TEXT; if ($current_course_id !== $course->id) { if ($current_course_id !== "") { $body_courses .= $body_course . "</div>"; } $body_course = <<<TEXT <div class="movieviewer-course" style="margin-bottom:30px;"> <h3>{$hsc($course->name)}</h3> {$body_session} TEXT; $current_course_id = $course->id; } else { $body_course .= $body_session; } } if ($body_course !== "") { $body_courses .= $body_course . "</div>"; } return $body_courses; }
/** * [ブロック] 申し込みの詳細を生成する * * @param MovieViewerSettings $settings プラグインの設定 * @param MovieViewerReviewPackPurchaseRequest $request 申し込み * * @return string 申し込みの詳細(html) */ function plugin_movieviewer_review_purchase_start_convert_get_request_details($settings, $request) { $courses = plugin_movieviewer_get_courses_repository()->find(); $itemsByCourse = $request->getItemsByCourse(); $item_description = ""; foreach ($itemsByCourse as $course_id => $items) { $course = $courses->getCourse($course_id); $session_list = ""; foreach ($items as $item) { $session = $course->getSession($item->session_id); $session_list .= "<li>{$session->describe()}</li>"; } $item_description .= <<<TEXT {$course->describe()} <ul style='margin-left:0;'> {$session_list} </ul> TEXT; } $payment_guide = MovieViewerReviewPackPurchasePaymentGuide::create($settings->payment, $request); $hsc = "plugin_movieviewer_hsc"; if ($request->purchase_method === 'bank') { $bank_accounts_with_notes = nl2br($payment_guide->bank_transfer->bank_accounts_with_notes); $content_header_payment = <<<TEXT <tr><th>振込先</th><td>{$bank_accounts_with_notes}</td></tr> TEXT; } else { $acceptable_brands = ""; foreach ($payment_guide->credit_card->acceptable_brands as $brand) { $file_name = "logo_" . strtolower($brand) . ".gif"; $acceptable_brand = <<<TEXT <img src="img/{$file_name}" ALT="{$brand}"> TEXT; $acceptable_brands .= $acceptable_brand; } $content_header_payment = <<<TEXT <tr><th>振込先<br>(利用可能なクレジットカード)</th> <td style='vertical-align:top;'>{$acceptable_brands}</td> </tr> TEXT; } $price_with_notes = plugin_movieviewer_render_price_with_notes($request->getPrice(), "回", false); $content = <<<TEXT <p> <table class="movieviewer-purchase-request-details"> <tr><th>項目</th><td>{$item_description}</td></tr> <tr><th>金額</th><td>{$price_with_notes}</td></tr> {$content_header_payment} <tr><th>振込期限</th><td>{$hsc($payment_guide->deadline->format("Y年m月d日"))}まで</td></tr> </table> </p> TEXT; return $content; }