PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 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 All 140 releases
← All changes | inc/TemplateHooks/CourseBuilder/Settings/BuilderSettingsTemplate.php +199 -199 4.3.9 → 4.4.9 View file →
@@ -1,199 +1,199 @@
1 -<?php
2 -/**
3 - * Template hooks Settings in Course Builder.
4 - *
5 - * @since 4.3.x
6 - * @version 1.0.2
7 - */
8 -
9 -namespace LearnPress\TemplateHooks\CourseBuilder\Settings;
10 -
11 -use LearnPress\Helpers\Singleton;
12 -use LearnPress\Helpers\Template;
13 -use LearnPress\Models\UserModel;
14 -use LP_Settings;
15 -use Throwable;
16 -
17 -class BuilderSettingsTemplate {
18 - use Singleton;
19 -
20 - public function init() {
21 - add_action( 'learn-press/course-builder/settings/layout', [ $this, 'layout' ] );
22 - }
23 -
24 - public function layout( array $data = [] ) {
25 - try {
26 - if ( ! $this->can_manage_settings( $data ) ) {
27 - echo Template::print_message( __( 'Only administrators can manage instructor access in Course Builder.', 'learnpress' ), 'error', false );
28 - return;
29 - }
30 -
31 - wp_enqueue_script( 'lp-course-builder' );
32 -
33 - $settings_data = $this->get_settings_data();
34 - $layout_sections = apply_filters(
35 - 'learn-press/course-builder/settings/sections',
36 - [
37 - 'wrapper' => '<div class="lp-cb-settings">',
38 - 'header' => $this->html_header(),
39 - 'content' => '<div class="lp-cb-settings__content">',
40 - 'form' => $this->html_content( $settings_data ),
41 - 'content_end' => '</div>',
42 - 'wrapper_end' => '</div>',
43 - ],
44 - $settings_data
45 - );
46 -
47 - echo Template::combine_components( $layout_sections );
48 - } catch ( Throwable $e ) {
49 - error_log( __METHOD__ . ': ' . $e->getMessage() );
50 - }
51 - }
52 -
53 - protected function html_header(): string {
54 - return Template::combine_components(
55 - [
56 - 'wrapper' => '<div class="cb-tab-header">',
57 - 'title' => sprintf( '<h2 class="lp-cb-tab__title">%s</h2>', __( 'Settings', 'learnpress' ) ),
58 - 'wrapper_end' => '</div>',
59 - ]
60 - );
61 - }
62 -
63 - protected function can_manage_settings( array $data = [] ): bool {
64 - $userModel = $data['userModel'] ?? false;
65 - if ( $userModel instanceof UserModel ) {
66 - return user_can( $userModel->get_id(), ADMIN_ROLE );
67 - }
68 -
69 - $user_id = get_current_user_id();
70 -
71 - return $user_id && current_user_can( ADMIN_ROLE );
72 - }
73 -
74 - protected function get_settings_data(): array {
75 - $course_builder_logo = absint( LP_Settings::get_option( 'course_builder_logo_id', 0 ) );
76 - $course_builder_src = $course_builder_logo ? wp_get_attachment_image_url( $course_builder_logo, 'full' ) : '';
77 -
78 - return apply_filters(
79 - 'learn-press/course-builder/settings/data',
80 - [
81 - 'hide_instructor_access_admin_screen' => LP_Settings::is_hide_instructor_access_admin_screen(),
82 - 'course_builder_logo' => $course_builder_logo,
83 - 'course_builder_src' => $course_builder_src,
84 - 'has_custom_logo' => ! empty( $course_builder_src ),
85 - ]
86 - );
87 - }
88 -
89 - protected function html_content( array $settings_data ): string {
90 - $form_sections = apply_filters(
91 - 'learn-press/course-builder/settings/form/sections',
92 - [
93 - 'wrapper' => '<form id="lp-cb-settings-form" method="post" novalidate>',
94 - 'access' => $this->html_section_instructor_access( $settings_data ),
95 - 'logo' => $this->html_section_logo( $settings_data ),
96 - 'wrapper_end' => '</form>',
97 - ],
98 - $settings_data
99 - );
100 -
101 - return Template::combine_components( $form_sections );
102 - }
103 -
104 - protected function html_section_instructor_access( array $settings_data ): string {
105 - $field_checked = checked( $settings_data['hide_instructor_access_admin_screen'], true, false );
106 - $field = [
107 - 'wrapper' => '<div class="form-field lp-cb-settings__field hide_instructor_access_admin_screen_field">',
108 - 'label' => sprintf(
109 - '<label for="hide_instructor_access_admin_screen">%s</label>',
110 - esc_html__( 'Restrict Instructor Access', 'learnpress' )
111 - ),
112 - 'input' => sprintf(
113 - '<input type="checkbox"
114 - id="hide_instructor_access_admin_screen"
115 - name="hide_instructor_access_admin_screen" value="yes" %s>',
116 - $field_checked
117 - ),
118 - 'description' => sprintf(
119 - '<span class="description">%s</span>',
120 - esc_html__(
121 - 'When enabled, the admin menu will be hidden for instructors. Instructors will not be able to access wp-admin.',
122 - 'learnpress'
123 - )
124 - ),
125 - 'wrapper_end' => '</div>',
126 - ];
127 -
128 - $section = apply_filters(
129 - 'learn-press/course-builder/settings/section/instructor-access',
130 - [
131 - 'wrapper' => '<div class="lp-cb-settings__section">',
132 - 'field' => Template::combine_components( $field ),
133 - 'wrapper_end' => '</div>',
134 - ],
135 - $settings_data
136 - );
137 -
138 - return Template::combine_components( $section );
139 - }
140 -
141 - protected function html_section_logo( array $settings_data ): string {
142 - $preview_default_class = trim( 'lp-cb-logo-setting__preview-default ' . ( $settings_data['has_custom_logo'] ? 'is-hidden' : '' ) );
143 - $preview_image_class = $settings_data['has_custom_logo'] ? '' : 'is-hidden';
144 - $remove_btn_class = trim( 'button lp-button lp-cb-logo-setting__btn lp-cb-logo-setting__btn-danger ' . ( $settings_data['has_custom_logo'] ? '' : 'is-hidden' ) );
145 -
146 - $preview = [
147 - 'wrapper' => '<div class="lp-cb-logo-setting__preview">',
148 - 'default' => sprintf( '<span class="%s" data-cb-logo-preview-default></span>', esc_attr( $preview_default_class ) ),
149 - 'image' => sprintf(
150 - '<img class="%1$s" src="%2$s" alt="%3$s" data-cb-logo-preview-image />',
151 - esc_attr( $preview_image_class ),
152 - esc_url( $settings_data['course_builder_src'] ),
153 - esc_attr__( 'Course Builder logo preview', 'learnpress' )
154 - ),
155 - 'wrapper_end' => '</div>',
156 - ];
157 -
158 - $logo_setting = [
159 - 'wrapper' => sprintf(
160 - '<div class="lp-cb-logo-setting" data-cb-logo-setting data-cb-default-logo-url="%s">',
161 - esc_url( LP_PLUGIN_URL . 'assets/images/icons/ico-logo-course-builder.svg' )
162 - ),
163 - 'preview_wrapper' => '<div class="lp-cb-logo-setting__preview-wrap" data-cb-logo-preview-wrap>',
164 - 'preview_row' => '<div class="lp-cb-logo-setting__preview-row">',
165 - 'preview' => Template::combine_components( $preview ),
166 - 'preview_row_end' => '</div>',
167 - 'actions' => '<div class="lp-cb-logo-setting__actions">',
168 - 'btn_remove' => sprintf( '<button type="button" class="%s" data-cb-logo-remove>%s</button>', esc_attr( $remove_btn_class ), esc_html__( 'Remove', 'learnpress' ) ),
169 - 'btn_replace' => sprintf( '<button type="button" class="button lp-button lp-cb-logo-setting__btn" data-cb-logo-choose>%s</button>', esc_html__( 'Replace', 'learnpress' ) ),
170 - 'actions_end' => '</div>',
171 - 'preview_wrapper_end' => '</div>',
172 - 'input_logo_id' => sprintf(
173 - '<input type="hidden" id="course_builder_logo_id" name="course_builder_logo_id" value="%d" />',
174 - absint( $settings_data['course_builder_logo'] )
175 - ),
176 - 'input_logo_remove' => '<input type="hidden" name="course_builder_logo_remove" value="no" />',
177 - 'wrapper_end' => '</div>',
178 - ];
179 -
180 - $field = [
181 - 'wrapper' => '<div class="form-field lp-cb-settings__field course_builder_logo_field">',
182 - 'label' => sprintf( '<label for="course_builder_logo_id">%s</label>', esc_html__( 'Course Builder Logo', 'learnpress' ) ),
183 - 'setting' => Template::combine_components( $logo_setting ),
184 - 'wrapper_end' => '</div>',
185 - ];
186 -
187 - $section = apply_filters(
188 - 'learn-press/course-builder/settings/section/logo',
189 - [
190 - 'wrapper' => '<div class="lp-cb-settings__section">',
191 - 'field' => Template::combine_components( $field ),
192 - 'wrapper_end' => '</div>',
193 - ],
194 - $settings_data
195 - );
196 -
197 - return Template::combine_components( $section );
198 - }
199 -}
1 +<?php
2 +/**
3 + * Template hooks Settings in Course Builder.
4 + *
5 + * @since 4.3.x
6 + * @version 1.0.2
7 + */
8 +
9 +namespace LearnPress\TemplateHooks\CourseBuilder\Settings;
10 +
11 +use LearnPress\Helpers\Singleton;
12 +use LearnPress\Helpers\Template;
13 +use LearnPress\Models\UserModel;
14 +use LP_Settings;
15 +use Throwable;
16 +
17 +class BuilderSettingsTemplate {
18 + use Singleton;
19 +
20 + public function init() {
21 + add_action( 'learn-press/course-builder/settings/layout', [ $this, 'layout' ] );
22 + }
23 +
24 + public function layout( array $data = [] ) {
25 + try {
26 + if ( ! $this->can_manage_settings( $data ) ) {
27 + echo Template::print_message( __( 'Only administrators can manage instructor access in Course Builder.', 'learnpress' ), 'error', false );
28 + return;
29 + }
30 +
31 + wp_enqueue_script( 'lp-course-builder' );
32 +
33 + $settings_data = $this->get_settings_data();
34 + $layout_sections = apply_filters(
35 + 'learn-press/course-builder/settings/sections',
36 + [
37 + 'wrapper' => '<div class="lp-cb-settings">',
38 + 'header' => $this->html_header(),
39 + 'content' => '<div class="lp-cb-settings__content">',
40 + 'form' => $this->html_content( $settings_data ),
41 + 'content_end' => '</div>',
42 + 'wrapper_end' => '</div>',
43 + ],
44 + $settings_data
45 + );
46 +
47 + echo Template::combine_components( $layout_sections );
48 + } catch ( Throwable $e ) {
49 + error_log( __METHOD__ . ': ' . $e->getMessage() );
50 + }
51 + }
52 +
53 + protected function html_header(): string {
54 + return Template::combine_components(
55 + [
56 + 'wrapper' => '<div class="cb-tab-header">',
57 + 'title' => sprintf( '<h2 class="lp-cb-tab__title">%s</h2>', __( 'Settings', 'learnpress' ) ),
58 + 'wrapper_end' => '</div>',
59 + ]
60 + );
61 + }
62 +
63 + protected function can_manage_settings( array $data = [] ): bool {
64 + $userModel = $data['userModel'] ?? false;
65 + if ( $userModel instanceof UserModel ) {
66 + return user_can( $userModel->get_id(), ADMIN_ROLE );
67 + }
68 +
69 + $user_id = get_current_user_id();
70 +
71 + return $user_id && current_user_can( ADMIN_ROLE );
72 + }
73 +
74 + protected function get_settings_data(): array {
75 + $course_builder_logo = absint( LP_Settings::get_option( 'course_builder_logo_id', 0 ) );
76 + $course_builder_src = $course_builder_logo ? wp_get_attachment_image_url( $course_builder_logo, 'full' ) : '';
77 +
78 + return apply_filters(
79 + 'learn-press/course-builder/settings/data',
80 + [
81 + 'hide_instructor_access_admin_screen' => LP_Settings::is_hide_instructor_access_admin_screen(),
82 + 'course_builder_logo' => $course_builder_logo,
83 + 'course_builder_src' => $course_builder_src,
84 + 'has_custom_logo' => ! empty( $course_builder_src ),
85 + ]
86 + );
87 + }
88 +
89 + protected function html_content( array $settings_data ): string {
90 + $form_sections = apply_filters(
91 + 'learn-press/course-builder/settings/form/sections',
92 + [
93 + 'wrapper' => '<form id="lp-cb-settings-form" method="post" novalidate>',
94 + 'access' => $this->html_section_instructor_access( $settings_data ),
95 + 'logo' => $this->html_section_logo( $settings_data ),
96 + 'wrapper_end' => '</form>',
97 + ],
98 + $settings_data
99 + );
100 +
101 + return Template::combine_components( $form_sections );
102 + }
103 +
104 + protected function html_section_instructor_access( array $settings_data ): string {
105 + $field_checked = checked( $settings_data['hide_instructor_access_admin_screen'], true, false );
106 + $field = [
107 + 'wrapper' => '<div class="form-field lp-cb-settings__field hide_instructor_access_admin_screen_field">',
108 + 'label' => sprintf(
109 + '<label for="hide_instructor_access_admin_screen">%s</label>',
110 + esc_html__( 'Restrict Instructor Access', 'learnpress' )
111 + ),
112 + 'input' => sprintf(
113 + '<input type="checkbox"
114 + id="hide_instructor_access_admin_screen"
115 + name="hide_instructor_access_admin_screen" value="yes" %s>',
116 + $field_checked
117 + ),
118 + 'description' => sprintf(
119 + '<span class="description">%s</span>',
120 + esc_html__(
121 + 'When enabled, the admin menu will be hidden for instructors. Instructors will not be able to access wp-admin.',
122 + 'learnpress'
123 + )
124 + ),
125 + 'wrapper_end' => '</div>',
126 + ];
127 +
128 + $section = apply_filters(
129 + 'learn-press/course-builder/settings/section/instructor-access',
130 + [
131 + 'wrapper' => '<div class="lp-cb-settings__section">',
132 + 'field' => Template::combine_components( $field ),
133 + 'wrapper_end' => '</div>',
134 + ],
135 + $settings_data
136 + );
137 +
138 + return Template::combine_components( $section );
139 + }
140 +
141 + protected function html_section_logo( array $settings_data ): string {
142 + $preview_default_class = trim( 'lp-cb-logo-setting__preview-default ' . ( $settings_data['has_custom_logo'] ? 'is-hidden' : '' ) );
143 + $preview_image_class = $settings_data['has_custom_logo'] ? '' : 'is-hidden';
144 + $remove_btn_class = trim( 'button lp-button lp-cb-logo-setting__btn lp-cb-logo-setting__btn-danger ' . ( $settings_data['has_custom_logo'] ? '' : 'is-hidden' ) );
145 +
146 + $preview = [
147 + 'wrapper' => '<div class="lp-cb-logo-setting__preview">',
148 + 'default' => sprintf( '<span class="%s" data-cb-logo-preview-default></span>', esc_attr( $preview_default_class ) ),
149 + 'image' => sprintf(
150 + '<img class="%1$s" src="%2$s" alt="%3$s" data-cb-logo-preview-image />',
151 + esc_attr( $preview_image_class ),
152 + esc_url( $settings_data['course_builder_src'] ),
153 + esc_attr__( 'Course Builder logo preview', 'learnpress' )
154 + ),
155 + 'wrapper_end' => '</div>',
156 + ];
157 +
158 + $logo_setting = [
159 + 'wrapper' => sprintf(
160 + '<div class="lp-cb-logo-setting" data-cb-logo-setting data-cb-default-logo-url="%s">',
161 + esc_url( LP_PLUGIN_URL . 'assets/images/icons/ico-logo-course-builder.svg' )
162 + ),
163 + 'preview_wrapper' => '<div class="lp-cb-logo-setting__preview-wrap" data-cb-logo-preview-wrap>',
164 + 'preview_row' => '<div class="lp-cb-logo-setting__preview-row">',
165 + 'preview' => Template::combine_components( $preview ),
166 + 'preview_row_end' => '</div>',
167 + 'actions' => '<div class="lp-cb-logo-setting__actions">',
168 + 'btn_remove' => sprintf( '<button type="button" class="%s" data-cb-logo-remove>%s</button>', esc_attr( $remove_btn_class ), esc_html__( 'Remove', 'learnpress' ) ),
169 + 'btn_replace' => sprintf( '<button type="button" class="button lp-button lp-cb-logo-setting__btn" data-cb-logo-choose>%s</button>', esc_html__( 'Replace', 'learnpress' ) ),
170 + 'actions_end' => '</div>',
171 + 'preview_wrapper_end' => '</div>',
172 + 'input_logo_id' => sprintf(
173 + '<input type="hidden" id="course_builder_logo_id" name="course_builder_logo_id" value="%d" />',
174 + absint( $settings_data['course_builder_logo'] )
175 + ),
176 + 'input_logo_remove' => '<input type="hidden" name="course_builder_logo_remove" value="no" />',
177 + 'wrapper_end' => '</div>',
178 + ];
179 +
180 + $field = [
181 + 'wrapper' => '<div class="form-field lp-cb-settings__field course_builder_logo_field">',
182 + 'label' => sprintf( '<label for="course_builder_logo_id">%s</label>', esc_html__( 'Course Builder Logo', 'learnpress' ) ),
183 + 'setting' => Template::combine_components( $logo_setting ),
184 + 'wrapper_end' => '</div>',
185 + ];
186 +
187 + $section = apply_filters(
188 + 'learn-press/course-builder/settings/section/logo',
189 + [
190 + 'wrapper' => '<div class="lp-cb-settings__section">',
191 + 'field' => Template::combine_components( $field ),
192 + 'wrapper_end' => '</div>',
193 + ],
194 + $settings_data
195 + );
196 +
197 + return Template::combine_components( $section );
198 + }
199 +}