PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.4
Tutor LMS – eLearning and online course solution v3.9.4
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 / templates / dashboard / dashboard.php
tutor / templates / dashboard Last commit date
announcements 1 year ago assignments 8 months ago elements 1 year ago enrolled-courses 3 years ago instructor 2 years ago my-courses 1 year ago my-quiz-attempts 3 years ago notifications 3 years ago question-answer 1 year ago quiz-attempts 3 years ago reviews 3 years ago settings 1 year ago withdraw-method-fields 3 years ago announcements.php 1 year ago assignments.php 11 months ago create-course.php 1 year ago dashboard.php 8 months ago enrolled-courses.php 8 months ago index.php 3 years ago logged-in.php 3 years ago my-courses.php 8 months ago my-profile.php 9 months ago my-quiz-attempts.php 3 years ago purchase_history.php 10 months ago question-answer.php 11 months ago quiz-attempts.php 1 year ago registration.php 2 years ago reviews.php 3 years ago settings.php 1 year ago wishlist.php 1 year ago withdraw.php 1 year ago
dashboard.php
398 lines
1 <?php
2 /**
3 * Frontend Dashboard Template
4 *
5 * @package Tutor\Templates
6 * @subpackage Dashboard
7 * @author Themeum <support@themeum.com>
8 * @link https://themeum.com
9 * @since 1.4.3
10 */
11
12 use Tutor\Models\CourseModel;
13 use Tutor\Models\WithdrawModel;
14
15 if ( tutor_utils()->get_option( 'enable_profile_completion' ) ) {
16 $profile_completion = tutor_utils()->user_profile_completion();
17 $is_instructor = tutor_utils()->is_instructor( null, true );
18 $total_count = count( $profile_completion );
19 $incomplete_count = count(
20 array_filter(
21 $profile_completion,
22 function( $data ) {
23 return ! $data['is_set'];
24 }
25 )
26 );
27 $complete_count = $total_count - $incomplete_count;
28
29 if ( $is_instructor ) {
30 if ( isset( $total_count ) && isset( $incomplete_count ) && $incomplete_count <= $total_count ) {
31 ?>
32 <div class="tutor-profile-completion tutor-card tutor-px-32 tutor-py-24 tutor-mb-40">
33 <div class="tutor-row tutor-gx-0">
34 <div class="tutor-col-lg-7 <?php echo tutor_utils()->is_instructor() ? 'tutor-profile-completion-content-admin' : ''; ?>">
35 <div class="tutor-fs-5 tutor-fw-medium tutor-color-black">
36 <?php esc_html_e( 'Complete Your Profile', 'tutor' ); ?>
37 </div>
38
39 <div class="tutor-row tutor-align-center tutor-mt-12">
40 <div class="tutor-col">
41 <div class="tutor-row tutor-gx-1">
42 <?php for ( $i = 1; $i <= $total_count; $i++ ) : ?>
43 <div class="tutor-col">
44 <div class="tutor-progress-bar" style="--tutor-progress-value: <?php echo $i > $complete_count ? 0 : 100; ?>%; height: 8px;"><div class="tutor-progress-value" area-hidden="true"></div></div>
45 </div>
46 <?php endfor; ?>
47 </div>
48 </div>
49
50 <div class="tutor-col-auto">
51 <span class="tutor-round-box tutor-my-n20">
52 <i class="tutor-icon-trophy" area-hidden="true"></i>
53 </span>
54 </div>
55 </div>
56
57 <div class="tutor-fs-6 tutor-mt-20">
58 <?php
59 $profile_complete_text = __( 'Please complete profile', 'tutor' );
60 if ( $complete_count > ( $total_count / 2 ) && $complete_count < $total_count ) {
61 $profile_complete_text = __( 'You are almost done', 'tutor' );
62 } elseif ( $complete_count === $total_count ) {
63 $profile_complete_text = __( 'Thanks for completing your profile', 'tutor' );
64 }
65 $profile_complete_status = $profile_complete_text;
66 ?>
67
68 <span class="tutor-color-muted"><?php echo esc_html( $profile_complete_status ); ?>:</span>
69 <span><?php echo esc_html( $complete_count . '/' . $total_count ); ?></span>
70 </div>
71 </div>
72
73 <div class="tutor-col-lg-1 tutor-text-center tutor-my-24 tutor-my-lg-n24">
74 <div class="tutor-vr tutor-d-none tutor-d-lg-inline-flex"></div>
75 <div class="tutor-hr tutor-d-flex tutor-d-lg-none"></div>
76 </div>
77
78 <div class="tutor-col-lg-4 tutor-d-flex tutor-flex-column tutor-justify-center">
79 <?php
80 $i = 0;
81 $monetize_by = tutils()->get_option( 'monetize_by' );
82 foreach ( $profile_completion as $key => $data ) {
83 if ( '_tutor_withdraw_method_data' === $key ) {
84 if ( 'free' === $monetize_by ) {
85 continue;
86 }
87 }
88 $is_set = $data['is_set']; // Whether the step is done or not.
89 ?>
90 <div class="tutor-d-flex tutor-align-center<?php echo $i < ( count( $profile_completion ) - 1 ) ? ' tutor-mb-8' : ''; ?>">
91 <?php if ( $is_set ) : ?>
92 <span class="tutor-icon-circle-mark-line tutor-color-success tutor-mr-8"></span>
93 <?php else : ?>
94 <span class="tutor-icon-circle-times-line tutor-color-warning tutor-mr-8"></span>
95 <?php endif; ?>
96
97 <span class="<?php echo $is_set ? 'tutor-color-secondary' : 'tutor-color-muted'; ?>">
98 <a class="tutor-btn tutor-btn-ghost tutor-has-underline" href="<?php echo esc_url( $data['url'] ); ?>">
99 <?php echo esc_html( $data['text'] ); ?>
100 </a>
101 </span>
102 </div>
103 <?php
104 $i++;
105 }
106 ?>
107 </div>
108 </div>
109 </div>
110 <?php
111 }
112 } else {
113 if ( ! $profile_completion['_tutor_profile_photo']['is_set'] ) {
114 $alert_message = sprintf(
115 '<div class="tutor-alert tutor-primary tutor-mb-20">
116 <div class="tutor-alert-text">
117 <span class="tutor-alert-icon tutor-fs-4 tutor-icon-circle-info tutor-mr-12"></span>
118 <span>
119 %s
120 </span>
121 </div>
122 <div class="alert-btn-group">
123 <a href="%s" class="tutor-btn tutor-btn-sm">' . __( 'Click Here', 'tutor' ) . '</a>
124 </div>
125 </div>',
126 $profile_completion['_tutor_profile_photo']['text'],
127 tutor_utils()->tutor_dashboard_url( 'settings' )
128 );
129
130 echo $alert_message; //phpcs:ignore
131 }
132 }
133 }
134 ?>
135 <?php do_action( 'tutor_before_dashboard_content' ); ?>
136 <div class="tutor-fs-5 tutor-fw-medium tutor-color-black tutor-text-capitalize tutor-mb-24 tutor-dashboard-title"><?php esc_html_e( 'Dashboard', 'tutor' ); ?></div>
137 <div class="tutor-dashboard-content-inner">
138 <?php
139 $user_id = get_current_user_id();
140 $enrolled_course = CourseModel::get_enrolled_courses_by_user( $user_id, array( 'private', 'publish' ) );
141 $completed_courses = tutor_utils()->get_completed_courses_ids_by_user();
142 $total_students = tutor_utils()->get_total_students_by_instructor( $user_id );
143 $my_courses = CourseModel::get_courses_by_instructor( $user_id, CourseModel::STATUS_PUBLISH );
144 $earning_sum = WithdrawModel::get_withdraw_summary( $user_id );
145 $active_courses = CourseModel::get_active_courses_by_user( $user_id );
146
147 $enrolled_course_count = $enrolled_course ? $enrolled_course->post_count : 0;
148 $completed_course_count = count( $completed_courses );
149 $active_course_count = is_object( $active_courses ) && $active_courses->have_posts() ? $active_courses->post_count : 0;
150
151 $status_translations = array(
152 'publish' => __( 'Published', 'tutor' ),
153 'pending' => __( 'Pending', 'tutor' ),
154 'trash' => __( 'Trash', 'tutor' ),
155 );
156
157 ?>
158 <div class="tutor-row tutor-gx-lg-4">
159 <div class="tutor-col-lg-6 tutor-col-xl-4 tutor-mb-16 tutor-mb-lg-32">
160 <div class="tutor-card">
161 <div class="tutor-d-flex tutor-flex-lg-column tutor-align-center tutor-text-lg-center tutor-px-12 tutor-px-lg-24 tutor-py-8 tutor-py-lg-32">
162 <span class="tutor-round-box tutor-mr-12 tutor-mr-lg-0 tutor-mb-lg-12">
163 <i class="tutor-icon-book-open" area-hidden="true"></i>
164 </span>
165 <div class="tutor-fs-3 tutor-fw-bold tutor-d-none tutor-d-lg-block"><?php echo esc_html( $enrolled_course_count ); ?></div>
166 <div class="tutor-fs-7 tutor-color-secondary"><?php esc_html_e( 'Enrolled Courses', 'tutor' ); ?></div>
167 <div class="tutor-fs-4 tutor-fw-bold tutor-d-block tutor-d-lg-none tutor-ml-auto"><?php echo esc_html( $enrolled_course_count ); ?></div>
168 </div>
169 </div>
170 </div>
171
172 <div class="tutor-col-lg-6 tutor-col-xl-4 tutor-mb-16 tutor-mb-lg-32">
173 <div class="tutor-card">
174 <div class="tutor-d-flex tutor-flex-lg-column tutor-align-center tutor-text-lg-center tutor-px-12 tutor-px-lg-24 tutor-py-8 tutor-py-lg-32">
175 <span class="tutor-round-box tutor-mr-12 tutor-mr-lg-0 tutor-mb-lg-12">
176 <i class="tutor-icon-mortarboard-o" area-hidden="true"></i>
177 </span>
178 <div class="tutor-fs-3 tutor-fw-bold tutor-d-none tutor-d-lg-block"><?php echo esc_html( $active_course_count ); ?></div>
179 <div class="tutor-fs-7 tutor-color-secondary"><?php esc_html_e( 'Active Courses', 'tutor' ); ?></div>
180 <div class="tutor-fs-4 tutor-fw-bold tutor-d-block tutor-d-lg-none tutor-ml-auto"><?php echo esc_html( $active_course_count ); ?></div>
181 </div>
182 </div>
183 </div>
184
185 <div class="tutor-col-lg-6 tutor-col-xl-4 tutor-mb-16 tutor-mb-lg-32">
186 <div class="tutor-card">
187 <div class="tutor-d-flex tutor-flex-lg-column tutor-align-center tutor-text-lg-center tutor-px-12 tutor-px-lg-24 tutor-py-8 tutor-py-lg-32">
188 <span class="tutor-round-box tutor-mr-12 tutor-mr-lg-0 tutor-mb-lg-12">
189 <i class="tutor-icon-trophy" area-hidden="true"></i>
190 </span>
191 <div class="tutor-fs-3 tutor-fw-bold tutor-d-none tutor-d-lg-block"><?php echo esc_html( $completed_course_count ); ?></div>
192 <div class="tutor-fs-7 tutor-color-secondary"><?php esc_html_e( 'Completed Courses', 'tutor' ); ?></div>
193 <div class="tutor-fs-4 tutor-fw-bold tutor-d-block tutor-d-lg-none tutor-ml-auto"><?php echo esc_html( $completed_course_count ); ?></div>
194 </div>
195 </div>
196 </div>
197
198 <?php
199 if ( current_user_can( tutor()->instructor_role ) ) :
200 ?>
201 <div class="tutor-col-lg-6 tutor-col-xl-4 tutor-mb-16 tutor-mb-lg-32">
202 <div class="tutor-card">
203 <div class="tutor-d-flex tutor-flex-lg-column tutor-align-center tutor-text-lg-center tutor-px-12 tutor-px-lg-24 tutor-py-8 tutor-py-lg-32">
204 <span class="tutor-round-box tutor-mr-12 tutor-mr-lg-0 tutor-mb-lg-12">
205 <i class="tutor-icon-user-graduate" area-hidden="true"></i>
206 </span>
207 <div class="tutor-fs-3 tutor-fw-bold tutor-d-none tutor-d-lg-block"><?php echo esc_html( $total_students ); ?></div>
208 <div class="tutor-fs-7 tutor-color-secondary"><?php esc_html_e( 'Total Students', 'tutor' ); ?></div>
209 <div class="tutor-fs-4 tutor-fw-bold tutor-d-block tutor-d-lg-none tutor-ml-auto"><?php echo esc_html( $total_students ); ?></div>
210 </div>
211 </div>
212 </div>
213
214 <div class="tutor-col-lg-6 tutor-col-xl-4 tutor-mb-16 tutor-mb-lg-32">
215 <div class="tutor-card">
216 <div class="tutor-d-flex tutor-flex-lg-column tutor-align-center tutor-text-lg-center tutor-px-12 tutor-px-lg-24 tutor-py-8 tutor-py-lg-32">
217 <span class="tutor-round-box tutor-mr-12 tutor-mr-lg-0 tutor-mb-lg-12">
218 <i class="tutor-icon-box-open" area-hidden="true"></i>
219 </span>
220 <div class="tutor-fs-3 tutor-fw-bold tutor-d-none tutor-d-lg-block"><?php echo esc_html( count( $my_courses ) ); ?></div>
221 <div class="tutor-fs-7 tutor-color-secondary"><?php esc_html_e( 'Total Courses', 'tutor' ); ?></div>
222 <div class="tutor-fs-4 tutor-fw-bold tutor-d-block tutor-d-lg-none tutor-ml-auto"><?php echo esc_html( count( $my_courses ) ); ?></div>
223 </div>
224 </div>
225 </div>
226
227 <div class="tutor-col-lg-6 tutor-col-xl-4 tutor-mb-16 tutor-mb-lg-32">
228 <div class="tutor-card">
229 <div class="tutor-d-flex tutor-flex-lg-column tutor-align-center tutor-text-lg-center tutor-px-12 tutor-px-lg-24 tutor-py-8 tutor-py-lg-32">
230 <span class="tutor-round-box tutor-mr-12 tutor-mr-lg-0 tutor-mb-lg-12">
231 <i class="tutor-icon-coins" area-hidden="true"></i>
232 </span>
233 <div class="tutor-fs-3 tutor-fw-bold tutor-d-none tutor-d-lg-block"><?php echo wp_kses_post( tutor_utils()->tutor_price( $earning_sum->total_income ) ); ?></div>
234 <div class="tutor-fs-7 tutor-color-secondary"><?php esc_html_e( 'Total Earnings', 'tutor' ); ?></div>
235 <div class="tutor-fs-4 tutor-fw-bold tutor-d-block tutor-d-lg-none tutor-ml-auto"><?php echo wp_kses_post( tutor_utils()->tutor_price( $earning_sum->total_income ) ); ?></div>
236 </div>
237 </div>
238 </div>
239 <?php
240 endif;
241 ?>
242 </div>
243 </div>
244
245 <?php
246 /**
247 * Active users in progress courses
248 */
249 $placeholder_img = tutor()->url . 'assets/images/placeholder.svg';
250 $courses_in_progress = CourseModel::get_active_courses_by_user( get_current_user_id() );
251 ?>
252
253 <?php if ( $courses_in_progress && $courses_in_progress->have_posts() ) : ?>
254 <div class="tutor-frontend-dashboard-course-progress">
255 <div class="tutor-fs-5 tutor-fw-medium tutor-color-black tutor-text-capitalize tutor-mb-24">
256 <?php esc_html_e( 'In Progress Courses', 'tutor' ); ?>
257 </div>
258 <?php
259 while ( $courses_in_progress->have_posts() ) :
260 $courses_in_progress->the_post();
261 $tutor_course_img = get_tutor_course_thumbnail_src();
262 $course_rating = tutor_utils()->get_course_rating( get_the_ID() );
263 $course_progress = tutor_utils()->get_course_completed_percent( get_the_ID(), 0, true );
264 $completed_number = 0 === (int) $course_progress['completed_count'] ? 1 : (int) $course_progress['completed_count'];
265 ?>
266 <div class="tutor-course-progress-item tutor-card tutor-mb-20">
267 <div class="tutor-row tutor-gx-0">
268 <div class="tutor-col-lg-4">
269 <div class="tutor-ratio tutor-ratio-3x2">
270 <img class="tutor-card-image-left" src="<?php echo empty( $tutor_course_img ) ? esc_url( $placeholder_img ) : esc_url( $tutor_course_img ); ?>" alt="<?php the_title(); ?>" loading="lazy">
271 </div>
272 </div>
273
274 <div class="tutor-col-lg-8 tutor-align-self-center">
275 <div class="tutor-card-body">
276 <?php if ( $course_rating ) : ?>
277 <div class="tutor-ratings tutor-mb-4">
278 <?php tutor_utils()->star_rating_generator( $course_rating->rating_avg ); ?>
279 <div class="tutor-ratings-count">
280 <?php echo esc_html( number_format( $course_rating->rating_avg, 2 ) ); ?>
281 </div>
282 </div>
283 <?php endif; ?>
284
285 <div class="tutor-course-progress-item-title tutor-fs-5 tutor-fw-medium tutor-color-black tutor-mb-12">
286 <?php the_title(); ?>
287 </div>
288
289 <div class="tutor-d-flex tutor-fs-7 tutor-mb-32">
290 <span class="tutor-color-muted tutor-mr-4"><?php esc_html_e( 'Completed Lessons:', 'tutor' ); ?></span>
291 <span class="tutor-fw-medium tutor-color-black">
292 <span>
293 <?php echo esc_html( $course_progress['completed_count'] ); ?>
294 </span>
295 <?php esc_html_e( 'of', 'tutor' ); ?>
296 <span>
297 <?php echo esc_html( $course_progress['total_count'] ); ?>
298 </span>
299 <?php echo esc_html( _n( 'lesson', 'lessons', $completed_number, 'tutor' ) ); ?>
300 </span>
301 </div>
302
303 <div class="tutor-row tutor-align-center">
304 <div class="tutor-col">
305 <div class="tutor-progress-bar tutor-mr-16" style="--tutor-progress-value:<?php echo esc_attr( $course_progress['completed_percent'] ); ?>%"><span class="tutor-progress-value" area-hidden="true"></span></div>
306 </div>
307
308 <div class="tutor-col-auto">
309 <span class="progress-percentage tutor-fs-7 tutor-color-muted">
310 <span class="tutor-fw-medium tutor-color-black ">
311 <?php echo esc_html( $course_progress['completed_percent'] . '%' ); ?>
312 </span><?php esc_html_e( 'Complete', 'tutor' ); ?>
313 </span>
314 </div>
315 </div>
316 </div>
317 </div>
318 <a class="tutor-stretched-link" href="<?php the_permalink(); ?>"></a>
319 </div>
320 </div>
321 <?php endwhile; ?>
322 <?php wp_reset_postdata(); ?>
323 </div>
324 <?php endif; ?>
325
326 <?php
327 $instructor_course = tutor_utils()->get_courses_for_instructors( get_current_user_id() );
328
329 if ( count( $instructor_course ) ) {
330 $course_badges = array(
331 'publish' => 'success',
332 'pending' => 'warning',
333 'trash' => 'danger',
334 );
335
336 ?>
337 <div class="popular-courses-heading-dashboard tutor-d-flex tutor-justify-between tutor-mb-24 tutor-mt-md-40 tutor-mt-0">
338 <span class="tutor-fs-5 tutor-fw-medium tutor-color-black"><?php esc_html_e( 'My Courses', 'tutor' ); ?></span>
339 <a class="tutor-btn tutor-btn-ghost" href="<?php echo esc_url( tutor_utils()->tutor_dashboard_url( 'my-courses' ) ); ?>">
340 <?php esc_html_e( 'View All', 'tutor' ); ?>
341 </a>
342 </div>
343
344 <div class="tutor-dashboard-content-inner">
345 <div class="tutor-table-responsive">
346 <table class="tutor-table table-popular-courses">
347 <thead>
348 <tr>
349 <th>
350 <?php esc_html_e( 'Course Name', 'tutor' ); ?>
351 </th>
352 <th>
353 <?php esc_html_e( 'Enrolled', 'tutor' ); ?>
354 </th>
355 <th>
356 <?php esc_html_e( 'Rating', 'tutor' ); ?>
357 </th>
358 </tr>
359 </thead>
360
361 <tbody>
362 <?php if ( is_array( $instructor_course ) && count( $instructor_course ) ) : ?>
363 <?php
364 foreach ( $instructor_course as $course ) :
365 $enrolled = tutor_utils()->count_enrolled_users_by_course( $course->ID );
366 $course_status = isset( $status_translations[ $course->post_status ] ) ? $status_translations[ $course->post_status ] : __( $course->post_status, 'tutor' ); //phpcs:ignore
367 $course_rating = tutor_utils()->get_course_rating( $course->ID );
368 $course_badge = isset( $course_badges[ $course->post_status ] ) ? $course_badges[ $course->post_status ] : 'dark';
369 ?>
370 <tr>
371 <td>
372 <a href="<?php echo esc_url( get_the_permalink( $course->ID ) ); ?>" target="_blank">
373 <?php echo esc_html( $course->post_title ); ?>
374 </a>
375 </td>
376 <td>
377 <?php echo esc_html( $enrolled ); ?>
378 </td>
379 <td>
380 <?php tutor_utils()->star_rating_generator_v2( $course_rating->rating_avg, null, true ); ?>
381 </td>
382 </tr>
383 <?php endforeach; ?>
384 <?php else : ?>
385 <tr>
386 <td colspan="100%" class="column-empty-state">
387 <?php tutor_utils()->tutor_empty_state( tutor_utils()->not_found_text() ); ?>
388 </td>
389 </tr>
390 <?php endif; ?>
391 </tbody>
392 </table>
393 </div>
394 </div>
395 <?php
396 }
397 ?>
398