PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.7
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.7
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 4.2.1 All 138 releases
learnpress / inc / Shortcodes / Courses / ListCoursesShortcode.php

ListCoursesShortcode.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.7, at inc/Shortcodes/Courses/ListCoursesShortcode.php

94 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace LearnPress\Shortcodes\Courses;
4
5 use LearnPress\Databases\DataBase;
6 use LearnPress\Filters\Course\CourseJsonFilter;
7 use LearnPress\Helpers\Singleton;
8 use LearnPress\Helpers\Template;
9 use LearnPress\Models\CourseModel;
10 use LearnPress\Models\Courses;
11 use LearnPress\Shortcodes\AbstractShortcode;
12 use LearnPress\TemplateHooks\Course\ListCoursesTemplate;
13 use LP_Debug;
14 use LP_Helper;
15 use Throwable;
16
17 /**
18 * Shortcode display list courses.
19 *
20 * @since 4.3.2.3
21 * @version 1.0.1
22 */
23 class ListCoursesShortcode extends AbstractShortcode {
24 use singleton;
25
26 protected $shortcode_name = 'courses';
27
28 /**
29 * Show single instructor
30 *
31 * @param $attrs [ 'limit', 'c_status', 'order_by', 'order', '' ]
32 *
33 * @return string
34 */
35 public function render( $attrs ): string {
36 $content = '';
37 wp_enqueue_style( 'learnpress' );
38 wp_enqueue_script( 'lp-courses-v2' );
39
40 try {
41 if ( empty( $attrs ) ) {
42 $attrs = [];
43 }
44
45 $attrs['c_status'] = LP_Helper::sanitize_params_submitted( $attrs['c_status'] ?? 'publish' );
46 $filter = new CourseJsonFilter();
47 Courses::handle_params_for_query_list_courses( $filter, $attrs );
48 $filter->only_fields = [ CourseJsonFilter::COL_ID ];
49
50 $total_rows = 0;
51 $courses = Courses::get_list_courses( $filter, $total_rows );
52 $total_pages = DataBase::get_total_pages( $filter->limit, $total_rows );
53 $attrs['total_pages'] = $total_pages;
54 $attrs['total_rows'] = $total_rows;
55 $attrs['courses_per_page'] = $filter->limit;
56 $skin = LP_Helper::sanitize_params_submitted( $attrs['skin'] ?? 'list' );
57 $paged = $attrs['paged'] ?? 1;
58 $attrs['paged'] = $paged;
59 $listCoursesTemplate = self::instance();
60
61 // HTML section courses.
62 $html_courses = '';
63 if ( empty( $courses ) ) {
64 $html_courses = Template::print_message( __( 'No courses found', 'learnpress' ), 'info', false );
65 } else {
66 foreach ( $courses as $courseObj ) {
67 $course = CourseModel::find( $courseObj->ID, true );
68 $html_courses .= ListCoursesTemplate::render_course( $course, $attrs );
69 }
70 }
71
72 $section_courses = apply_filters(
73 'learn-press/layout/list-courses/shortcode/section',
74 [
75 'wrap' => sprintf(
76 '<ul class="learn-press-courses lp-list-courses-no-css %1$s learn-press-courses-shortcode" data-layout="%1$s">',
77 esc_attr( $skin )
78 ),
79 'courses' => wp_kses_post( $html_courses ),
80 'wrap_end' => '</ul>',
81 ],
82 $courses,
83 $attrs
84 );
85
86 $content = Template::combine_components( $section_courses );
87 } catch ( Throwable $e ) {
88 LP_Debug::error_log( $e );
89 }
90
91 return $content;
92 }
93 }
94