| @@ -85,9 +85,9 @@ | ||
| 85 | 85 | * @param array $settings |
| 86 | 86 | * |
| 87 | 87 | * @return stdClass { content: string_html } |
| 88 | 88 | * @since 4.2.5.7 |
| 89 | - * @version 1.0.5 | |
| 89 | + * @version 1.0.6 | |
| 90 | 90 | */ |
| 91 | 91 | public static function render_courses( array $settings = [] ): stdClass { |
| 92 | 92 | $filter = new LP_Course_Filter(); |
| 93 | 93 | Courses::handle_params_for_query_courses( $filter, $settings ); |
| @@ -111,24 +111,26 @@ | ||
| 111 | 111 | foreach ( $courses as $courseObj ) { |
| 112 | 112 | $course = CourseModel::find( $courseObj->ID, true ); |
| 113 | 113 | $html_courses .= static::render_course( $course, $settings ); |
| 114 | 114 | } |
| 115 | + | |
| 116 | + $section_courses = apply_filters( | |
| 117 | + 'learn-press/layout/list-courses/section/courses', | |
| 118 | + [ | |
| 119 | + 'wrap' => sprintf( | |
| 120 | + '<ul class="learn-press-courses lp-list-courses-no-css %1$s" data-layout="%1$s">', | |
| 121 | + esc_attr( $skin ) | |
| 122 | + ), | |
| 123 | + 'courses' => $html_courses, | |
| 124 | + 'wrap_end' => '</ul>', | |
| 125 | + ], | |
| 126 | + $courses, | |
| 127 | + $settings | |
| 128 | + ); | |
| 129 | + | |
| 130 | + $html_courses = Template::combine_components( $section_courses ); | |
| 115 | 131 | } |
| 116 | 132 | |
| 117 | - $section_courses = apply_filters( | |
| 118 | - 'learn-press/layout/list-courses/section/courses', | |
| 119 | - [ | |
| 120 | - 'wrap' => sprintf( | |
| 121 | - '<ul class="learn-press-courses lp-list-courses-no-css %1$s" data-layout="%1$s">', | |
| 122 | - $skin | |
| 123 | - ), | |
| 124 | - 'courses' => $html_courses, | |
| 125 | - 'wrap_end' => '</ul>', | |
| 126 | - ], | |
| 127 | - $courses, | |
| 128 | - $settings | |
| 129 | - ); | |
| 130 | - | |
| 131 | 133 | $section_top = apply_filters( |
| 132 | 134 | 'learn-press/layout/list-courses/section/top', |
| 133 | 135 | [ |
| 134 | 136 | 'wrapper' => '<div class="lp-courses-bar">', |
| @@ -163,9 +165,9 @@ | ||
| 163 | 165 | $section = apply_filters( |
| 164 | 166 | 'learn-press/layout/list-courses/section', |
| 165 | 167 | [ |
| 166 | 168 | 'top' => Template::combine_components( $section_top ), |
| 167 | - 'courses' => Template::combine_components( $section_courses ), | |
| 169 | + 'courses' => $html_courses, | |
| 168 | 170 | 'pagination' => $html_pagination, |
| 169 | 171 | ], |
| 170 | 172 | $courses, |
| 171 | 173 | $settings |
| @@ -205,9 +207,9 @@ | ||
| 205 | 207 | [ |
| 206 | 208 | 'wrapper' => '<div class="course-thumbnail">', |
| 207 | 209 | 'img' => sprintf( |
| 208 | 210 | '<a href="%s">%s</a>', |
| 209 | - $course->get_permalink(), | |
| 211 | + esc_url( $course->get_permalink() ), | |
| 210 | 212 | $singleCourseTemplate->html_image( $course ) |
| 211 | 213 | ), |
| 212 | 214 | 'wrapper_end' => '</div>', |
| 213 | 215 | ], |
| @@ -265,16 +267,16 @@ | ||
| 265 | 267 | //'course_footer' => '<div class="course-footer">', |
| 266 | 268 | 'price' => $singleCourseTemplate->html_price( $course ), |
| 267 | 269 | 'btn_read_more' => sprintf( |
| 268 | 270 | '<div class="course-readmore"><a href="%s">%s</a></div>', |
| 269 | - $course->get_permalink(), | |
| 271 | + esc_url( $course->get_permalink() ), | |
| 270 | 272 | $btn_read_more_text |
| 271 | 273 | ), |
| 272 | 274 | 'btn_view_list' => $show_view_students ? sprintf( |
| 273 | 275 | '<div class="lp-wrap-btn-view-course-students"> |
| 274 | - <button type="button" class="lp-button lp-btn-view-students" data-course-id="%d" data-course-title="%s">%s</button> | |
| 276 | + <button type="button" class="lp-button lp-btn-view-students" data-course-id="%s" data-course-title="%s">%s</button> | |
| 275 | 277 | </div>', |
| 276 | - $course->get_id(), | |
| 278 | + esc_attr( $course->get_id() ), | |
| 277 | 279 | esc_attr( $course->get_title() ), |
| 278 | 280 | esc_html__( 'View List Students', 'learnpress' ) |
| 279 | 281 | ) : '', |
| 280 | 282 | //'course_footer_end' => '</div>', |
| @@ -298,9 +300,9 @@ | ||
| 298 | 300 | [ |
| 299 | 301 | 'wrapper' => '<div class="course-content">', |
| 300 | 302 | 'title' => sprintf( |
| 301 | 303 | '<h3 class="wap-course-title"><a class="course-permalink" href="%s">%s</a></h3>', |
| 302 | - $course->get_permalink(), | |
| 304 | + esc_url( $course->get_permalink() ), | |
| 303 | 305 | $singleCourseTemplate->html_title( $course ) |
| 304 | 306 | ), |
| 305 | 307 | 'featured' => $singleCourseTemplate->html_featured( $course ), |
| 306 | 308 | 'wrapper_instructor_cate' => '<div class="course-instructor-category">', |
| @@ -522,9 +524,14 @@ | ||
| 522 | 524 | |
| 523 | 525 | $content = '<ul class="courses-layouts-display-list">'; |
| 524 | 526 | foreach ( $layouts as $k => $v ) { |
| 525 | 527 | $active = ( $data['courses_layout_default'] ?? '' ) === $k ? 'active' : ''; |
| 526 | - $content .= '<li class="courses-layout ' . $active . '" data-layout="' . $k . '">' . $v . '</li>'; | |
| 528 | + $content .= sprintf( | |
| 529 | + '<li class="courses-layout %s" data-layout="%s">%s</li>', | |
| 530 | + esc_attr( $active ), | |
| 531 | + esc_attr( $k ), | |
| 532 | + $v | |
| 533 | + ); | |
| 527 | 534 | } |
| 528 | 535 | $content .= '</ul>'; |
| 529 | 536 | |
| 530 | 537 | return Template::instance()->nest_elements( $html_wrapper, $content ); |
| @@ -557,9 +564,14 @@ | ||
| 557 | 564 | ); |
| 558 | 565 | |
| 559 | 566 | $content = '<select name="order_by" class="courses-order-by">'; |
| 560 | 567 | foreach ( $values as $k => $v ) { |
| 561 | - $content .= '<option value="' . $k . '" ' . selected( $default_value, $k, false ) . '>' . $v . '</option>'; | |
| 568 | + $content .= sprintf( | |
| 569 | + '<option value="%s" %s>%s</option>', | |
| 570 | + esc_attr( $k ), | |
| 571 | + selected( $default_value, $k, false ), | |
| 572 | + $v | |
| 573 | + ); | |
| 562 | 574 | } |
| 563 | 575 | $content .= '</select>'; |
| 564 | 576 | |
| 565 | 577 | return Template::instance()->nest_elements( $html_wrapper, $content ); |
| @@ -672,9 +684,12 @@ | ||
| 672 | 684 | _n( 'Course Found', 'Courses Found', $total_courses, 'learnpress' ) |
| 673 | 685 | ); |
| 674 | 686 | $view_all = sprintf( |
| 675 | 687 | '<a href="%s">%s</a>', |
| 676 | - add_query_arg( 'c_search', $key_search, learn_press_get_page_link( 'courses' ) ), | |
| 688 | + esc_url( add_query_arg( | |
| 689 | + 'c_search', | |
| 690 | + $key_search, | |
| 691 | + learn_press_get_page_link( 'courses' ) ) ), | |
| 677 | 692 | __( 'View All', 'learnpress' ) |
| 678 | 693 | ); |
| 679 | 694 | |
| 680 | 695 | // Section. |