Current File : /home/escuelai/public_html/wp-content/plugins/learnpress/inc/templates/class-lp-template-course.php |
<?php
use LearnPress\Helpers\Template;
use LearnPress\Models\CourseModel;
use LearnPress\Models\UserItems\UserCourseModel;
use LearnPress\Models\UserModel;
use LearnPress\TemplateHooks\Course\SingleCourseTemplate;
use LearnPress\TemplateHooks\UserItem\UserCourseTemplate;
/**
* Class LP_Course_Template
*
* Groups templates related course and items
*
* @since 3.x.x
*/
class LP_Template_Course extends LP_Abstract_Template {
/**
* @var LP_Course
*/
public $course = null;
/**
* LP_Template_Course constructor.
*/
public function __construct() {
parent::__construct();
add_action( 'the_post', array( $this, 'get_course' ) );
}
public function get_course() {
// global $post;
$this->course = learn_press_get_course();
}
public function course_sidebar_preview() {
learn_press_get_template( 'single-course/sidebar/preview' );
}
public function course_buttons() {
global $lp_user;
$lp_user = learn_press_get_current_user();
learn_press_get_template( 'single-course/buttons' );
}
public function course_graduation() {
$user = learn_press_get_current_user();
$course = learn_press_get_course();
if ( ! $user || ! $course ) {
return;
}
if ( ! $user->has_finished_course( $course->get_id() ) ) {
return;
}
$graduation = $user->get_course_grade( $course->get_id() );
learn_press_get_template( 'single-course/graduation', array( 'graduation' => $graduation ) );
}
/**
* Show button retry course
*
* @throws Exception
*/
public function button_retry( $course = null ) {
$user = learn_press_get_current_user();
if ( empty( $course ) ) {
$course = learn_press_get_course();
}
if ( ! $user || ! $course ) {
return;
}
$can_retake_times = $user->can_retry_course( $course->get_id() );
// Course has no items
if ( empty( $course->count_items() ) ) {
return;
}
if ( $can_retake_times ) {
learn_press_get_template(
'single-course/buttons/retry',
array( 'can_retake_times' => $can_retake_times )
);
}
}
public function course_media_preview() {
$course = learn_press_get_course();
echo wp_kses_post( $course->get_image() );
}
/**
* @param LP_Quiz $item
*/
public function quiz_meta_questions( $item ) {
$count = $item->count_questions();
printf(
'<span class="item-meta count-questions">%s</span>',
sprintf( _n( '%1$d question', '%1$d questions', $count, 'learnpress' ), $count )
);
}
/**
* @param LP_Quiz|LP_Lesson $item
*/
public function item_meta_duration( $item ) {
$duration = learn_press_get_post_translated_duration( $item->get_id(), false );
if ( $duration ) {
echo '<span class="item-meta duration">' . $duration . '</span>';
}
}
/**
* @var LP_Course_Item $item
*/
public function quiz_meta_final( $item ) {
$course = $item->get_course();
if ( ! $course || ! $course->is_final_quiz( $item->get_id() )
|| $course->get_evaluation_type() != 'evaluate_final_quiz' ) {
return;
}
echo '<span class="item-meta final-quiz">' . esc_html__( 'Final', 'learnpress' ) . '</span>';
}
public function course_button() {
echo '[COURSE BUTTON]';
}
public function course_title() {
echo '[COURSE TITLE]';
}
public function courses_top_bar() {
learn_press_get_template( 'courses-top-bar' );
}
/**
* Display price or free of course, not button, it is label.
*
* @return void
* @since 4.0.0
* @version 1.0.3
*/
public function course_pricing() {
$course = learn_press_get_course();
$user = learn_press_get_current_user();
$courseModel = CourseModel::find( $course->get_id(), true );
$can_purchase = $courseModel->can_purchase( UserModel::find( $user->get_id(), true ) );
$userCourseModel = UserCourseModel::find( $user->get_id(), $course->get_id(), true );
if ( get_current_user_id() ) {
if ( $userCourseModel ) {
if ( $userCourseModel->has_enrolled() ) {
return;
} elseif ( $can_purchase instanceof WP_Error ) {
return;
}
}
}
$price_html = $course->get_course_price_html();
learn_press_get_template( 'single-course/price', compact( 'course', 'user', 'price_html' ) );
}
/**
* Template purchase course button
*
* @editor tungnx
* @modify 4.1.3.1
* @throws Exception
* @version 4.0.2
*/
public function course_purchase_button( $course = null ) {
$singleCourseTemplate = SingleCourseTemplate::instance();
$course = CourseModel::find( get_the_ID(), true );
$user = UserModel::find( get_current_user_id(), true );
echo $singleCourseTemplate->html_btn_purchase_course( $course, $user );
return;
$can_show = true;
if ( empty( $course ) ) {
$course = learn_press_get_course();
}
if ( ! $course ) {
return;
}
$user = learn_press_get_current_user();
if ( ! $user || ! $course ) {
$can_show = false;
}
if ( $course->is_free() ) {
return;
}
$can_purchase = $user->can_purchase_course( $course->get_id() );
if ( is_wp_error( $can_purchase ) ) {
if ( in_array(
$can_purchase->get_error_code(),
[ 'order_processing', 'course_out_of_stock', 'course_is_no_required_enroll_not_login' ]
) ) {
Template::print_message( $can_purchase->get_error_message(), 'warning' );
}
$can_show = false;
}
// Hook since 4.1.3
$can_show = apply_filters( 'learnpress/course/template/button-purchase/can-show', $can_show, $user, $course );
if ( ! $can_show ) {
return;
}
$args_load_tmpl = array(
'template_name' => 'single-course/buttons/purchase.php',
'template_path' => '',
'default_path' => '',
);
$args_load_tmpl = apply_filters( 'learn-press/tmpl-button-purchase-course', $args_load_tmpl, $course );
learn_press_get_template(
$args_load_tmpl['template_name'],
array(
'user' => $user,
'course' => $course,
),
$args_load_tmpl['template_path'],
$args_load_tmpl['default_path']
);
}
/**
* Show button enroll course
*
* @editor tungnx
* @modify 4.1.3.1
* @throws Exception
* @version 4.0.3
*/
public function course_enroll_button( $course = null ) {
$singleCourseTemplate = SingleCourseTemplate::instance();
$course = CourseModel::find( get_the_ID(), true );
$user = UserModel::find( get_current_user_id(), true );
echo $singleCourseTemplate->html_btn_enroll_course( $course, $user );
return;
$can_show = true;
$user = learn_press_get_current_user();
if ( empty( $course ) ) {
$course = learn_press_get_course();
}
$error_code = '';
try {
if ( ! $course || ! $user ) {
throw new Exception( 'User or Course is not exists' );
}
// User can not enroll course.
$can_enroll_course = $user->can_enroll_course( $course->get_id(), false );
if ( ! $can_enroll_course->check ) {
$error_code = $can_enroll_course->code;
throw new Exception( $can_enroll_course->message );
}
if ( $user->has_finished_course( $course->get_id() ) ) {
$error_code = 'course_is_finished';
throw new Exception( __( 'Course is finished', 'learnpress' ) );
}
} catch ( Throwable $e ) {
if ( ! in_array( $error_code, [ 'course_is_enrolled', 'course_can_retry' ] ) ) {
if ( $course && $course->is_free() ) {
Template::print_message( $e->getMessage(), 'warning' );
}
}
$can_show = false;
}
$can_show = apply_filters( 'learnpress/course/template/button-enroll/can-show', $can_show, $user, $course );
if ( ! $can_show ) {
return;
}
$args = array(
'user' => $user,
'course' => $course,
);
learn_press_get_template( 'single-course/buttons/enroll.php', $args );
}
public function course_extra_requirements( $course_id ) {
$course = LP_Course::get_course( $course_id );
if ( ! $course ) {
return;
}
$requirements = apply_filters(
'learn-press/course-extra-requirements',
$course->get_extra_info( 'requirements' ),
$course_id
);
if ( ! $requirements ) {
return;
}
learn_press_get_template(
'single-course/sidebar/course-extra',
array(
'type' => 'requirements',
'title' => esc_html__( 'Requirements', 'learnpress' ),
'content' => $requirements,
)
);
}
public function course_extra_key_features( $course_id ) {
$course = LP_Course::get_course( $course_id );
if ( ! $course ) {
return;
}
$key_features = apply_filters(
'learn-press/course-extra-key-features',
$course->get_extra_info( 'key_features' ),
$course_id
);
if ( ! $key_features ) {
return;
}
learn_press_get_template(
'single-course/sidebar/course-extra',
array(
'type' => 'key-features',
'title' => esc_html__( 'Key features', 'learnpress' ),
'content' => $key_features,
)
);
}
public function course_extra_target_audiences( $course_id ) {
$course = LP_Course::get_course( $course_id );
if ( ! $course ) {
return;
}
$target_audiences = apply_filters(
'learn-press/course-extra-target-audiences',
$course->get_extra_info( 'target_audiences' ),
$course_id
);
if ( ! $target_audiences ) {
return;
}
learn_press_get_template(
'single-course/sidebar/course-extra',
array(
'type' => 'target-audiences',
'title' => esc_html__( 'Target audiences', 'learnpress' ),
'content' => $target_audiences,
)
);
}
/**
* Show template "continue" button con single course
*
* @throws Exception
* @modify 4.1.3.1
* @version 4.0.4
* @since 4.0.0
*/
public static function course_continue_button( $args = [] ) {
$course_id_param = $args['course-id'] ?? 0;
$course_id = ! empty( $course_id_param ) ? $course_id_param : get_the_ID();
$courseModel = CourseModel::find( $course_id, true );
$user_id = get_current_user_id();
try {
if ( ! $user_id || ! $courseModel ) {
throw new Exception( 'User or Course not exists!' );
}
$userCourseModel = UserCourseModel::find( $user_id, $courseModel->get_id(), true );
if ( ! $userCourseModel || ! $userCourseModel->has_enrolled() ) {
throw new Exception( 'User not enrolled course' );
}
if ( $userCourseModel->has_finished() ) {
throw new Exception( 'User has finished course' );
}
// Course has no items
if ( empty( $courseModel->get_total_items() ) ) {
throw new Exception( 'Course no any item' );
}
// Do not display continue button if course is block duration
if ( $userCourseModel->timestamp_remaining_duration() === 0 ) {
throw new Exception( 'Course is blocked' );
}
$section = [
'start' => '<div>',
'link' => UserCourseTemplate::instance()->html_btn_continue( $userCourseModel ),
'end' => '</div>',
];
echo Template::combine_components( $section );
} catch ( Throwable $e ) {
}
}
public function course_finish_button( $course = null ) {
$user = learn_press_get_current_user();
if ( empty( $course ) ) {
$course = learn_press_get_course();
}
if ( ! $course ) {
return;
}
// Course has no items
if ( empty( $course->count_items() ) ) {
return;
}
$check = $user->can_show_finish_course_btn( $course );
if ( 'success' !== $check['status'] ) {
return;
}
learn_press_get_template(
'single-course/buttons/finish.php',
array(
'course' => $course,
'user' => $user,
)
);
}
/**
* Button course external link
*
* @throws Exception
* @editor tungnx
* @modify 4.1.3
*/
public function course_external_button( $course = null ) {
if ( empty( $course ) ) {
$course = learn_press_get_course();
}
$user = learn_press_get_current_user();
if ( ! $course ) {
return;
}
$link = $course->get_external_link();
if ( empty( $link ) || $user->has_purchased_course( $course->get_id() ) ) {
return;
}
$user = learn_press_get_current_user();
if ( $user && ! $user->has_enrolled_or_finished( $course->get_id() ) ) {
// Remove all another buttons
learn_press_remove_course_buttons();
learn_press_get_template( 'single-course/buttons/external-link.php' );
// Add back other buttons for other courses
add_action( 'learn-press/after-course-buttons', 'learn_press_add_course_buttons' );
}
}
public function popup_header() {
$user = learn_press_get_current_user();
$course = learn_press_get_course();
if ( ! $user || ! $course ) {
return;
}
$percentage = 0;
$total_items = 0;
$completed_items = 0;
$course_data = $user->get_course_data( $course->get_id() );
if ( $course_data && ! empty( $course_data->get_user_id() ) && ! $course->is_no_required_enroll() ) {
$course_results = $course_data->get_result();
$completed_items = $course_results['completed_items'];
$total_items = $course_results['count_items'];
$percentage = $course_results['count_items'] ? absint( $course_results['completed_items'] / $course_results['count_items'] * 100 ) : 0;
}
learn_press_get_template( 'single-course/content-item/popup-header', compact( 'user', 'course', 'total_items', 'completed_items', 'percentage' ) );
}
public function popup_sidebar() {
learn_press_get_template( 'single-course/content-item/popup-sidebar' );
}
/**
* Get single item's course
*/
public function popup_content() {
learn_press_get_template( 'single-course/content-item/popup-content' );
}
public function popup_footer() {
learn_press_get_template( 'single-course/content-item/popup-footer' );
}
public function popup_footer_nav() {
$course = learn_press_get_course();
if ( ! $course ) {
return;
}
$next_item = false;
$prev_item = false;
$next_id = $course->get_next_item();
$prev_id = $course->get_prev_item();
if ( $next_id ) {
$next_item = $course->get_item( $next_id );
if ( $next_item instanceof LP_Course_Item ) {
$next_item->set_course( $course->get_id() );
}
}
if ( $prev_id ) {
$prev_item = $course->get_item( $prev_id );
if ( $prev_item instanceof LP_Course_Item ) {
$prev_item->set_course( $course->get_id() );
}
}
if ( ! $prev_item && ! $next_item ) {
return;
}
learn_press_get_template(
'single-course/content-item/nav.php',
array(
'next_item' => $next_item,
'prev_item' => $prev_item,
)
);
}
/**
* Display course curriculum.
*
* @since 4.1.6
* @since 4.2.5.5 remove code load old template user for course curriculum load page instead of via AJAX.
* @version 1.0.2
*/
public function course_curriculum() {
/**
* @var CourseModel $lpCourseModel
*/
global $lpCourseModel;
$courseModel = CourseModel::find( get_the_ID(), true );
if ( $lpCourseModel instanceof CourseModel ) {
$courseModel = $lpCourseModel;
}
$course_item = LP_Global::course_item();
$userModel = UserModel::find( get_current_user_id(), true );
$singleCourseTemplate = SingleCourseTemplate::instance();
echo $singleCourseTemplate->html_curriculum( $courseModel, $userModel );
}
/**
* Display course curriculum.
*
* @since 4.1.6
* @since 4.2.5.5 remove code load old template user for course curriculum load page instead of via AJAX.
* @version 1.0.2
*/
public function course_curriculum_bk() {
/**
* @var CourseModel $lpCourseModel
*/
global $lpCourseModel;
$course_item = LP_Global::course_item();
if ( $course_item ) { // Check if current item is viewable
$course_id = 0;
if ( $lpCourseModel ) {
$course_id = $lpCourseModel->get_id();
}
$item_id = (int) $course_item->get_id();
$section_id = LP_Section_DB::getInstance()->get_section_id_by_item_id( $item_id, $course_id );
}
?>
<div class="learnpress-course-curriculum" data-section="<?php echo esc_attr( $section_id ?? '' ); ?>"
data-id="<?php echo esc_attr( $item_id ?? '' ); ?>">
<?php lp_skeleton_animation_html( 10 ); ?>
</div>
<?php
}
/**
* Get template content item's course
*/
public function course_content_item() {
learn_press_get_template( 'single-course/content-item' );
}
public function courses_loop_item_meta() {
learn_press_get_template( 'loop/course/meta' );
}
public function courses_loop_item_info_begin() {
learn_press_get_template( 'loop/course/info-begin' );
}
public function courses_loop_item_info_end() {
learn_press_get_template( 'loop/course/info-end' );
}
public function courses_loop_item_price() {
$course = learn_press_get_course();
if ( ! $course ) {
return;
}
$price_html = $course->get_course_price_html();
learn_press_get_template( 'loop/course/price', compact( 'course', 'price_html' ) );
}
public function begin_courses_loop() {
learn_press_get_template( 'loop/course/loop-begin.php' );
}
public function end_courses_loop() {
learn_press_get_template( 'loop/course/loop-end.php' );
}
public function course_item_content() {
$course = learn_press_get_course();
if ( ! $course ) {
return;
}
$item = LP_Global::course_item();
/**
* Fix only for WPBakery load style inline
* custom CSS is provided, load inline style.
*
* @editor tuanta
* @since 3.2.8.1
*/
$shortcodes_custom_css = get_post_meta( $item->get_id(), '_wpb_shortcodes_custom_css', true );
if ( ! empty( $shortcodes_custom_css ) ) {
$shortcodes_custom_css = strip_tags( $shortcodes_custom_css );
echo '<style type="text/css" data-type="vc_shortcodes-custom-css">';
echo wp_kses_post( $shortcodes_custom_css );
echo '</style>';
}
// End
$timestamp_remaining = $course->timestamp_remaining_duration();
if ( $timestamp_remaining > 0 ) {
echo '<input type="hidden" name="lp-course-timestamp-remaining" value="' . esc_attr( $timestamp_remaining ) . '">';
}
// End
$item_template_name = learn_press_locate_template( 'single-course/content-item-' . $item->get_item_type() . '.php' );
if ( file_exists( $item_template_name ) ) {
learn_press_get_template( 'single-course/content-item-' . $item->get_item_type() . '.php' );
} else {
echo esc_html( sprintf( 'File %s not exists', $item_template_name ) );
}
}
public function item_lesson_title() {
$item = LP_Global::course_item();
$format = $item->get_format();
$format_template = learn_press_locate_template( "content-lesson/{$format}/title.php" );
if ( 'standard' !== $format && file_exists( $format_template ) ) {
include $format_template;
return;
}
learn_press_get_template( 'content-lesson/title.php', array( 'lesson' => $item ) );
}
public function item_lesson_content() {
$item = LP_Global::course_item();
$format = $item->get_format();
$format_template = learn_press_locate_template( "content-lesson/{$format}/content.php" );
if ( 'standard' !== $format && file_exists( $format_template ) ) {
include $format_template;
return;
}
do_action( 'learn-press/lesson-start', $item );
Template::instance()->get_frontend_template( 'content-lesson/content.php', array( 'lesson' => $item ) );
}
/**
* @deprecated 4.1.7.2
*/
/*public function item_quiz_content() {
$item = LP_Global::course_item();
learn_press_get_template( 'content-quiz/js.php' );
}*/
/**
* @deprecated 4.1.7.2
*/
public function item_lesson_content_blocked() {
$item = LP_Global::course_item();
learn_press_get_template( 'global/block-content.php' );
}
/**
* Get template button complete lesson
*/
public function item_lesson_complete_button() {
$user = learn_press_get_current_user();
$course = learn_press_get_course();
if ( ! $course ) {
return;
}
try {
$item = LP_Global::course_item();
if ( ! $user || ! $user->is_course_in_progress( $course->get_id() ) ) {
return;
}
// The complete button is not displayed when the course is locked --hungkv--
if ( $user->can_view_content_course( $course->get_id() )->key === LP_BLOCK_COURSE_DURATION_EXPIRE ) {
return;
}
learn_press_get_template(
'content-lesson/button-complete.php',
array(
'user' => $user,
'course' => $course,
'item' => $item,
)
);
} catch ( Throwable $e ) {
error_log( $e->getMessage() );
}
}
public function item_lesson_material() {
$user = learn_press_get_current_user();
$course = learn_press_get_course();
$file_per_page = LP_Settings::get_option( 'material_file_per_page', - 1 );
if ( ! $course || (int) $file_per_page === 0 ) {
return;
}
try {
$item = LP_Global::course_item();
$can_show_tab_material = false;
if ( $course->is_no_required_enroll()
|| $user->has_enrolled_or_finished( $course->get_id() )
|| $user->is_instructor() || $user->is_admin() ) {
$can_show_tab_material = true;
}
if ( ! $can_show_tab_material ) {
return;
}
// The complete button is not displayed when the course is locked --hungkv--
if ( $user->can_view_content_course( $course->get_id() )->key === LP_BLOCK_COURSE_DURATION_EXPIRE ) {
return;
}
$item_id = $item->get_id();
$material = LP_Material_Files_DB::getInstance();
$materials = $material->get_material_by_item_id( $item_id );
if ( ! $materials ) {
return;
}
echo wp_kses_post( do_shortcode( '[learn_press_course_materials]' ) );
} catch ( Throwable $e ) {
error_log( $e->getMessage() );
}
}
/**
* @deprecated 4.1.6.9
*/
/*public function lesson_comment_form() {
$course = learn_press_get_course();
if ( ! $course ) {
return;
}
$lesson = LP_Global::course_item();
if ( ! $lesson ) {
return;
}
if ( $lesson->setup_postdata() ) {
if ( comments_open() || get_comments_number() ) {
add_filter( 'deprecated_file_trigger_error', '__return_false' );
comments_template();
remove_filter( 'deprecated_file_trigger_error', '__return_false' );
}
$lesson->reset_postdata();
}
}*/
/**
* Template show count items
*
* @since 4.0.0
* @version 1.0.2
* @editor tungnx
*/
public function count_object() {
$course = CourseModel::find( get_the_ID(), true );
if ( ! $course ) {
return;
}
$lessons = $course->count_items( LP_LESSON_CPT );
$quizzes = $course->count_items( LP_QUIZ_CPT );
$students = $course->count_students();
$counts = apply_filters(
'learnpress/course/count/items',
array(
'lesson' => sprintf(
'<span class="meta-number">' . _n( '%d lesson', '%d lessons', $lessons, 'learnpress' ) . '</span>',
$lessons
),
'quiz' => sprintf(
'<span class="meta-number">' . _n( '%d quiz', '%d quizzes', $quizzes, 'learnpress' ) . '</span>',
$quizzes
),
'student' => sprintf(
'<span class="meta-number">' . _n( '%d student', '%d students', $students, 'learnpress' ) . '</span>',
$students
),
),
array( $lessons, $quizzes, $students )
);
foreach ( $counts as $object => $count ) {
learn_press_get_template(
'single-course/meta/count',
array(
'count' => $count,
'object' => $object,
)
);
}
}
public function course_extra_boxes() {
$course = LP_Course::get_course( get_the_ID() );
if ( ! $course ) {
return;
}
$boxes = apply_filters(
'learn-press/course-extra-boxes-data',
array(
array(
'title' => __( 'Requirements', 'learnpress' ),
'items' => $course->get_extra_info( 'requirements' ),
),
array(
'title' => __( 'Features', 'learnpress' ),
'items' => $course->get_extra_info( 'key_features' ),
),
array(
'title' => __( 'Target audiences', 'learnpress' ),
'items' => $course->get_extra_info( 'target_audiences' ),
),
)
);
$is_checked = 0;
foreach ( $boxes as $box ) {
if ( ! isset( $box['items'] ) || ! $box['items'] ) {
continue;
}
if ( ! $is_checked ) {
$box['checked'] = true;
$is_checked = true;
}
learn_press_get_template( 'single-course/extra-info', $box );
}
}
public function metarials() {
echo wp_kses_post( do_shortcode( '[learn_press_course_materials]' ) );
}
public function faqs() {
$course = LP_Course::get_course( get_the_ID() );
$faqs = $course->get_faqs();
if ( ! $faqs ) {
return;
}
foreach ( $faqs as $faq ) {
learn_press_get_template( 'single-course/tabs/faqs', $faq );
}
}
public function sidebar() {
}
public function course_featured_review() {
$review_content = get_post_meta( $this->course->get_id(), '_lp_featured_review', true );
if ( ! $review_content ) {
return;
}
$user = learn_press_get_current_user();
if ( ! $user ) {
return;
}
if ( $user->has_enrolled_or_finished( $this->course->get_id() ) ) {
return;
}
learn_press_get_template(
'single-course/featured-review',
array(
'review_content' => $review_content,
'review_value' => 5,
)
);
}
/**
* @deprecated 4.1.7.2
*/
/*public function instructor_socials() {
$instructor = $this->course->get_instructor();
$socials = $instructor->get_profile_socials( $instructor->get_id() );
foreach ( $socials as $social ) {
echo wp_kses_post( $social );
}
}*/
public function has_sidebar() {
$actions = array(
'learn-press/before-course-summary-sidebar',
'learn-press/course-summary-sidebar',
'learn-press/after-course-summary-sidebar',
);
foreach ( $actions as $action ) {
if ( has_action( $action ) ) {
return true;
}
}
return false;
}
// button readmore in archive courses
public function course_readmore() {
?>
<div class="course-readmore">
<a href="<?php the_permalink(); ?>"><?php echo esc_html__( 'View More', 'learnpress' ); ?></a>
</div>
<?php
}
public function course_item_comments() {
global $post;
$course = learn_press_get_course();
if ( ! $course ) {
return;
}
$item = LP_Global::course_item();
if ( ! $item ) {
return;
}
$user = learn_press_get_current_user();
$user_can_view_course = $user->can_view_content_course( $course->get_id() );
$user_can_view_item = $user->can_view_item( $item->get_id(), $user_can_view_course );
if ( ! $user_can_view_item->flag ) {
return;
}
if ( $item->setup_postdata() ) {
if ( comments_open() || get_comments_number() ) {
learn_press_get_template( 'single-course/item-comments' );
}
$item->reset_postdata();
}
}
public function course_comment_template() {
if ( comments_open() || get_comments_number() ) {
add_filter( 'deprecated_file_trigger_error', '__return_false' );
comments_template();
remove_filter( 'deprecated_file_trigger_error', '__return_false' );
}
}
/**
* Show info time handle of user
*
* @throws Exception
*/
public function user_time() {
$user = learn_press_get_current_user();
if ( ! $user ) {
return;
}
if ( ! $user->has_enrolled_or_finished( $this->course->get_id() ) ) {
return;
}
/**
* @var LP_User_Item_Course
*/
$user_course = $user->get_course_data( $this->course->get_id() );
if ( ! $user_course ) {
return;
}
$status = $user_course->get_status();
$start_time = $user_course->get_start_time();
$end_time = $user_course->get_end_time();
$expiration_time = $user_course->get_expiration_time();
$data = [
'status' => $status,
'start_time' => $start_time,
'end_time' => $end_time,
'expiration_time' => $expiration_time,
];
learn_press_get_template(
'single-course/sidebar/user-time',
compact( 'data' )
);
}
/**
* Animation placholder in user-progress file.
* Content will show in class-rest-lazy-load-controller file.
*
* @return void
* @throws Exception
* @author Nhamdv.
*/
public function user_progress() {
if ( ! is_user_logged_in() ) {
return;
}
$course = learn_press_get_course();
$user = learn_press_get_current_user();
if ( ! $course ) {
return;
}
if ( ! $user->has_enrolled_or_finished( $course->get_id() ) ) {
return;
}
if ( LP_LAZY_LOAD_ANIMATION ) {
echo '<div class="lp-course-progress-wrapper">';
echo lp_skeleton_animation_html( 3 );
echo '</div>';
} else {
$course_data = $user->get_course_data( $course->get_id() );
if ( ! $course_data ) {
return;
}
$course_results = $course_data->calculate_course_results();
learn_press_get_template(
'single-course/sidebar/user-progress',
compact( 'user', 'course', 'course_data', 'course_results' )
);
}
}
public function course_extra_boxes_position_control() {
$course = LP_Course::get_course( get_the_ID() );
$user = learn_press_get_current_user();
if ( ! $user || ! $course ) {
return;
}
$enrolled = $user->has_enrolled_course( $course->get_id() );
if ( $enrolled ) {
remove_action(
'learn-press/course-content-summary',
LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes' ),
40
);
} else {
remove_action(
'learn-press/course-content-summary',
LearnPress::instance()->template( 'course' )->func( 'course_extra_boxes' ),
70
);
}
}
/**
* Template for case not any courses
*
* @author Nhamdv
* @since 4.1.2
*/
public function no_courses_found() {
learn_press_get_template( 'global/no-courses-found' );
}
}
return new LP_Template_Course();