PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.3
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.3
6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 All 34 releases
← All changes | integrations/learndash/includes/functions.php +203 -0 5.7.7 → 6.0.3 View file →
@@ -1,0 +1,203 @@
1 +<?php
2 +/**
3 + * Functions
4 + *
5 + * @package AutomatorWP\LearnDash\Functions
6 + * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 + * @since 1.0.0
8 + */
9 +// Exit if accessed directly
10 +if( !defined( 'ABSPATH' ) ) exit;
11 +
12 +/**
13 + * Retrieves the post ID.
14 + *
15 + * @since 1.0.0
16 + *
17 + * @param mixed $thing
18 + *
19 + * @return int|false
20 + */
21 +function automatorwp_learndash_get_post_id( $thing ) {
22 +
23 + if( $thing instanceof WP_Post ) {
24 + return absint( $thing->ID );
25 + }
26 +
27 + if( is_numeric( $thing ) ) {
28 +
29 + if( absint( $thing ) === 0 ) {
30 + return false;
31 + } else {
32 + return absint( $thing );
33 + }
34 + }
35 +
36 + return false;
37 +}
38 +
39 +/**
40 + * Helper function to mark a quiz as completed
41 + *
42 + * @since 1.0.0
43 + *
44 + * @param int $user_id
45 + * @param int $quiz_id
46 + * @param int $course_id
47 + */
48 +function automatorwp_learndash_mark_quiz_as_completed( $user_id = 0, $quiz_id = 0, $course_id = 0 ) {
49 +
50 + $user_meta = get_user_meta( $user_id, '_sfwd-quizzes', true );
51 + $quiz_progress = empty( $user_meta ) ? array() : $user_meta;
52 +
53 + $quiz_meta = get_post_meta( $quiz_id, '_sfwd-quiz', true );
54 +
55 + $quiz_data = array(
56 + 'quiz' => $quiz_id,
57 + 'score' => 0,
58 + 'count' => 0,
59 + 'pass' => true,
60 + 'rank' => '-',
61 + 'time' => time(),
62 + 'pro_quizid' => $quiz_meta['sfwd-quiz_quiz_pro'],
63 + 'course' => $course_id,
64 + 'points' => 0,
65 + 'total_points' => 0,
66 + 'percentage' => 0,
67 + 'timespent' => 0,
68 + 'has_graded' => false,
69 + 'statistic_ref_id' => 0,
70 + 'm_edit_by' => 9999999, // Manual Edit By ID.
71 + 'm_edit_time' => time(), // Manual Edit timestamp.
72 + );
73 +
74 + $quiz_progress[] = $quiz_data;
75 +
76 + // Add the quiz entry to the user activity
77 + learndash_update_user_activity(
78 + array(
79 + 'course_id' => $course_id,
80 + 'user_id' => $user_id,
81 + 'post_id' => $quiz_id,
82 + 'activity_type' => 'quiz',
83 + 'activity_action' => 'insert',
84 + 'activity_status' => $quiz_data['pass'],
85 + 'activity_started' => $quiz_data['time'],
86 + 'activity_completed' => $quiz_data['time'],
87 + 'activity_meta' => $quiz_data,
88 + )
89 + );
90 +
91 + // Update user quiz progress
92 + if ( ! empty( $quiz_progress ) ) {
93 + update_user_meta( $user_id, '_sfwd-quizzes', $quiz_progress );
94 + }
95 +
96 +}
97 +
98 +/**
99 + * Helper function to mark a topic as completed
100 + *
101 + * @since 1.0.0
102 + *
103 + * @param int $user_id
104 + * @param int $topic_id
105 + * @param int $course_id
106 + */
107 +function automatorwp_learndash_mark_topic_as_completed( $user_id = 0, $topic_id = 0, $course_id = 0 ) {
108 +
109 + // Get all topic's quizzes
110 + $quizzes = learndash_get_lesson_quiz_list( $topic_id, $user_id, $course_id ); // learndash_get_lesson_quiz_list() works for topics too
111 +
112 + if( is_array( $quizzes ) ) {
113 +
114 + foreach( $quizzes as $quiz_data ) {
115 + // Mark quiz as completed
116 + automatorwp_learndash_mark_quiz_as_completed( $user_id, $quiz_data['post']->ID, $course_id );
117 + }
118 +
119 + }
120 +
121 + // Mark topic as completed
122 + learndash_process_mark_complete( $user_id, $topic_id, false, $course_id );
123 +
124 +}
125 +
126 +/**
127 + * Helper function to mark a lesson as completed
128 + *
129 + * @since 1.0.0
130 + *
131 + * @param int $user_id
132 + * @param int $lesson_id
133 + * @param int $course_id
134 + */
135 +function automatorwp_learndash_mark_lesson_as_completed( $user_id = 0, $lesson_id = 0, $course_id = 0 ) {
136 +
137 + // Get all lesson topics
138 + $topics = learndash_get_topic_list( $lesson_id, $course_id );
139 +
140 + if( is_array( $topics ) ) {
141 +
142 + foreach( $topics as $topic ) {
143 + // Mark topic as completed
144 + automatorwp_learndash_mark_topic_as_completed( $user_id, $topic->ID, $course_id );
145 + }
146 +
147 + }
148 +
149 + // Get all lesson's quizzes
150 + $quizzes = learndash_get_lesson_quiz_list( $lesson_id, $user_id, $course_id );
151 +
152 + if( is_array( $quizzes ) ) {
153 +
154 + foreach( $quizzes as $quiz_data ) {
155 + // Mark quiz as completed
156 + automatorwp_learndash_mark_quiz_as_completed( $user_id, $quiz_data['post']->ID, $course_id );
157 + }
158 +
159 + }
160 +
161 + // Mark lesson as completed
162 + learndash_process_mark_complete( $user_id, $lesson_id, false, $course_id );
163 +
164 +}
165 +
166 +/**
167 + * Helper function to mark a course as completed
168 + *
169 + * @since 1.0.0
170 + *
171 + * @param int $user_id
172 + * @param int $course_id
173 + */
174 +function automatorwp_learndash_mark_course_as_completed( $user_id = 0, $course_id = 0 ) {
175 +
176 + // Get all course lessons
177 + $lessons = learndash_get_lesson_list( $course_id, array( 'num' => 0 ) );
178 +
179 + if( is_array( $lessons ) ) {
180 +
181 + foreach( $lessons as $lesson ) {
182 + // Mark lesson as completed
183 + automatorwp_learndash_mark_lesson_as_completed( $user_id, $lesson->ID, $course_id );
184 + }
185 +
186 + }
187 +
188 + // Get all course quizzes
189 + $quizzes = learndash_get_course_quiz_list( $course_id, $user_id );
190 +
191 + if( is_array( $quizzes ) ) {
192 +
193 + foreach( $quizzes as $quiz_data ) {
194 + // Mark course quizzes as completed
195 + automatorwp_learndash_mark_quiz_as_completed( $user_id, $quiz_data['post']->ID, $course_id );
196 + }
197 +
198 + }
199 +
200 + // Mark course as completed
201 + $completed = learndash_process_mark_complete( $user_id, $course_id, false, $course_id );
202 +
203 +}