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