PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.0
Tutor LMS – eLearning and online course solution v3.7.0
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 / models / LessonModel.php
tutor / models Last commit date
BaseModel.php 11 months ago BillingModel.php 1 year ago CartModel.php 1 year ago CouponModel.php 11 months ago CourseModel.php 11 months ago LessonModel.php 11 months ago OrderActivitiesModel.php 1 year ago OrderMetaModel.php 1 year ago OrderModel.php 11 months ago QuizModel.php 11 months ago UserModel.php 1 year ago WithdrawModel.php 1 year ago
LessonModel.php
173 lines
1 <?php
2 /**
3 * Lesson Model
4 *
5 * @package Tutor\Models
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 2.0.10
9 */
10
11 namespace Tutor\Models;
12
13 /**
14 * LessonModel Class
15 *
16 * @since 2.0.10
17 */
18 class LessonModel {
19
20 /**
21 * Get total number of lesson
22 *
23 * @since 2.0.2
24 *
25 * @return int
26 */
27 public static function get_total_lesson() {
28 global $wpdb;
29 $lesson_type = tutor()->lesson_post_type;
30
31 $sql = "SELECT COUNT(DISTINCT lesson.ID)
32 FROM {$wpdb->posts} lesson
33 INNER JOIN {$wpdb->posts} topic ON lesson.post_parent=topic.ID
34 INNER JOIN {$wpdb->posts} course ON topic.post_parent=course.ID
35 WHERE lesson.post_type = %s
36 AND lesson.post_status = %s
37 AND course.post_status = %s
38 AND topic.post_status = %s";
39
40 //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
41 return $wpdb->get_var( $wpdb->prepare( $sql, $lesson_type, 'publish', 'publish', 'publish' ) );
42 }
43
44 /**
45 * Get total lesson count by a course
46 *
47 * @since 1.0.0
48 *
49 * @param int $course_id course id.
50 * @return int
51 */
52 public function get_lesson_count_by_course( $course_id = 0 ) {
53 $course_id = tutor_utils()->get_post_id( $course_id );
54 return count( tutor_utils()->get_course_content_ids_by( tutor()->lesson_post_type, tutor()->course_post_type, $course_id ) );
55 }
56
57 /**
58 * Get lesson reading info by key
59 *
60 * @since 1.0.0
61 *
62 * @param int $lesson_id lesson id.
63 * @param int $user_id user id.
64 * @param string $key key.
65 *
66 * @return array|bool|mixed
67 */
68 public function get_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '' ) {
69 $lesson_id = tutor_utils()->get_post_id( $lesson_id );
70 $user_id = tutor_utils()->get_user_id( $user_id );
71 $lesson_info = $this->get_lesson_reading_info_full( $lesson_id, $user_id );
72
73 return tutor_utils()->avalue_dot( $key, $lesson_info );
74 }
75
76 /**
77 * Get student lesson reading current info
78 *
79 * @since 1.0.0
80 *
81 * @param int $lesson_id lesson id.
82 * @param int $user_id user id.
83 *
84 * @return array|bool|mixed
85 */
86 public function get_lesson_reading_info_full( $lesson_id = 0, $user_id = 0 ) {
87 $lesson_id = tutor_utils()->get_post_id( $lesson_id );
88 $user_id = tutor_utils()->get_user_id( $user_id );
89
90 $lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
91 return tutor_utils()->avalue_dot( $lesson_id, $lesson_info );
92 }
93
94 /**
95 * Update student lesson reading info
96 *
97 * @since 1.0.0
98 *
99 * @param int $lesson_id lesson id.
100 * @param int $user_id user id.
101 * @param string $key key.
102 * @param string $value value.
103 *
104 * @return void
105 */
106 public static function update_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '', $value = '' ) {
107 $lesson_id = tutor_utils()->get_post_id( $lesson_id );
108 $user_id = tutor_utils()->get_user_id( $user_id );
109
110 if ( $key ) {
111 $lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
112 $lesson_info[ $lesson_id ][ $key ] = $value;
113 update_user_meta( $user_id, '_lesson_reading_info', $lesson_info );
114 }
115 }
116
117 /**
118 * Mark lesson complete
119 *
120 * @since 1.0.0
121 *
122 * @param int $post_id post id.
123 * @param int $user_id user id.
124 *
125 * @return void
126 */
127 public static function mark_lesson_complete( $post_id = 0, $user_id = 0 ) {
128 $post_id = tutor_utils()->get_post_id( $post_id );
129 $user_id = tutor_utils()->get_user_id( $user_id );
130
131 do_action( 'tutor_mark_lesson_complete_before', $post_id, $user_id );
132 update_user_meta( $user_id, '_tutor_completed_lesson_id_' . $post_id, tutor_time() );
133 do_action( 'tutor_mark_lesson_complete_after', $post_id, $user_id );
134 }
135
136 /**
137 * Get lesson details.
138 *
139 * @since 3.7.0
140 *
141 * @param int $lesson_id lesson id.
142 *
143 * @return array
144 */
145 public static function get_lesson_details( $lesson_id ) {
146 $post = get_post( $lesson_id, ARRAY_A );
147
148 if ( $post ) {
149 $post['thumbnail_id'] = get_post_meta( $lesson_id, '_thumbnail_id', true );
150 $post['thumbnail'] = get_the_post_thumbnail_url( $lesson_id );
151 $post['attachments'] = tutor_utils()->get_attachments( $lesson_id );
152
153 $video = maybe_unserialize( get_post_meta( $lesson_id, '_video', true ) );
154 if ( $video ) {
155 $source = $video['source'] ?? '';
156 if ( 'html5' === $source ) {
157 $poster_url = wp_get_attachment_url( $video['poster'] ?? 0 );
158 $source_html5 = wp_get_attachment_url( $video['source_video_id'] ?? 0 );
159 $video['poster_url'] = $poster_url;
160 $video['source_html5'] = $source_html5;
161 }
162 }
163 $post['video'] = $video;
164 } else {
165 $post = array();
166 }
167
168 $data = apply_filters( 'tutor_lesson_details_response', $post, $lesson_id );
169
170 return $data;
171 }
172 }
173