singleCourseTemplate = SingleCourseTemplate::instance();
add_action( 'learn-press/single-course/layout/classic', [ $this, 'section' ] );
}
/**
* Single course layout classic
*
* @param CourseModel $course
*
* @return void
*/
public function section( CourseModel $course ) {
$user = UserModel::find( get_current_user_id(), true );
$content = [
'wrapper' => '
',
'section_header' => $this->header_sections( $course, $user ),
'section_main' => $this->main_sections( $course, $user ),
'wrapper_end' => '
',
];
$sections = apply_filters(
'learn-press/single-course/classic/sections',
[
'wrapper' => '',
'breadcrumb' => Template::html_breadcrumb(),
'course_summary' => '
',
'content' => Template::combine_components( $content ),
'course_summary_end' => '
',
'wrapper_end' => '
',
]
);
echo Template::combine_components( $sections );
}
public function header_sections( $course, $user ): string {
$meta_primary = apply_filters(
'learn-press/single-course/classic/meta-primary/sections',
[
'wrapper' => '',
'instructor' => $this->html_instructor( $course ),
'category' => $this->html_category( $course ),
'wrapper_end' => '
',
]
);
$meta_secondary = apply_filters(
'learn-press/single-course/classic/meta-secondary/sections',
[
'wrapper' => '',
]
);
$header_sections = apply_filters(
'learn-press/single-course/classic/header/sections',
[
'wrapper' => '',
'wrapper_inner' => '
',
'wrapper_content' => '
',
'meta_primary' => Template::combine_components( $meta_primary ),
'title' => $this->singleCourseTemplate->html_title( $course, 'h1' ),
'meta_secondary' => Template::combine_components( $meta_secondary ),
'wrapper_content_end' => '
',
'wrapper_inner_end' => '
',
'wrapper_end' => '
',
]
);
return Template::combine_components( $header_sections );
}
public function main_sections( $course, $user ): string {
$content_left = apply_filters(
'learn-press/single-course/classic/content-left/sections',
[
'wrapper' => '',
'course_tabs' => $this->html_course_tabs( $course, $user ),
'features' => $this->singleCourseTemplate->html_features( $course ),
'target' => $this->singleCourseTemplate->html_target( $course ),
'requirements' => $this->singleCourseTemplate->html_requirements( $course ),
'wrapper_end' => '
',
]
);
$userCourseModel = UserCourseModel::find( get_current_user_id(), $course->get_id(), true );
$userCourseTemplate = UserCourseTemplate::instance();
$btn_continue_and_finish = [];
if ( $userCourseModel instanceof UserCourseModel ) {
$btn_continue_and_finish = [
'btn_continue' => $userCourseTemplate->html_btn_continue( $userCourseModel ),
'btn_finish' => $userCourseTemplate->html_btn_finish( $userCourseModel ),
];
}
$section_buttons = apply_filters(
'learn-press/single-course/model/section-right/info-meta/buttons',
[
'wrapper' => '',
'btn_contact' => $this->singleCourseTemplate->html_btn_external( $course, $user ),
'btn_buy' => $this->singleCourseTemplate->html_btn_purchase_course( $course, $user ),
'btn_enroll' => $this->singleCourseTemplate->html_btn_enroll_course( $course, $user ),
'btn_continue_and_finish' => Template::combine_components( $btn_continue_and_finish ),
'wrapper_end' => '
',
],
$course,
$user
);
$summary_sidebar = apply_filters(
'learn-press/single-course/classic/content-left/sections',
[
'wrapper' => '',
]
);
$main_sections = apply_filters(
'learn-press/single-course/classic/main/sections',
[
'wrapper' => '',
'content_left' => Template::combine_components( $content_left ),
'summary_sidebar' => Template::combine_components( $summary_sidebar ),
'wrapper_end' => '
',
]
);
return Template::combine_components( $main_sections );
}
public function html_instructor( $course ): string {
$instructor = $course->get_author_model();
if ( ! $instructor ) {
return '';
}
$singleInstructorTemplate = SingleInstructorTemplate::instance();
$html_instructor = apply_filters(
'learn-press/course/instructor-html',
[
'wrapper' => '',
],
$course,
$instructor
);
return Template::combine_components( $html_instructor );
}
public function html_category( $course ): string {
$cats = $course->get_categories();
if ( empty( $cats ) ) {
return '';
}
$cat_names = [];
array_map(
function ( $cat ) use ( &$cat_names ) {
$term = sprintf( '%s', get_term_link( $cat->term_id ), $cat->name );
$cat_names[] = $term;
},
$cats
);
$content = implode( ' | ', $cat_names );
$html_category = apply_filters(
'learn-press/course/html-categories',
[
'wrapper' => '',
],
$course,
$cats,
$cat_names
);
return Template::combine_components( $html_category );
}
public function html_course_tabs( $course, $user ): string {
$tabs = apply_filters(
'learn-press/single-course/classic/course-tabs',
[
'overview' => esc_html__( 'Overview', 'learnpress' ),
'curriculum' => esc_html__( 'Curriculum', 'learnpress' ),
'instructor' => esc_html__( 'Instructor', 'learnpress' ),
'materials' => esc_html__( 'Materials', 'learnpress' ),
'faqs' => esc_html__( 'FAQs', 'learnpress' ),
]
);
$active_tab = 'overview';
$lp_user = learn_press_get_current_user();
if ( $lp_user && ! $lp_user instanceof LP_User_Guest ) {
$can_view_course = $lp_user->can_view_content_course( get_the_ID() );
if ( ! $can_view_course->flag ) {
if ( LP_BLOCK_COURSE_FINISHED === $can_view_course->key ) {
learn_press_display_message(
esc_html__( 'You finished this course. This course has been blocked', 'learnpress' ),
'warning'
);
} elseif ( LP_BLOCK_COURSE_DURATION_EXPIRE === $can_view_course->key ) {
learn_press_display_message(
esc_html__( 'This course has been blocked for expiration', 'learnpress' ),
'warning'
);
}
}
}
$html_tabs = [];
if ( $tabs ) {
ob_start();
foreach ( $tabs as $key => $tab ) {
echo '';
}
$html_input = ob_get_clean();
ob_start();
foreach ( $tabs as $key => $tab ) {
$classes = array( 'course-nav course-nav-tab-' . esc_attr( $key ) );
if ( $active_tab === $key ) {
$classes[] = 'active';
}
echo '';
echo '';
echo '';
}
$html_tabs_nav = ob_get_clean();
$tabs_nav = [
'wrapper' => '',
];
ob_start();
foreach ( $tabs as $key => $tab ) {
echo '';
switch ( $key ) {
case 'overview':
echo $this->singleCourseTemplate->html_description( $course );
break;
// case 'curriculum':
// echo $this->singleCourseTemplate->html_curriculum( $course );
// break;
case 'instructor':
echo $this->html_instructor_main( $course, $user );
break;
case 'faqs':
echo $this->singleCourseTemplate->html_faqs( $course );
break;
case 'materials':
echo $this->singleCourseTemplate->html_material( $course );
break;
}
echo '
';
}
$html_tabs_content = ob_get_clean();
$tabs_content = [
'wrapper' => '',
'content' => $html_tabs_content,
'wrapper_end' => '
',
];
$html_tabs = [
'input' => $html_input,
'nav' => Template::combine_components( $tabs_nav ),
'content' => Template::combine_components( $tabs_content ),
];
}
$course_tabs = apply_filters(
'learn-press/single-course/classic/main/course-tabs',
[
'wrapper' => '',
'tabs' => Template::combine_components( $html_tabs ),
'wrapper_end' => '
',
]
);
return Template::combine_components( $course_tabs );
}
public function html_instructor_main( $course, $user ): string {
$singleInstructorTemplate = SingleInstructorTemplate::instance();
$author = $course->get_author_model();
// Instructor
$html_instructor = '';
if ( $author ) {
$html_instructor_image = sprintf(
'%s',
$author->get_url_instructor(),
$author->get_display_name(),
$singleInstructorTemplate->html_avatar( $author )
);
$section_instructor_meta = [
'wrapper' => '',
];
$html_instructor_meta = Template::combine_components( $section_instructor_meta );
$section_instructor_right = apply_filters(
'learn-press/single-course/model/section-instructor/right',
[
'wrapper' => '',
'name' => sprintf(
'
%s',
$author->get_url_instructor(),
$singleInstructorTemplate->html_display_name( $author )
),
'meta' => $html_instructor_meta,
'description' => $singleInstructorTemplate->html_description( $author ),
'social' => $singleInstructorTemplate->html_social( $author ),
'wrapper_end' => '
',
],
$course,
$user
);
$html_instructor_right = Template::combine_components( $section_instructor_right );
$section_instructor = apply_filters(
'learn-press/single-course/model/section-instructor',
[
'wrapper' => '',
'wrapper_info' => '
',
'image' => $html_instructor_image,
'instructor_right' => $html_instructor_right,
'wrapper_info_end' => '
',
'wrapper_end' => '
',
],
$course,
$user
);
$html_instructor = Template::combine_components( $section_instructor );
}
return $html_instructor;
}
}