can_manage_settings( $data ) ) {
echo Template::print_message( __( 'Only administrators can manage instructor access in Course Builder.', 'learnpress' ), 'error', false );
return;
}
wp_enqueue_script( 'lp-course-builder' );
$settings_data = $this->get_settings_data();
$layout_sections = apply_filters(
'learn-press/course-builder/settings/sections',
[
'wrapper' => '
',
'header' => $this->html_header(),
'content' => '
',
'form' => $this->html_content( $settings_data ),
'content_end' => '
',
'wrapper_end' => '
',
],
$settings_data
);
echo Template::combine_components( $layout_sections );
} catch ( Throwable $e ) {
error_log( __METHOD__ . ': ' . $e->getMessage() );
}
}
protected function html_header(): string {
return Template::combine_components(
[
'wrapper' => '',
]
);
}
protected function can_manage_settings( array $data = [] ): bool {
$userModel = $data['userModel'] ?? false;
if ( $userModel instanceof UserModel ) {
return user_can( $userModel->get_id(), ADMIN_ROLE );
}
$user_id = get_current_user_id();
return $user_id && current_user_can( ADMIN_ROLE );
}
protected function get_settings_data(): array {
$course_builder_logo = absint( LP_Settings::get_option( 'course_builder_logo_id', 0 ) );
$course_builder_src = $course_builder_logo ? wp_get_attachment_image_url( $course_builder_logo, 'full' ) : '';
return apply_filters(
'learn-press/course-builder/settings/data',
[
'hide_instructor_access_admin_screen' => LP_Settings::is_hide_instructor_access_admin_screen(),
'course_builder_logo' => $course_builder_logo,
'course_builder_src' => $course_builder_src,
'has_custom_logo' => ! empty( $course_builder_src ),
]
);
}
protected function html_content( array $settings_data ): string {
$form_sections = apply_filters(
'learn-press/course-builder/settings/form/sections',
[
'wrapper' => '',
],
$settings_data
);
return Template::combine_components( $form_sections );
}
protected function html_section_instructor_access( array $settings_data ): string {
$field_checked = checked( $settings_data['hide_instructor_access_admin_screen'], true, false );
$field = [
'wrapper' => '',
'label' => sprintf(
'%s ',
esc_html__( 'Restrict Instructor Access', 'learnpress' )
),
'input' => sprintf(
' ',
$field_checked
),
'description' => sprintf(
'%s ',
esc_html__(
'When enabled, the admin menu will be hidden for instructors. Instructors will not be able to access wp-admin.',
'learnpress'
)
),
'wrapper_end' => '
',
];
$section = apply_filters(
'learn-press/course-builder/settings/section/instructor-access',
[
'wrapper' => '',
'field' => Template::combine_components( $field ),
'wrapper_end' => '
',
],
$settings_data
);
return Template::combine_components( $section );
}
protected function html_section_logo( array $settings_data ): string {
$preview_default_class = trim( 'lp-cb-logo-setting__preview-default ' . ( $settings_data['has_custom_logo'] ? 'is-hidden' : '' ) );
$preview_image_class = $settings_data['has_custom_logo'] ? '' : 'is-hidden';
$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' ) );
$preview = [
'wrapper' => '',
'default' => sprintf( '
', esc_attr( $preview_default_class ) ),
'image' => sprintf(
'
',
esc_attr( $preview_image_class ),
esc_url( $settings_data['course_builder_src'] ),
esc_attr__( 'Course Builder logo preview', 'learnpress' )
),
'wrapper_end' => '
',
];
$logo_setting = [
'wrapper' => sprintf(
'',
esc_url( LP_PLUGIN_URL . 'assets/images/icons/ico-logo-course-builder.svg' )
),
'preview_wrapper' => '
',
'preview_row' => '
',
'preview' => Template::combine_components( $preview ),
'preview_row_end' => '
',
'actions' => '
',
'btn_remove' => sprintf( '%s ', esc_attr( $remove_btn_class ), esc_html__( 'Remove', 'learnpress' ) ),
'btn_replace' => sprintf( '%s ', esc_html__( 'Replace', 'learnpress' ) ),
'actions_end' => '
',
'preview_wrapper_end' => '
',
'input_logo_id' => sprintf(
'
',
absint( $settings_data['course_builder_logo'] )
),
'input_logo_remove' => '
',
'wrapper_end' => '
',
];
$field = [
'wrapper' => '',
'label' => sprintf( '%s ', esc_html__( 'Course Builder Logo', 'learnpress' ) ),
'setting' => Template::combine_components( $logo_setting ),
'wrapper_end' => '
',
];
$section = apply_filters(
'learn-press/course-builder/settings/section/logo',
[
'wrapper' => '',
'field' => Template::combine_components( $field ),
'wrapper_end' => '
',
],
$settings_data
);
return Template::combine_components( $section );
}
}