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 |