PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.0
Tutor LMS – eLearning and online course solution v4.0.0
4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / components / CourseFilter.php
tutor / components Last commit date
Constants 19 hours ago Accordion.php 19 hours ago Alert.php 19 hours ago AttachmentCard.php 19 hours ago Avatar.php 19 hours ago Badge.php 19 hours ago BaseComponent.php 19 hours ago Button.php 19 hours ago ConfirmationModal.php 19 hours ago CourseFilter.php 19 hours ago DateFilter.php 19 hours ago DropdownFilter.php 19 hours ago EmptyState.php 19 hours ago FileUploader.php 19 hours ago InputField.php 19 hours ago Modal.php 19 hours ago Nav.php 19 hours ago Pagination.php 19 hours ago Popover.php 19 hours ago PreviewTrigger.php 19 hours ago Progress.php 19 hours ago SearchFilter.php 19 hours ago Sorting.php 19 hours ago StarRating.php 19 hours ago StarRatingInput.php 19 hours ago StatusSelect.php 19 hours ago SvgIcon.php 19 hours ago Table.php 19 hours ago Tabs.php 19 hours ago Tooltip.php 19 hours ago WPEditor.php 19 hours ago
CourseFilter.php
111 lines
1 <?php
2 /**
3 * CourseFilter Component Class.
4 *
5 * Responsible for rendering a course filtering dropdown
6 * with a search box to filter the list.
7 *
8 * @package Tutor\Components
9 * @author Themeum
10 * @link https://themeum.com
11 * @since 4.0.0
12 */
13
14 namespace Tutor\Components;
15
16 use Tutor\Components\Constants\Size;
17 use Tutor\Components\Constants\Variant;
18 use Tutor\Models\CourseModel;
19
20 defined( 'ABSPATH' ) || exit;
21
22 /**
23 * Class CourseFilter
24 *
25 * Example Usage:
26 * ```
27 * CourseFilter::make()
28 * ->courses( $courses )
29 * ->count( $total_announcements )
30 * ->render();
31 * ```
32 *
33 * @since 4.0.0
34 */
35 class CourseFilter extends DropdownFilter {
36
37 /**
38 * Constructor.
39 *
40 * Set default values for course filter.
41 */
42 public function __construct() {
43 $this->query_param( 'course-id' );
44 $this->variant( Variant::PRIMARY_SOFT );
45 $this->size( Size::X_SMALL );
46 $this->popover_size( Size::MEDIUM );
47 $this->placeholder( __( 'Search Course', 'tutor' ) );
48 $this->search( true );
49 }
50
51 /**
52 * Set courses list
53 *
54 * @param array|null $courses List of courses.
55 *
56 * @return self
57 */
58 public function courses( $courses = null ): self {
59 $options = self::get_course_filter_options( $courses );
60 $this->options( $options );
61 return $this;
62 }
63
64 /**
65 * Get component content.
66 *
67 * @return string
68 */
69 public function get(): string {
70 if ( empty( $this->options ) ) {
71 $this->courses();
72 }
73
74 return parent::get();
75 }
76
77 /**
78 * Get course filter options for DropdownFilter component.
79 *
80 * @since 4.0.0
81 *
82 * @param array|null $courses Optional. Array of course objects.
83 * If not provided, courses will be fetched based on user permissions.
84 *
85 * @return array
86 */
87 public static function get_course_filter_options( $courses = null ) {
88 $course_options = array(
89 array(
90 'label' => __( 'All Courses', 'tutor' ),
91 'value' => '',
92 ),
93 );
94
95 if ( null === $courses ) {
96 $courses = current_user_can( 'administrator' ) ? CourseModel::get_courses() : CourseModel::get_courses_by_instructor();
97 }
98
99 if ( ! empty( $courses ) ) {
100 foreach ( $courses as $course ) {
101 $course_options[] = array(
102 'label' => $course->post_title,
103 'value' => $course->ID,
104 );
105 }
106 }
107
108 return $course_options;
109 }
110 }
111