PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.0
Tutor LMS – eLearning and online course solution v4.0.0
4.0.0 3.9.15 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 / components / profile-completion.php
tutor / templates / dashboard / components Last commit date
header.php 1 day ago profile-completion.php 1 day ago quiz-attempt-row.php 1 day ago sidebar-nav-mobile.php 1 day ago sidebar.php 1 day ago
profile-completion.php
109 lines
1 <?php
2 /**
3 * Profile Completion Template
4 *
5 * @package Tutor\Templates
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 4.0.0
9 */
10
11 defined( 'ABSPATH' ) || exit;
12
13 use Tutor\Components\Constants\Size;
14 use Tutor\Components\Progress;
15 use Tutor\Components\SvgIcon;
16 use Tutor\Components\Constants\Color;
17 use TUTOR\Icon;
18
19 if ( ! tutor_utils()->get_option( 'enable_profile_completion' ) ) {
20 return;
21 }
22
23 $profile_completion = tutor_utils()->user_profile_completion();
24
25 if ( empty( $profile_completion ) || ! is_array( $profile_completion ) ) {
26 return;
27 }
28
29 $total_count = count( $profile_completion );
30 $first_incomplete_key = null;
31
32 foreach ( $profile_completion as $key => $data ) {
33 if ( empty( $data['is_set'] ) ) {
34 $first_incomplete_key = $key;
35 break;
36 }
37 }
38
39 if ( null === $first_incomplete_key ) {
40 return;
41 }
42
43 $complete_count = 0;
44
45 foreach ( $profile_completion as $data ) {
46 if ( ! empty( $data['is_set'] ) ) {
47 $complete_count++;
48 }
49 }
50
51 $completion_percentage = $total_count > 0
52 ? ( $complete_count / $total_count ) * 100
53 : 0;
54
55 $first_incomplete_item = $profile_completion[ $first_incomplete_key ];
56 $rest_of_the_items = $profile_completion;
57
58 unset( $rest_of_the_items[ $first_incomplete_key ] );
59 ?>
60 <div class="tutor-profile-completion" x-data="{ expanded: false }">
61 <div class="tutor-profile-completion-header" :class="expanded && 'tutor-expanded'">
62 <div class="tutor-flex tutor-items-center tutor-gap-5">
63 <?php Progress::make()->type( 'circle' )->size( Size::MEDIUM )->value( $completion_percentage )->render(); ?>
64 <div class="tutor-flex tutor-flex-column tutor-gap-2">
65 <div class="tutor-tiny tutor-text-secondary">
66 <?php esc_html_e( 'Complete Your Profile', 'tutor' ); ?>
67 </div>
68
69 <?php if ( ! empty( $first_incomplete_item ) ) { ?>
70 <a href="<?php echo esc_url( $first_incomplete_item['url'] ); ?>"
71 class="tutor-tiny tutor-font-medium tutor-text-brand tutor-flex tutor-items-center tutor-gap-3">
72 <?php echo esc_html( $first_incomplete_item['text'] ); ?>
73 <?php SvgIcon::make()->name( Icon::ARROW_RIGHT_2 )->flip_rtl()->render(); ?>
74 </a>
75 <?php } ?>
76 </div>
77 </div>
78
79 <button type="button" class="tutor-btn tutor-btn-ghost tutor-btn-small tutor-btn-icon" @click="expanded = !expanded" aria-label="<?php esc_attr_e( 'Toggle profile completion', 'tutor' ); ?>">
80 <span :class="expanded && 'tutor-rotate-180'" class="tutor-flex tutor-transition-all">
81 <?php SvgIcon::make()->name( Icon::CHEVRON_DOWN_2 )->size( 20 )->color( Color::SECONDARY )->render(); ?>
82 </span>
83 </button>
84 </div>
85
86 <div class="tutor-profile-completion-body" x-show="expanded" x-cloak>
87 <?php foreach ( $rest_of_the_items as $data ) : ?>
88 <div class="tutor-flex tutor-items-center tutor-gap-8">
89 <?php if ( $data['is_set'] ) : ?>
90 <div class="tutor-flex tutor-p-3 tutor-surface-brand-primary tutor-border tutor-border-brand tutor-rounded-full">
91 <?php SvgIcon::make()->name( Icon::CHECK_2 )->size( 16 )->color( Color::IDLE_INVERSE )->render(); ?>
92 </div>
93 <div class="tutor-tiny tutor-font-medium tutor-text-subdued">
94 <?php echo esc_html( $data['text'] ); ?>
95 </div>
96 <?php else : ?>
97 <div class="tutor-flex tutor-p-3 tutor-border tutor-rounded-full">
98 <?php SvgIcon::make()->name( Icon::CHECK_2 )->size( 16 )->color( Color::DISABLED )->render(); ?>
99 </div>
100 <a href="<?php echo esc_url( $data['url'] ); ?>" class="tutor-tiny tutor-font-medium tutor-text-brand tutor-flex tutor-items-center tutor-gap-3">
101 <?php echo esc_html( $data['text'] ); ?>
102 <?php SvgIcon::make()->name( Icon::ARROW_RIGHT_2 )->flip_rtl()->render(); ?>
103 </a>
104 <?php endif; ?>
105 </div>
106 <?php endforeach; ?>
107 </div>
108 </div>
109