PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.3
Tutor LMS – eLearning and online course solution v3.7.3
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 10 months ago LessonModel.php 10 months ago OrderActivitiesModel.php 1 year ago OrderMetaModel.php 1 year ago OrderModel.php 10 months ago QuizModel.php 10 months ago UserModel.php 1 year ago WithdrawModel.php 1 year ago
LessonModel.php
187 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 $sql = "SELECT COUNT(DISTINCT lesson.ID)
44 FROM {$wpdb->posts} lesson
45 INNER JOIN {$wpdb->posts} topic ON lesson.post_parent=topic.ID
46 INNER JOIN {$wpdb->posts} course ON topic.post_parent=course.ID
47 WHERE 1 = 1
48 {$course_in_clause}
49 AND lesson.post_type = %s
50 AND lesson.post_status = %s
51 AND course.post_status = %s
52 AND topic.post_status = %s";
53
54 //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
55 return $wpdb->get_var( $wpdb->prepare( $sql, $lesson_type, 'publish', 'publish', 'publish' ) );
56 }
57
58 /**
59 * Get total lesson count by a course
60 *
61 * @since 1.0.0
62 *
63 * @param int $course_id course id.
64 * @return int
65 */
66 public function get_lesson_count_by_course( $course_id = 0 ) {
67 $course_id = tutor_utils()->get_post_id( $course_id );
68 return count( tutor_utils()->get_course_content_ids_by( tutor()->lesson_post_type, tutor()->course_post_type, $course_id ) );
69 }
70
71 /**
72 * Get lesson reading info by key
73 *
74 * @since 1.0.0
75 *
76 * @param int $lesson_id lesson id.
77 * @param int $user_id user id.
78 * @param string $key key.
79 *
80 * @return array|bool|mixed
81 */
82 public function get_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '' ) {
83 $lesson_id = tutor_utils()->get_post_id( $lesson_id );
84 $user_id = tutor_utils()->get_user_id( $user_id );
85 $lesson_info = $this->get_lesson_reading_info_full( $lesson_id, $user_id );
86
87 return tutor_utils()->avalue_dot( $key, $lesson_info );
88 }
89
90 /**
91 * Get student lesson reading current info
92 *
93 * @since 1.0.0
94 *
95 * @param int $lesson_id lesson id.
96 * @param int $user_id user id.
97 *
98 * @return array|bool|mixed
99 */
100 public function get_lesson_reading_info_full( $lesson_id = 0, $user_id = 0 ) {
101 $lesson_id = tutor_utils()->get_post_id( $lesson_id );
102 $user_id = tutor_utils()->get_user_id( $user_id );
103
104 $lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
105 return tutor_utils()->avalue_dot( $lesson_id, $lesson_info );
106 }
107
108 /**
109 * Update student lesson reading info
110 *
111 * @since 1.0.0
112 *
113 * @param int $lesson_id lesson id.
114 * @param int $user_id user id.
115 * @param string $key key.
116 * @param string $value value.
117 *
118 * @return void
119 */
120 public static function update_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '', $value = '' ) {
121 $lesson_id = tutor_utils()->get_post_id( $lesson_id );
122 $user_id = tutor_utils()->get_user_id( $user_id );
123
124 if ( $key ) {
125 $lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
126 $lesson_info[ $lesson_id ][ $key ] = $value;
127 update_user_meta( $user_id, '_lesson_reading_info', $lesson_info );
128 }
129 }
130
131 /**
132 * Mark lesson complete
133 *
134 * @since 1.0.0
135 *
136 * @param int $post_id post id.
137 * @param int $user_id user id.
138 *
139 * @return void
140 */
141 public static function mark_lesson_complete( $post_id = 0, $user_id = 0 ) {
142 $post_id = tutor_utils()->get_post_id( $post_id );
143 $user_id = tutor_utils()->get_user_id( $user_id );
144
145 do_action( 'tutor_mark_lesson_complete_before', $post_id, $user_id );
146 update_user_meta( $user_id, '_tutor_completed_lesson_id_' . $post_id, tutor_time() );
147 do_action( 'tutor_mark_lesson_complete_after', $post_id, $user_id );
148 }
149
150 /**
151 * Get lesson details.
152 *
153 * @since 3.7.0
154 *
155 * @param int $lesson_id lesson id.
156 *
157 * @return array
158 */
159 public static function get_lesson_details( $lesson_id ) {
160 $post = get_post( $lesson_id, ARRAY_A );
161
162 if ( $post ) {
163 $post['thumbnail_id'] = get_post_meta( $lesson_id, '_thumbnail_id', true );
164 $post['thumbnail'] = get_the_post_thumbnail_url( $lesson_id );
165 $post['attachments'] = tutor_utils()->get_attachments( $lesson_id );
166
167 $video = maybe_unserialize( get_post_meta( $lesson_id, '_video', true ) );
168 if ( $video ) {
169 $source = $video['source'] ?? '';
170 if ( 'html5' === $source ) {
171 $poster_url = wp_get_attachment_url( $video['poster'] ?? 0 );
172 $source_html5 = wp_get_attachment_url( $video['source_video_id'] ?? 0 );
173 $video['poster_url'] = $poster_url;
174 $video['source_html5'] = $source_html5;
175 }
176 }
177 $post['video'] = $video;
178 } else {
179 $post = array();
180 }
181
182 $data = apply_filters( 'tutor_lesson_details_response', $post, $lesson_id );
183
184 return $data;
185 }
186 }
187