PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.1
Tutor LMS – eLearning and online course solution v4.0.1
4.0.1 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 4 days ago Accordion.php 4 days ago Alert.php 4 days ago AttachmentCard.php 4 days ago Avatar.php 4 days ago Badge.php 4 days ago BaseComponent.php 4 days ago Button.php 4 days ago ConfirmationModal.php 4 days ago CourseFilter.php 4 days ago DateFilter.php 4 days ago DropdownFilter.php 4 days ago EmptyState.php 4 days ago FileUploader.php 4 days ago InputField.php 4 days ago Modal.php 4 days ago Nav.php 4 days ago Pagination.php 4 days ago Popover.php 4 days ago PreviewTrigger.php 4 days ago Progress.php 4 days ago SearchFilter.php 4 days ago Sorting.php 4 days ago StarRating.php 4 days ago StarRatingInput.php 4 days ago StatusSelect.php 4 days ago SvgIcon.php 4 days ago Table.php 4 days ago Tabs.php 4 days ago Tooltip.php 4 days ago WPEditor.php 4 days 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