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' => '
', 'duration' => sprintf( '
%s
', $this->singleCourseTemplate->html_duration( $course ) ), 'level' => sprintf( '
%s
', $this->singleCourseTemplate->html_level( $course ) ), 'lesson' => sprintf( '
%s
', $this->singleCourseTemplate->html_count_item( $course, LP_LESSON_CPT ) ), 'quiz' => sprintf( '
%s
', $this->singleCourseTemplate->html_count_item( $course, LP_QUIZ_CPT ) ), 'student' => sprintf( '
%s
', $this->singleCourseTemplate->html_count_student( $course ) ), 'wrapper_end' => '
', ] ); $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' => '
', 'wrapper_inner' => '
', 'image' => $this->singleCourseTemplate->html_image( $course ), 'price' => $this->singleCourseTemplate->html_price( $course ), 'buttons' => Template::combine_components( $section_buttons ), 'featured_review' => $this->singleCourseTemplate->html_feature_review( $course, $user ), 'sidebar' => $this->singleCourseTemplate->html_sidebar( $course ), 'wrapper_inner_end' => '
', 'wrapper_end' => '
', ] ); $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' => '
', 'avatar_instructor' => sprintf( '
%s
', SingleInstructorTemplate::instance()->html_avatar( $instructor, [] ) ), 'instructor' => '
', 'label' => sprintf( '', esc_html__( 'Instructor', 'learnpress' ) ), 'name' => sprintf( '
%s
', $instructor->get_url_instructor(), $singleInstructorTemplate->html_display_name( $instructor ) ), 'instructor_end' => '
', 'wrapper_end' => '
', ], $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' => '
', 'category' => '
', 'label' => sprintf( '', esc_html__( 'Category', 'learnpress' ) ), 'content' => sprintf( '
%s
', $content ), 'category_end' => '
', 'wrapper_end' => '
', ], $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' => '
    ', 'nav_tabs' => '', 'wrapper_end' => '
    ', ]; 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' => '
    ', 'count_students' => sprintf( '
    %s
    ', $singleInstructorTemplate->html_count_students( $author ) ), 'count_courses' => sprintf( '
    %s
    ', $singleInstructorTemplate->html_count_courses( $author ) ), 'wrapper_end' => '
    ', ]; $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; } }