コード例 #1
0
        public static function get_modules_front($unit_id = 0)
        {
            global $coursepress, $coursepress_modules, $wp, $paged, $_POST;
            if (isset($_GET['resubmit_nonce']) || isset($_GET['resubmit_nonce']) && wp_verify_nonce($_GET['resubmit_nonce'], 'resubmit_answer')) {
                if (isset($_GET['resubmit_answer'])) {
                    $user_id = get_current_user_id();
                    $course_id = (int) $_GET['c'];
                    $unit_id = (int) $_GET['u'];
                    $module_id = (int) $_GET['m'];
                    $response = get_post((int) $_GET['resubmit_answer']);
                    $response_id = false;
                    if (isset($response) && isset($response->post_author) && $response->post_author == get_current_user_ID()) {
                        $response_id = $response->ID;
                        $resubmitted_response = array('ID' => $response_id, 'post_status' => 'private');
                        wp_update_post($resubmitted_response);
                    }
                    Student_Completion::clear_mandatory_answer($user_id, $course_id, $unit_id, $module_id);
                    wp_redirect(add_query_arg(array('resubmitting' => $module_id, 'previous_response' => $response_id), $_GET['resubmit_redirect_to']) . '#module-' . $module_id);
                    exit;
                } else {
                    if (!empty($_GET['resubmit_cancel'])) {
                        $response_id = $_GET['resubmit_cancel'];
                        $response = get_post((int) $response_id);
                        $user_id = get_current_user_id();
                        $course_id = (int) $_GET['c'];
                        $unit_id = (int) $_GET['u'];
                        $module_id = (int) $_GET['m'];
                        if (isset($response) && isset($response->post_author) && $response->post_author == get_current_user_ID()) {
                            $resubmitted_response = array('ID' => $response_id, 'post_status' => 'publish');
                            wp_update_post($resubmitted_response);
                            Student_Completion::record_mandatory_answer($user_id, $course_id, $unit_id, $module_id);
                            wp_redirect($_GET['resubmit_redirect_to'] . '#module-' . $module_id);
                        }
                    }
                }
            }
            $front_save = false;
            $responses = 0;
            $input_modules = 0;
            $paged = isset($wp->query_vars['paged']) ? absint($wp->query_vars['paged']) : 1;
            $unit_pagination = cp_unit_uses_new_pagination((int) $unit_id);
            $modules = self::get_modules($unit_id, $paged);
            $course_id = do_shortcode('[get_parent_course_id]');
            /**
             * @todo: replace with Student_Completion function soon
             */
            cp_set_visited_unit_page($unit_id, $paged, get_current_user_ID(), $course_id);
            //$unit_module_page_number = isset( $_GET['to_elements_page'] ) ? $_GET['to_elements_page'] : 1;
            if (isset($_POST['submit_modules_data_done']) || isset($_POST['submit_modules_data_no_save_done'])) {
                // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); }
                if (isset($_POST['submit_modules_data_done'])) {
                    //wp_redirect( cp_full_url( $_SERVER ). '?saved=ok' );
                    if ($_POST['event_origin'] == 'button') {
                        wp_redirect(get_permalink($course_id) . trailingslashit($coursepress->get_units_slug()) . '?saved=ok');
                        exit;
                    } else {
                        wp_redirect(cp_full_url($_SERVER)) . '?saved=ok';
                        exit;
                    }
                } else {
                    if ($_POST['event_origin'] == 'button') {
                        wp_redirect(trailingslashit(get_permalink($course_id)) . trailingslashit($coursepress->get_units_slug()));
                        exit;
                    } else {
                        wp_redirect(cp_full_url($_SERVER));
                        exit;
                    }
                    /* if ( $paged != 1 ) {
                    	  //wp_redirect( cp_full_url( $_SERVER ) );
                    	  wp_redirect(get_permalink($course_id) . trailingslashit($coursepress->get_units_slug()));
                    	  } else {
                    	  wp_redirect(cp_full_url($_SERVER));
                    	  } */
                }
                exit;
            }
            if (isset($_POST['submit_modules_data_save']) || isset($_POST['submit_modules_data_no_save_save'])) {
                // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); }
                if (isset($_POST['submit_modules_data_save'])) {
                    //wp_redirect( $_SERVER['REQUEST_URI'] . '?saved=ok' );
                    wp_redirect(cp_full_url($_SERVER) . '?saved=ok');
                    exit;
                    //exit;
                } else {
                    //wp_redirect( get_permalink( $unit_id ) . trailingslashit( 'page' ) . trailingslashit( $unit_module_page_number ) );
                }
            }
            if (isset($_POST['save_student_progress_indication'])) {
                wp_redirect(get_permalink($course_id) . trailingslashit($coursepress->get_units_slug()) . '?saved=progress_ok');
                exit;
            }
            ?>

			<form name="modules_form" id="modules_form" enctype="multipart/form-data" method="post" action="<?php 
            echo trailingslashit(get_permalink($unit_id));
            //strtok( $_SERVER["REQUEST_URI"], '?' );
            ?>
" onSubmit="return check_for_mandatory_answers();">
				<!--#submit_bottom-->
				<input type="hidden" id="go_to_page" value=""/>

				<?php 
            if ($unit_pagination) {
                foreach ($modules as $mod) {
                    $class_name = $mod->module_type;
                    if (class_exists($class_name)) {
                        call_user_func($class_name . '::front_main', $mod);
                        if (constant($class_name . '::FRONT_SAVE')) {
                            $front_save = true;
                            if (method_exists($class_name, 'get_response')) {
                                $response = call_user_func($class_name . '::get_response', get_current_user_id(), $mod->ID);
                                if (count($response) > 0) {
                                    $responses++;
                                }
                                $input_modules++;
                            }
                        }
                    }
                }
            } else {
                $pages_num = 1;
                foreach ($modules as $mod) {
                    $class_name = $mod->module_type;
                    if (class_exists($class_name)) {
                        if ($class_name == 'page_break_module') {
                            $pages_num++;
                        } else {
                            if ($pages_num == $paged) {
                                call_user_func($class_name . '::front_main', $mod);
                                if (constant($class_name . '::FRONT_SAVE')) {
                                    $front_save = true;
                                    if (method_exists($class_name, 'get_response')) {
                                        $response = call_user_func($class_name . '::get_response', get_current_user_id(), $mod->ID);
                                        if (count($response) > 0) {
                                            $responses++;
                                        }
                                        $input_modules++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            wp_nonce_field('modules_nonce');
            if ($unit_pagination) {
                $pages_num = coursepress_unit_pages($unit_id, $unit_pagination);
            }
            $is_last_page = coursepress_unit_module_pagination($unit_id, $pages_num, true);
            //check if current unit page is last page
            if (!$coursepress->is_preview($unit_id)) {
                if ($front_save) {
                    if ($input_modules !== $responses) {
                        ?>
							<div class="mandatory_message"><?php 
                        _e('All questions marked with "* Mandatory" require your input.', 'cp');
                        ?>
</div>
							<div class="clearf"></div>
							<input type="hidden" name="unit_id" value="<?php 
                        echo $unit_id;
                        ?>
"/>
							<a id="submit_bottom"></a>
							<?php 
                        if (isset($_POST['submit_modules_data'])) {
                            $form_message = __('The module data has been submitted successfully.', 'coursepress');
                        }
                        if (isset($form_message)) {
                            ?>
<p class="form-info-regular"><?php 
                            echo $form_message;
                            ?>
</p>
							<?php 
                        }
                        ?>


							<input type="submit" class="apply-button-enrolled submit-elements-data-button" name="submit_modules_data_<?php 
                        echo $is_last_page ? 'done' : 'save';
                        ?>
" value="<?php 
                        echo $is_last_page ? __('Done', 'cp') : __('Next', 'cp');
                        ?>
">
							<?php 
                    } else {
                        ?>
							<input type="submit" class="apply-button-enrolled submit-elements-data-button" name="submit_modules_data_no_save_<?php 
                        echo $is_last_page ? 'done' : 'save';
                        ?>
" value="<?php 
                        echo $is_last_page ? __('Done', 'cp') : __('Next', 'cp');
                        ?>
">
							<?php 
                    }
                } else {
                    ?>
						<input type="submit" class="apply-button-enrolled submit-elements-data-button" name="submit_modules_data_no_save_<?php 
                    echo $is_last_page ? 'done' : 'save';
                    ?>
" value="<?php 
                    echo $is_last_page ? __('Done', 'cp') : __('Next', 'cp');
                    ?>
">
						<?php 
                }
            }
            coursepress_unit_module_pagination($unit_id, $pages_num);
            ?>
				<div class="fullbox"></div>
				<?php 
            if (!isset($_GET['try'])) {
                ?>
					<a href="" id="save_student_progress" class="save_progress"><?php 
                _e('Save Progress & Exit', 'cp');
                ?>
</a>
				<?php 
            }
            ?>
			</form>

			<?php 
        }