PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.78
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.78
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / extensions / Smart_Links / templates / view-analytics.php

view-analytics.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.78, at includes/extensions/Smart_Links/templates/view-analytics.php

180 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Smart Links analytics view.
4 *
5 * @package King_Addons
6 */
7
8 if (!defined('ABSPATH')) {
9 exit;
10 }
11
12 $link_id = isset($_GET['link_id']) ? absint($_GET['link_id']) : 0;
13 $date_from = isset($_GET['date_from']) ? sanitize_text_field(wp_unslash($_GET['date_from'])) : '';
14 $date_to = isset($_GET['date_to']) ? sanitize_text_field(wp_unslash($_GET['date_to'])) : '';
15
16 if ($date_from && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $date_from)) {
17 $date_from = '';
18 }
19 if ($date_to && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $date_to)) {
20 $date_to = '';
21 }
22
23 if ($date_from === '' && $date_to === '') {
24 $date_from = wp_date('Y-m-d', current_time('timestamp') - (13 * DAY_IN_SECONDS));
25 $date_to = wp_date('Y-m-d', current_time('timestamp'));
26 }
27
28 $links = get_posts([
29 'post_type' => \King_Addons\Smart_Links\Smart_Links::POST_TYPE,
30 'post_status' => 'publish',
31 'posts_per_page' => -1,
32 'orderby' => 'title',
33 'order' => 'ASC',
34 ]);
35
36 $totals = $service->get_total_stats($link_id, $date_from, $date_to);
37 $daily = $service->get_daily_stats($link_id, $date_from, $date_to);
38 $top_links = $service->get_top_links(10, $date_from, $date_to);
39
40 $link_label = '';
41 if ($link_id) {
42 $selected_link = $service->get_link($link_id);
43 $link_label = $selected_link ? $selected_link->post_title : '';
44 }
45
46 $base_url = admin_url('admin.php?page=king-addons-smart-links&view=analytics');
47 ?>
48
49 <div class="ka-filter-bar">
50 <form method="get" action="<?php echo esc_url($base_url); ?>" style="display: contents;">
51 <input type="hidden" name="page" value="king-addons-smart-links">
52 <input type="hidden" name="view" value="analytics">
53 <label>
54 <?php esc_html_e('Link', 'king-addons'); ?>
55 <select name="link_id">
56 <option value="0"><?php esc_html_e('All Links', 'king-addons'); ?></option>
57 <?php foreach ($links as $link) : ?>
58 <option value="<?php echo esc_attr($link->ID); ?>" <?php selected($link_id, $link->ID); ?>>
59 <?php echo esc_html($link->post_title); ?>
60 </option>
61 <?php endforeach; ?>
62 </select>
63 </label>
64 <label>
65 <?php esc_html_e('From', 'king-addons'); ?>
66 <input type="date" name="date_from" value="<?php echo esc_attr($date_from); ?>">
67 </label>
68 <label>
69 <?php esc_html_e('To', 'king-addons'); ?>
70 <input type="date" name="date_to" value="<?php echo esc_attr($date_to); ?>">
71 </label>
72 <button type="submit" class="button"><?php esc_html_e('Filter', 'king-addons'); ?></button>
73 </form>
74 </div>
75
76 <div class="ka-stats-grid">
77 <div class="ka-stat-card">
78 <div class="ka-stat-label"><?php esc_html_e('Clicks', 'king-addons'); ?></div>
79 <div class="ka-stat-value"><?php echo esc_html(number_format_i18n($totals['clicks'])); ?></div>
80 </div>
81 <div class="ka-stat-card">
82 <div class="ka-stat-label"><?php esc_html_e('Unique Clicks', 'king-addons'); ?></div>
83 <div class="ka-stat-value"><?php echo esc_html(number_format_i18n($totals['unique_clicks'])); ?></div>
84 </div>
85 <div class="ka-stat-card">
86 <div class="ka-stat-label"><?php esc_html_e('Range', 'king-addons'); ?></div>
87 <div class="ka-stat-value" style="font-size:16px;line-height:1.4">
88 <?php echo esc_html($date_from); ?> <?php echo esc_html($date_to); ?>
89 </div>
90 </div>
91 <div class="ka-stat-card">
92 <div class="ka-stat-label"><?php esc_html_e('Scope', 'king-addons'); ?></div>
93 <div class="ka-stat-value" style="font-size:16px;line-height:1.4">
94 <?php echo $link_label ? esc_html($link_label) : esc_html__('All Links', 'king-addons'); ?>
95 </div>
96 </div>
97 </div>
98
99 <div class="ka-card">
100 <div class="ka-card-header">
101 <span class="dashicons dashicons-chart-line green"></span>
102 <h2><?php esc_html_e('Daily Performance', 'king-addons'); ?></h2>
103 </div>
104 <div class="ka-card-body" style="padding:0;">
105 <?php if (empty($daily)) : ?>
106 <div class="ka-empty">
107 <span class="dashicons dashicons-chart-line"></span>
108 <p><?php esc_html_e('No analytics data yet.', 'king-addons'); ?></p>
109 </div>
110 <?php else : ?>
111 <table class="ka-table">
112 <thead>
113 <tr>
114 <th><?php esc_html_e('Date', 'king-addons'); ?></th>
115 <th class="text-center"><?php esc_html_e('Clicks', 'king-addons'); ?></th>
116 <th class="text-center"><?php esc_html_e('Unique', 'king-addons'); ?></th>
117 </tr>
118 </thead>
119 <tbody>
120 <?php foreach ($daily as $row) : ?>
121 <tr>
122 <td><?php echo esc_html($row['date']); ?></td>
123 <td class="text-center"><?php echo esc_html(number_format_i18n($row['clicks'])); ?></td>
124 <td class="text-center"><?php echo esc_html(number_format_i18n($row['unique_clicks'])); ?></td>
125 </tr>
126 <?php endforeach; ?>
127 </tbody>
128 </table>
129 <?php endif; ?>
130 </div>
131 </div>
132
133 <div class="ka-card">
134 <div class="ka-card-header">
135 <span class="dashicons dashicons-star-filled green"></span>
136 <h2><?php esc_html_e('Top Links', 'king-addons'); ?></h2>
137 </div>
138 <div class="ka-card-body" style="padding:0;">
139 <?php if (empty($top_links)) : ?>
140 <div class="ka-empty">
141 <span class="dashicons dashicons-admin-links"></span>
142 <p><?php esc_html_e('No top links yet.', 'king-addons'); ?></p>
143 </div>
144 <?php else : ?>
145 <table class="ka-table">
146 <thead>
147 <tr>
148 <th><?php esc_html_e('Link', 'king-addons'); ?></th>
149 <th class="text-center"><?php esc_html_e('Clicks', 'king-addons'); ?></th>
150 <th class="text-center"><?php esc_html_e('Unique', 'king-addons'); ?></th>
151 </tr>
152 </thead>
153 <tbody>
154 <?php foreach ($top_links as $row) :
155 $slug = (string) get_post_meta($row['link']->ID, \King_Addons\Smart_Links\Smart_Links::META_SLUG, true);
156 $short_url = $service->build_short_url($slug);
157 ?>
158 <tr>
159 <td>
160 <strong><?php echo esc_html($row['link']->post_title); ?></strong>
161 <div><a href="<?php echo esc_url($short_url); ?>" target="_blank" rel="noopener"><?php echo esc_html($short_url); ?></a></div>
162 </td>
163 <td class="text-center"><?php echo esc_html(number_format_i18n($row['clicks'])); ?></td>
164 <td class="text-center"><?php echo esc_html(number_format_i18n($row['unique_clicks'])); ?></td>
165 </tr>
166 <?php endforeach; ?>
167 </tbody>
168 </table>
169 <?php endif; ?>
170 </div>
171 </div>
172
173 <div class="ka-pro-notice">
174 <h2><?php esc_html_e('Unlock Pro Analytics', 'king-addons'); ?></h2>
175 <p><?php esc_html_e('Get geo maps, referrer domains, device breakdowns, and advanced attribution.', 'king-addons'); ?></p>
176 <a href="https://kingaddons.com/pricing/" target="_blank" class="ka-btn ka-btn-pink">
177 <?php esc_html_e('Upgrade to Pro', 'king-addons'); ?>
178 </a>
179 </div>
180