PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.7.6
Tutor LMS – eLearning and online course solution v2.7.6
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
CourseModel.php 2 years ago LessonModel.php 2 years ago QuizModel.php 2 years ago WithdrawModel.php 1 year ago
LessonModel.php
136 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 && $value ) {
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