PluginProbe
Analytify – Google Analytics Dashboard For WordPress (GA4 analytics tracking) / trunk
Analytify – Google Analytics Dashboard For WordPress (GA4 analytics tracking) vtrunk
9.1.2 9.1.1 9.1.0 9.0.2 9.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.1.0 1.1.1 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 All 153 releases
wp-analytify / classes / analytify-utils / analytify-utils-ui.php

analytify-utils-ui.php in Analytify – Google Analytics Dashboard For WordPress (GA4 analytics tracking) trunk, at classes/analytify-utils/analytify-utils-ui.php

147 lines 7.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore Squiz.Commenting.FileComment.Missing -- File doc comment exists
2 /**
3 * Analytify Utils UI Trait
4 *
5 * This trait contains UI-related utility functions for the Analytify plugin.
6 * It was created to separate UI utility logic from the main utils class,
7 * providing helper functions for date handling, form generation,
8 * and user interface components.
9 *
10 * PURPOSE:
11 * - Provides UI utility functions.
12 * - Handles date and form components.
13 * - Manages user interface elements.
14 * - Offers UI helper methods.
15 *
16 * @package WP_Analytify
17 * @subpackage Utils
18 * @since 8.0.0
19 */
20
21 trait Analytify_Utils_UI {
22
23 /**
24 * Generate date selection list HTML.
25 *
26 * Creates an HTML list of predefined date ranges for analytics
27 * including today, yesterday, last 7 days, last 30 days, etc.
28 *
29 * @return void Outputs HTML directly.
30 */
31 public static function get_date_list() {
32 ob_start();
33 ?>
34 <ul class="analytify_select_date_list">
35 <li><?php esc_html_e( 'Today', 'wp-analytify' ); ?> <span data-date-diff="current_day" data-start="" data-end=""><span class="analytify_start_date_data analytify_current_day"></span> <span class="analytify_end_date_data analytify_today_date"></span></span></li>
36 <li><?php esc_html_e( 'Yesterday', 'wp-analytify' ); ?> <span data-date-diff="yesterday" data-start="" data-end=""><span class="analytify_start_date_data analytify_yesterday"></span> <span class="analytify_end_date_data analytify_yesterday_date"></span></span></li>
37 <li><?php esc_html_e( 'Last 7 days', 'wp-analytify' ); ?> <span data-date-diff="last_7_days" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_7_days"></span> <span class="analytify_end_date_data analytify_today_date"></span></span></li>
38 <li><?php esc_html_e( 'Last 14 days', 'wp-analytify' ); ?> <span data-date-diff="last_14_days" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_14_days"></span> <span class="analytify_end_date_data analytify_today_date"></span></span></li>
39 <li><?php esc_html_e( 'Last 30 days', 'wp-analytify' ); ?> <span data-date-diff="last_30_days" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_30_day"></span> <span class="analytify_end_date_data analytify_today_date"></span></span></li>
40 <li><?php esc_html_e( 'This month', 'wp-analytify' ); ?> <span data-date-diff="this_month" data-start="" data-end=""><span class="analytify_start_date_data analytify_this_month_start_date"></span> <span class="analytify_end_date_data analytify_today_date"></span></span></li>
41 <li><?php esc_html_e( 'Last month', 'wp-analytify' ); ?> <span data-date-diff="last_month" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_month_start_date"></span> <span class="analytify_end_date_data analytify_last_month_end_date"></span></span></li>
42 <li><?php esc_html_e( 'Last 3 months', 'wp-analytify' ); ?> <span data-date-diff="last_3_months" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_3_months_start_date"></span> <span class="analytify_end_date_data analytify_last_month_end_date"></span></span></li>
43 <li><?php esc_html_e( 'Last 6 months', 'wp-analytify' ); ?> <span data-date-diff="last_6_months" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_6_months_start_date"></span> <span class="analytify_end_date_data analytify_last_month_end_date"></span></span></li>
44 <li><?php esc_html_e( 'Last year', 'wp-analytify' ); ?> <span data-date-diff="last_year" data-start="" data-end=""><span class="analytify_start_date_data analytify_last_year_start_date"></span> <span class="analytify_end_date_data analytify_last_month_end_date"></span></span></li>
45 <li><?php esc_html_e( 'Custom Range', 'wp-analytify' ); ?> <span class="custom_range"><?php esc_html_e( 'Select a custom date', 'wp-analytify' ); ?></span></li>
46 </ul>
47 <?php
48 $content = ob_get_clean();
49 echo wp_kses_post( $content ? $content : '' );
50 }
51
52 /**
53 * Generate date selection form.
54 *
55 * Creates an HTML form for selecting date ranges with start and end
56 * date inputs, submit button, and date list dropdown.
57 *
58 * @param string $start_date Start date value.
59 * @param string $end_date End date value.
60 * @param array<string, mixed> $args Additional arguments for customization.
61 * @version 9.0.0
62 * @return void
63 */
64 public static function date_form( $start_date, $end_date, $args = array() ) {
65 $_analytify_profile = get_option( 'wp-analytify-profile' );
66 $dashboard_profile = isset( $_analytify_profile['profile_for_dashboard'] ) ? $_analytify_profile['profile_for_dashboard'] : '';
67
68 if ( empty( $dashboard_profile ) ) {
69 return;
70 }
71
72 $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Admin ?page= slug for CSS class only; not form POST handling.
73
74 $class = ( 'edd-dashboard' === $page || 'analytify-woocommerce' === $page || 'analytify-pmpro' === $page || 'analytify-learndash' === $page || 'analytify-lifterlms' === $page ) ? 'ecommerce-stats-class' : $page;
75
76 ?>
77 <form class="analytify_form_date analytify_form_date_pro <?php echo esc_attr( $class ); ?>" action="" method="post">
78 <?php
79 if ( ! empty( $args['input_before_field_set'] ) ) {
80 echo wp_kses_post( $args['input_before_field_set'] );
81 }
82 ?>
83 <div class="analytify_select_date_fields">
84 <input type="hidden" name="st_date" id="analytify_start_val">
85 <input type="hidden" name="ed_date" id="analytify_end_val">
86 <input type="hidden" name="analytify_date_diff" id="analytify_date_diff">
87 <input type="hidden" name="analytify_date_start" id="analytify_date_start" value="<?php echo esc_attr( $start_date ); ?>">
88 <input type="hidden" name="analytify_date_end" id="analytify_date_end" value="<?php echo esc_attr( $end_date ); ?>">
89
90 <label for="analytify_start"><?php esc_html_e( 'From:', 'wp-analytify' ); ?></label>
91 <input type="text" required id="analytify_start" value="">
92 <label for="analytify_end"><?php esc_html_e( 'To:', 'wp-analytify' ); ?></label>
93 <input type="text" onpaste="return false;" oncopy="return false;" autocomplete="off" required id="analytify_end" value="">
94 <div class="analytify_arrow_date_picker"></div>
95 </div>
96 <?php
97 if ( ! empty( $args['input_after_field_set'] ) ) {
98 echo wp_kses_post( $args['input_after_field_set'] );
99 }
100 ?>
101 <input
102 type="submit"
103 value="<?php esc_attr_e( 'View Stats', 'wp-analytify' ); ?>"
104 name="view_data"
105 class="analytify_submit_date_btn"
106 <?php
107 if ( ! empty( $args['input_submit_id'] ) ) {
108 echo ' id="' . esc_attr( $args['input_submit_id'] ) . '"';
109 }
110 ?>
111 >
112 <?php self::get_date_list(); ?>
113 </form>
114 <br>
115 <?php
116 }
117
118 /**
119 * Create error display box.
120 *
121 * Generates an HTML error box with status and message information
122 * for displaying error messages in a consistent format.
123 *
124 * @param string $status Error status or code.
125 * @param string $message Error message text.
126 * @param string $heading Error box heading (default: 'Unable To Fetch Reports').
127 * @return void
128 */
129 public static function create_error_box( $status, $message, $heading = 'Unable To Fetch Reports' ) {
130 ?>
131 <div class="analytify-email-promo-contianer">
132 <div class="analytify-email-premium-overlay">
133 <div class="analytify-email-premium-popup">
134 <h3 class="analytify-promo-popup-heading" style="text-align: left;"><?php echo esc_html( $heading ); ?></h3>
135 <p class="analytify-promo-popup-paragraph analytify-error-popup-paragraph">
136 <strong><?php esc_html_e( 'Status:', 'wp-analytify' ); ?> </strong> <?php echo esc_html( $status ); ?>
137 </p>
138 <p class="analytify-promo-popup-paragraph analytify-error-popup-paragraph">
139 <strong><?php esc_html_e( 'Message:', 'wp-analytify' ); ?> </strong> <?php echo esc_html( $message ); ?>
140 </p>
141 </div>
142 </div>
143 </div>
144 <?php
145 }
146 }
147