stat-card.php
83 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Stat Card Component |
| 4 | * Reusable stat card component for dashboard |
| 5 | * |
| 6 | * @package Tutor\Templates |
| 7 | * @author Themeum <support@themeum.com> |
| 8 | * @link https://themeum.com |
| 9 | * @since 4.0.0 |
| 10 | */ |
| 11 | |
| 12 | use TUTOR\Input; |
| 13 | use TUTOR\Instructor; |
| 14 | use Tutor\Components\SvgIcon; |
| 15 | |
| 16 | |
| 17 | defined( 'ABSPATH' ) || exit; |
| 18 | |
| 19 | // Default values. |
| 20 | $icon_size = $icon_size ?? 24; |
| 21 | $value = $value ?? 0; |
| 22 | $content_display = $content ?? ''; |
| 23 | $show_graph = $show_graph ?? false; |
| 24 | $data = $data ?? array( 0, 0, 0 ); |
| 25 | $hover_content = $hover_content ?? array(); |
| 26 | $variation = empty( $variation ) ? $icon : $variation; |
| 27 | |
| 28 | // Required fields validation. |
| 29 | if ( ! isset( $card_title ) || empty( $card_title ) ) { |
| 30 | return; |
| 31 | } |
| 32 | if ( ! isset( $icon ) || empty( $icon ) ) { |
| 33 | return; |
| 34 | } |
| 35 | |
| 36 | if ( ! empty( $hover_content ) ) { |
| 37 | $start_date = Input::has( 'start_date' ) ? tutor_get_formated_date( 'Y-m-d', Input::get( 'start_date' ) ) : ''; |
| 38 | $end_date = Input::has( 'end_date' ) ? tutor_get_formated_date( 'Y-m-d', Input::get( 'end_date' ) ) : ''; |
| 39 | $template_path = tutor()->path . 'templates/dashboard/instructor/analytics/stat-card-hover.php'; |
| 40 | $hover_template = get_template_buffer( |
| 41 | $template_path, |
| 42 | array( |
| 43 | 'start_date' => $start_date, |
| 44 | 'end_date' => $end_date, |
| 45 | 'hover_content' => $hover_content, |
| 46 | 'hover_amount' => $value, |
| 47 | ), |
| 48 | false |
| 49 | ); |
| 50 | } |
| 51 | |
| 52 | ?> |
| 53 | <div class="tutor-stat-card tutor-stat-card-<?php echo esc_attr( $variation ); ?>"> |
| 54 | <div class="tutor-stat-card-header"> |
| 55 | <div class="tutor-stat-card-title"> |
| 56 | <?php echo esc_html( $card_title ); ?> |
| 57 | </div> |
| 58 | <div class="tutor-stat-card-icon tutor-flex"> |
| 59 | <?php SvgIcon::make()->name( $icon )->size( $icon_size )->render(); ?> |
| 60 | </div> |
| 61 | </div> |
| 62 | <div class="tutor-stat-card-content"> |
| 63 | <div class="tutor-stat-card-value"> |
| 64 | <?php echo wp_kses( $value, tutor_price_allowed_html() ); ?> |
| 65 | </div> |
| 66 | |
| 67 | <?php if ( ! empty( $content_display ) ) : ?> |
| 68 | <p class="tutor-stat-card-change"> |
| 69 | <?php echo esc_html( $content_display ); ?> |
| 70 | </p> |
| 71 | <?php endif; ?> |
| 72 | |
| 73 | <?php if ( ! empty( $hover_content ) ) : ?> |
| 74 | <?php echo $hover_template; //phpcs:ignore ?> |
| 75 | <?php endif; ?> |
| 76 | </div> |
| 77 | <?php if ( $show_graph ) : ?> |
| 78 | <div class="tutor-stat-card-chart" x-data="tutorStatCard(<?php echo esc_attr( wp_json_encode( $data ) ); ?>)"> |
| 79 | <canvas x-ref="canvas" hright="33" width="100%"></canvas> |
| 80 | </div> |
| 81 | <?php endif; ?> |
| 82 | </div> |
| 83 |