Ejemplo n.º 1
0
								<?php 
_e('Drag & Drop unit elements here', 'cp');
?>
                            </div>

                            <div id="unit-pages">
                                <ul class="sidebar-name unit-pages-navigation">
                                    <li class="unit-pages-title"><span><?php 
_e('Unit Page(s)', 'cp');
?>
</span></li>
									<?php 
if ($unit_pagination) {
    $unit_pages = coursepress_unit_pages($unit_id, $unit_pagination);
} else {
    $unit_pages = coursepress_unit_pages($unit_id);
}
if ($unit_id == 0) {
    $unit_pages = 1;
}
for ($i = 1; $i <= $unit_pages; $i++) {
    ?>
										<li><a href="#unit-page-<?php 
    echo $i;
    ?>
"><?php 
    echo $i;
    ?>
</a><span class="arrow-down"></span></li>
									<?php 
}
        /**
         * Shows the course structure.
         *
         * @since 1.0.0
         */
        function course_structure($atts)
        {
            extract(shortcode_atts(array('course_id' => in_the_loop() ? get_the_ID() : '', 'course' => false, 'free_text' => __('Free', 'cp'), 'free_show' => 'true', 'show_title' => 'no', 'show_label' => 'no', 'label_delimeter' => ': ', 'label_tag' => 'h2', 'show_divider' => 'yes', 'label' => __('Course Structure', 'cp'), 'class' => ''), $atts, 'course_structure'));
            $course_id = (int) $course_id;
            $free_text = sanitize_text_field($free_text);
            $free_show = sanitize_text_field($free_show);
            $free_show = 'true' == $free_show ? true : false;
            $show_title = sanitize_html_class($show_title);
            $show_label = sanitize_html_class($show_label);
            $label_delimeter = sanitize_html_class($label_delimeter);
            $label_tag = sanitize_html_class($label_tag);
            $show_divider = sanitize_html_class($show_divider);
            $label = sanitize_text_field($label);
            $class = sanitize_html_class($class);
            // Saves some overhead by not loading the post again if we don't need to.
            $course = empty($course) ? new Course($course_id) : object_decode($course, 'Course');
            $class = sanitize_html_class($class);
            $label_tag = sanitize_html_class($label_tag);
            $label_delimeter = sanitize_html_class($label_delimeter);
            if ($course->details->course_structure_options == 'on') {
                $content = '';
                $student = new Student(get_current_user_id());
                $existing_student = $student->has_access_to_course($course_id);
                $show_unit = $course->details->show_unit_boxes;
                $preview_unit = $course->details->preview_unit_boxes;
                $show_page = $course->details->show_page_boxes;
                $preview_page = $course->details->preview_page_boxes;
                $current_time = date('Y-m-d', current_time('timestamp', 0));
                $course_start_date = $course->details->course_start_date;
                $enable_links = false;
                if ($current_time >= $course_start_date) {
                    $enable_links = true;
                }
                $units = $course->get_units();
                $content .= '<div class="course-structure-block course-structure-block-' . $course_id . '">';
                if (!empty($label)) {
                    $content .= '<' . $label_tag . ' class="label">' . $label . $label_delimeter . '</' . $label_tag . '>';
                }
                $content .= 'yes' == $show_title ? '<label>' . $this->details->post_title . '</label>' : '';
                if ($units) {
                    ob_start();
                    ?>
					<ul class="tree">
						<li>
							<ul>
								<?php 
                    foreach ($units as $unit) {
                        $unit_class = new Unit($unit->ID);
                        $unit_pagination = cp_unit_uses_new_pagination($unit->ID);
                        if ($unit_pagination) {
                            $unit_pages = coursepress_unit_pages($unit->ID, $unit_pagination);
                        } else {
                            $unit_pages = coursepress_unit_pages($unit->ID);
                        }
                        //$unit_pages	 = $unit_class->get_number_of_unit_pages();
                        //									$modules = Unit_Module::get_modules( $unit->ID );
                        $unit_permalink = Unit::get_permalink($unit->ID);
                        if (isset($show_unit[$unit->ID]) && $show_unit[$unit->ID] == 'on' && $unit->post_status == 'publish') {
                            ?>
										<li>
											<label for="unit_<?php 
                            echo $unit->ID;
                            ?>
" class="course_structure_unit_label <?php 
                            echo $existing_student ? 'single_column' : '';
                            ?>
">
												<?php 
                            $title = '';
                            if ($existing_student && $enable_links) {
                                $title = '<a href="' . $unit_permalink . '">' . $unit->post_title . '</a>';
                            } else {
                                $title = $unit->post_title;
                            }
                            ?>
												<div class="tree-unit-left"><?php 
                            echo $title;
                            ?>
</div>
												<div class="tree-unit-right">

													<?php 
                            if ($course->details->course_structure_time_display == 'on') {
                                ?>
														<span><?php 
                                echo $unit_class->get_unit_time_estimation($unit->ID);
                                ?>
</span>
													<?php 
                            }
                            ?>

													<?php 
                            if (isset($preview_unit[$unit->ID]) && $preview_unit[$unit->ID] == 'on' && $unit_permalink && !$existing_student) {
                                ?>
														<a href="<?php 
                                echo $unit_permalink;
                                ?>
?try" class="preview_option"><?php 
                                echo $free_text;
                                ?>
</a>
													<?php 
                            }
                            ?>
												</div>
											</label>

											<ul>
												<?php 
                            for ($i = 1; $i <= $unit_pages; $i++) {
                                if (isset($show_page[$unit->ID . '_' . $i]) && $show_page[$unit->ID . '_' . $i] == 'on') {
                                    ?>
														<li class="course_structure_page_li <?php 
                                    echo $existing_student ? 'single_column' : '';
                                    ?>
">
															<?php 
                                    $pages_num = 1;
                                    $page_title = $unit_class->get_unit_page_name($i);
                                    ?>

															<label for="page_<?php 
                                    echo $unit->ID . '_' . $i;
                                    ?>
">
																<?php 
                                    $title = '';
                                    if ($existing_student && $enable_links) {
                                        $p_title = isset($page_title) && $page_title !== '' ? $page_title : __('Untitled Page', 'cp');
                                        $title = '<a href="' . trailingslashit($unit_permalink) . trailingslashit('page') . trailingslashit($i) . '">' . $p_title . '</a>';
                                    } else {
                                        $title = isset($page_title) && $page_title !== '' ? $page_title : __('Untitled Page', 'cp');
                                    }
                                    ?>

																<div class="tree-page-left">
																	<?php 
                                    echo $title;
                                    ?>
																</div>
																<div class="tree-page-right">

																	<?php 
                                    if ($course->details->course_structure_time_display == 'on') {
                                        ?>
																		<span><?php 
                                        echo $unit_class->get_unit_page_time_estimation($unit->ID, $i);
                                        ?>
</span>
																	<?php 
                                    }
                                    ?>

																	<?php 
                                    if (isset($preview_page[$unit->ID . '_' . $i]) && $preview_page[$unit->ID . '_' . $i] == 'on' && $unit_permalink && !$existing_student) {
                                        ?>
																		<a href="<?php 
                                        echo $unit_permalink;
                                        ?>
page/<?php 
                                        echo $i;
                                        ?>
?try" class="preview_option"><?php 
                                        echo $free_text;
                                        ?>
</a>
																	<?php 
                                    }
                                    ?>

																</div>
															</label>

															<?php 
                                    ?>
														</li>
													<?php 
                                }
                            }
                            //page visible
                            ?>

											</ul>
										</li>
									<?php 
                        }
                        //unit visible
                    }
                    // foreach
                    ?>
							</ul>
						</li>
					</ul>

					<?php 
                    if ($show_divider == 'yes') {
                        ?>
						<div class="divider"></div>
					<?php 
                    }
                    ?>

					<?php 
                    $content .= trim(ob_get_clean());
                } else {
                }
                $content .= '</div>';
                return $content;
            }
        }
        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 
        }
 function get_unit_page_time_estimation($unit_id, $page_num)
 {
     $unit_pagination = cp_unit_uses_new_pagination($unit_id);
     if ($unit_pagination) {
         $unit_pages = coursepress_unit_pages($unit_id, $unit_pagination);
     } else {
         $unit_pages = coursepress_unit_pages($unit_id);
     }
     //$unit_pages	 = $this->get_number_of_unit_pages();
     $modules = Unit_Module::get_modules($unit_id, $page_num);
     foreach ($modules as $mod) {
         $total_minutes = 0;
         $total_seconds = 0;
         foreach ($modules as $mod) {
             $class_name = $mod->module_type;
             $time_estimation = $mod->time_estimation;
             if (class_exists($class_name)) {
                 if (isset($time_estimation) && $time_estimation !== '') {
                     $estimatation = explode(':', $time_estimation);
                     if (isset($estimatation[0])) {
                         $total_minutes = $total_minutes + intval($estimatation[0]);
                     }
                     if (isset($estimatation[1])) {
                         $total_seconds = $total_seconds + intval($estimatation[1]);
                     }
                 }
             }
         }
         $total_seconds = $total_seconds + $total_minutes * 60;
         //converted everything into minutes for easy conversion back to minutes and seconds
         $minutes = floor($total_seconds / 60);
         $seconds = $total_seconds % 60;
         if ($minutes >= 1 || $seconds >= 1) {
             return apply_filters('coursepress_unit_time_estimation_minutes_and_seconds_format', $minutes . ':' . ($seconds <= 9 ? '0' . $seconds : $seconds) . ' min');
         } else {
             return apply_filters('coursepress_unit_time_estimation_na_format', __('N/A', 'cp'));
         }
     }
 }
																				</ol>
																			<?php 
        } else {
            ?>
																				<ol>
																					<?php 
            // Cheking for inhertited "show" status and forces a save.
            $section_dirty = false;
            foreach ($units as $unit) {
                $unit_class = new Unit($unit->ID);
                $unit_pages = $unit_class->get_number_of_unit_pages();
                $unit_pagination = cp_unit_uses_new_pagination($unit->ID);
                if ($unit_pagination) {
                    $unit_pages = coursepress_unit_pages($unit->ID, $unit_pagination);
                } else {
                    $unit_pages = coursepress_unit_pages($unit->ID);
                }
                $modules = Unit_Module::get_modules($unit->ID);
                ?>

																						<li class="<?php 
                echo $unit->post_status == 'publish' ? 'enabled_unit' : 'disabled_unit';
                ?>
">

																							<label for="unit_<?php 
                echo $unit->ID;
                ?>
">
																								<div class="tree-unit-left"><?php 
                echo $unit->post_status != 'publish' ? __('[draft] ', 'cp') : '';