PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.1
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.1
4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
learnpress / inc / TemplateHooks / Profile / ProfileCoursesTemplate.php

ProfileCoursesTemplate.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.1, at inc/TemplateHooks/Profile/ProfileCoursesTemplate.php

135 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class ProfileCoursesTemplate.
4 *
5 * @since 4.3.0
6 * @version 1.0.0
7 */
8
9 namespace LearnPress\TemplateHooks\Profile;
10
11 use LearnPress\CourseBuilder\CourseBuilder;
12 use LearnPress\Helpers\Singleton;
13 use LearnPress\Helpers\Template;
14 use LP_Profile;
15
16 class ProfileCoursesTemplate {
17 use Singleton;
18
19 public function init() {
20 add_action( 'learn-press/profile/layout/courses', [ $this, 'layout' ] );
21 }
22
23 /**
24 * @param array $args
25 */
26 public function layout( array $args = [] ) {
27 $courses_created_tab = $args['courses_created_tab'] ?? [];
28 $args_query_user_courses_created = $args['args_query_user_courses_created'] ?? [];
29 $args_query_user_courses_statistic = $args['args_query_user_courses_statistic'] ?? [];
30
31 // Check permission to view courses tab.
32 $profile = LP_Profile::instance();
33 $user_can_view = $profile->current_user_can( 'view-tab-courses' );
34 if ( ! $user_can_view ) {
35 return;
36 }
37
38 ob_start();
39 lp_skeleton_animation_html( 4, 'random', 'height: 30px;border-radius:4px;' );
40 $html_skeleton = ob_get_clean();
41
42 $html_li_tabs = '';
43 $html_filter_contents = '';
44 foreach ( $courses_created_tab as $key => $created ) {
45 $html_li_tabs .= sprintf(
46 '<li><a class="%s" data-tab="%s">%s</a></li>',
47 esc_attr( $key === '' ? 'active' : '' ),
48 esc_attr( $key === '' ? 'all' : $key ),
49 esc_html( $created )
50 );
51
52 $html_filter_contents .= sprintf(
53 '<div class="learn-press-course-tab__filter__content" data-tab="%s" style="%s">%s</div>',
54 esc_attr( $key === '' ? 'all' : $key ),
55 esc_attr( $key !== '' ? 'display: none' : '' ),
56 $html_skeleton
57 );
58 }
59
60 $show_course_builder_link = $profile->is_current_user() && CourseBuilder::can_view_course_builder();
61 $tabs_classes = [ 'learn-press-tabs' ];
62 $course_builder_link = '';
63
64 if ( $show_course_builder_link ) {
65 $tabs_classes[] = 'learn-press-tabs--with-course-builder';
66 $course_builder_link = sprintf(
67 '<a class="learn-press-course-builder-link" href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a>',
68 esc_url( CourseBuilder::get_link_course_builder() ),
69 esc_html__( 'Course Builder', 'learnpress' )
70 );
71 }
72
73 $section_tabs = [
74 'wrap' => sprintf( '<div class="%s">', esc_attr( implode( ' ', $tabs_classes ) ) ),
75 'ul' => '<ul class="learn-press-filters">',
76 'content' => $html_li_tabs,
77 'ul-end' => '</ul>',
78 'course-builder' => $course_builder_link,
79 'wrap-end' => '</div>',
80 ];
81
82 $section_contents = [
83 'wrap' => '<div class="learn-press-profile-course__progress">',
84 'content' => $html_filter_contents,
85 'input' => sprintf(
86 '<input class="lp_profile_tab_input_param"
87 type="hidden" name="args_query_user_courses_created"
88 value="%s">',
89 sanitize_text_field( htmlentities( wp_json_encode( $args_query_user_courses_created ) ) )
90 ),
91 'wrap-end' => '</div>',
92 ];
93
94 $section_courses_statistic = apply_filters(
95 'learn-press/profile/layout/courses/sections/statistic',
96 [
97 'wrap' => '<div class="learn-press-profile-course__statistic">',
98 'skeleton' => $html_skeleton,
99 'input' => sprintf(
100 '<input type="hidden" name="args_query_user_courses_statistic" value="%s">',
101 sanitize_text_field( htmlentities( wp_json_encode( $args_query_user_courses_statistic ) ) )
102 ),
103 'wrap-end' => '</div>',
104 ],
105 $args
106 );
107
108 $section_courses_list = apply_filters(
109 'learn-press/profile/layout/courses/sections/course-list',
110 [
111 'wrap' => '<div class="learn-press-profile-course__tab">',
112 'filter' => '<div class="learn-press-course-tab-created learn-press-course-tab-filters" data-tab="created">',
113 'tabs' => Template::combine_components( $section_tabs ),
114 'progress' => Template::combine_components( $section_contents ),
115 'filter-end' => '</div>',
116 'wrap-end' => '</div>',
117 ],
118 $args
119 );
120
121 $section = apply_filters(
122 'learn-press/profile/layout/courses/sections',
123 [
124 'wrap' => '<div class="learn-press-profile-course__tab">',
125 'statistic' => Template::combine_components( $section_courses_statistic ),
126 'course-list' => Template::combine_components( $section_courses_list ),
127 'wrap-end' => '</div>',
128 ],
129 $args
130 );
131
132 echo Template::combine_components( $section );
133 }
134 }
135