/
course_Ñurriculum.php
executable file
·128 lines (94 loc) · 5.31 KB
/
course_Ñurriculum.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
add_action('rest_api_init', function ($server) {
register_rest_route(STM_LMS_API, '/course_curriculum', array(
'methods' => 'POST',
'args' => array(
'id' => array(
'required' => true,
'validate_callback' => function ($param) {
return is_numeric($param);
},
'sanitize_callback' => 'absint'
),
),
'callback' => function ($request) {
$id = $request->get_param('id');
$token = $request->get_header('token');
$user_token = stm_lms_api_token($token);
if (is_wp_error($user_token)) return $user_token;
$user_id = (empty($user_id)) ? $user_token : $user_id;
if (!STM_LMS_User::has_course_access($id)) stm_lms_api_error('no_access', 'Course is not available from this account');
$curriculum = get_post_meta($id, 'curriculum', true);
if (empty($curriculum)) stm_lms_api_error('no_items', 'Course do not have curriculum', 404);
$curriculum = explode(',', $curriculum);
$sections_data = STM_LMS_Lesson::create_sections($curriculum);
$sections = array();
foreach ($sections_data as $sections_datum) {
$sections[] = $sections_datum;
}
foreach ($sections as $index => &$section_info) {
$curriculum = (!empty($section_info['items'])) ? $section_info['items'] : array();
foreach ($curriculum as $curriculum_index => $curriculum_item) {
$item_id = intval($curriculum_item);
$title = get_the_title($curriculum_item);
$content_type = get_post_type($curriculum_item);
$quiz_info = array();
$previous_completed = (isset($completed)) ? $completed : 'first';
$has_preview = STM_LMS_Lesson::lesson_has_preview($curriculum_item);
$user = STM_LMS_User::get_current_user($user_id);
$user_id = $user['id'];
$duration = '';
$questions = '';
if ($content_type === 'stm-quizzes') {
$type = 'quiz';
$quiz_info = STM_LMS_Helpers::simplify_db_array(stm_lms_get_user_quizzes($user_id, $curriculum_item, array('progress')));
$completed = STM_LMS_Quiz::quiz_passed($curriculum_item, $user_id);
$q = get_post_meta($curriculum_item, 'questions', true);
if (!empty($q)):
$questions = sprintf(_n(
'%s question',
'%s questions',
count(explode(',', $q)),
'masterstudy-lms-learning-management-system'
), count(explode(',', $q)));
endif;
} else if ($content_type === 'stm-assignments') {
$type = 'assignment';
$completed = class_exists('STM_LMS_Assignments') ? STM_LMS_Assignments::has_passed_assignment($id) : false;
$completed = (!empty($completed));
} else {
$completed = STM_LMS_Lesson::is_lesson_completed($user_id, $item_id, $curriculum_item);
$type = get_post_meta($curriculum_item, 'type', true);
$duration = get_post_meta($curriculum_item, 'duration', true);
}
if (empty($type)) $type = 'lesson';
if (empty($duration)) $duration = '';
$locked = str_replace(
'prev-status-',
'',
apply_filters("stm_lms_prev_status", "{$previous_completed}", $item_id, $curriculum_item, $user_id)
);
$locked = (empty($locked));
$item_data = compact('id', 'title', 'type', 'quiz_info', 'locked', 'completed', 'has_preview', 'duration', 'questions');
$item_data['dedede'] = str_replace(
'prev-status-',
'',
apply_filters("stm_lms_prev_status", "{$previous_completed}", $item_id, $curriculum_item, $user_id)
);
$section_info['section_items'][] = $item_data;
if (!isset($user_id)) $user_id = 0;
}
}
$user_stats = STM_LMS_Helpers::simplify_db_array(stm_lms_get_user_course($user_id, $id, array('current_lesson_id', 'progress_percent')));
if (empty($user_stats['current_lesson_id'])) $user_stats['current_lesson_id'] = STM_LMS_Lesson::get_first_lesson($id);
$lesson_type = get_post_meta($user_stats['current_lesson_id'], 'type', true);
if(empty($lesson_type)) $lesson_type = 'text';
$user_stats['lesson_type'] = $lesson_type;
$data = array_merge($user_stats, array('sections' => $sections));
$data['schema'] = stm_lms_course_curriculum_model();
$data = stm_lms_api_prepare_rest($data);
stm_lms_api_empty_to_null($data);
return $data;
},
));
});