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 / inc / analytics-dashboard.php

analytics-dashboard.php in Analytify – Google Analytics Dashboard For WordPress (GA4 analytics tracking) trunk, at inc/analytics-dashboard.php

483 lines 22.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Analytify Dashboard file.
4 *
5 * @package WP_Analytify
6 */
7
8 // Exit if accessed directly.
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 $wp_analytify = $GLOBALS['WP_ANALYTIFY'];
14 $selected_stats = $wp_analytify->settings->get_option( 'show_analytics_panels_dashboard', 'wp-analytify-dashboard', array() );
15
16 $dashboard_profile_id = WPANALYTIFY_Utils::get_reporting_property();
17 $access_token = get_option( 'post_analytics_token' );
18 $version = defined( 'ANALYTIFY_PRO_VERSION' ) ? ANALYTIFY_PRO_VERSION : ( defined( 'ANALYTIFY_VERSION' ) ? ANALYTIFY_VERSION : '1.0.0' );
19
20 // Get the start date and end date from wpa-core-functions.
21 $date_picker_dates = analytify_datepicker_dates();
22 $start_date = $date_picker_dates['start_date'] ?? '';
23 $end_date = $date_picker_dates['end_date'] ?? '';
24
25 // Get compare dates for legacy version (before v5.0.0).
26 $date_diff = WPANALYTIFY_Utils::calculate_date_diff( $start_date, $end_date );
27 $compare_start_date = $date_diff['start_date'];
28 $compare_end_date = $date_diff['end_date'];
29
30 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reading URL parameters for display purposes.
31 $dashboard_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
32 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reading URL parameters for display purposes.
33 $dashboard_show = isset( $_GET['show'] ) ? sanitize_text_field( wp_unslash( $_GET['show'] ) ) : '';
34
35 $show_dashboard_export = class_exists( 'WP_Analytify_Pro_Base' )
36 && 'analytify-dashboard' === $dashboard_page
37 && empty( $dashboard_show );
38
39 /**
40 * To be used by the 'view stats' on GA's website link.
41 * Date range is for legacy support, 5.0.0 or later will use date generated by JS.
42 */
43 $report_url = WP_ANALYTIFY_FUNCTIONS::get_ga_report_url( $dashboard_profile_id );
44 $report_date_range = WP_ANALYTIFY_FUNCTIONS::get_ga_report_range( $start_date, $end_date, $compare_start_date, $compare_end_date );
45 ?>
46 <div class="wpanalytify analytify-dashboard-nav">
47 <div class="wpb_plugin_wraper">
48 <div class="wpb_plugin_header_wraper">
49 <div class="graph"></div>
50 <div class="wpb_plugin_header">
51 <div class="wpb_plugin_header_title"></div>
52 <div class="wpb_plugin_header_info">
53 <a href="https://analytify.io/changelog/?utm-source=main-dashboard" target="_blank" class="btn"><?php echo esc_html__( 'View Changelog', 'wp-analytify' ); ?></a>
54 </div>
55 <div class="wpb_plugin_header_logo">
56 <img src="<?php echo esc_url( ( defined( 'ANALYTIFY_PLUGIN_URL' ) ? ANALYTIFY_PLUGIN_URL : '' ) . 'assets/img/logo.svg' ); ?>" alt="Analytify">
57 </div>
58 </div>
59 </div>
60
61 <div class="analytify-dashboard-body-container">
62 <div class="wpb_plugin_body_wraper">
63 <div class="wpb_plugin_body">
64 <div class="wpa-tab-wrapper"><?php $wp_analytify->dashboard_navigation(); ?></div>
65 <div class="wpb_plugin_tabs_content analytify-dashboard-content">
66 <div class="analytify_wraper <?php echo esc_attr( implode( ' ', $selected_stats ) ); ?>">
67 <div class="analytify_main_title_section analytify-dashboard-header-toolbar">
68 <div class="analytify_dashboard_title">
69 <div class="analytify_dashboard_title_row">
70 <h1 class="analytify_pull_left analytify_main_title"><?php esc_html_e( 'Overview Dashboard', 'wp-analytify' ); ?></h1>
71 <?php if ( $show_dashboard_export ) { ?>
72 <span class="analytify_export_dropdown">
73 <button type="button" class="analytify_export_btn" aria-expanded="false" aria-haspopup="true">
74 <?php esc_html_e( 'Export', 'wp-analytify' ); ?>
75 </button>
76 <ul class="analytify_export_menu" role="menu">
77 <li role="none">
78 <button type="button" class="analytify_export_menu_item" data-export-type="excel" role="menuitem">
79 <?php esc_html_e( 'Export to Excel', 'wp-analytify' ); ?>
80 </button>
81 </li>
82 <li role="none">
83 <button type="button" class="analytify_export_menu_item" data-export-type="pdf" role="menuitem">
84 <?php esc_html_e( 'Export to PDF', 'wp-analytify' ); ?>
85 </button>
86 </li>
87 <li role="none">
88 <button type="button" class="analytify_export_menu_item" data-export-type="csv" role="menuitem">
89 <?php esc_html_e( 'Export to CSV', 'wp-analytify' ); ?>
90 </button>
91 </li>
92 </ul>
93 </span>
94 <?php } ?>
95 </div>
96 <?php WPANALYTIFY_Utils::dashboard_subtitle_section(); ?>
97
98 </div>
99 <div class="analytify_main_setting_bar">
100 <div class="analytify_pull_right analytify_setting">
101 <div class="analytify_select_date">
102 <?php WPANALYTIFY_Utils::date_form( $start_date, $end_date ); ?>
103 </div>
104 </div>
105 </div>
106 </div>
107
108 <?php
109 // Show notice if the user is using UA or has'nt selected any property yet.
110 if ( WP_ANALYTIFY_FUNCTIONS::wpa_check_ga_version() && ! WP_ANALYTIFY_FUNCTIONS::wpa_check_profile_selection( 'Analytify' ) ) {
111 /*
112 * Check with roles assigned at dashboard settings.
113 */
114 $is_access_level = $wp_analytify->settings->get_option( 'show_analytics_roles_dashboard', 'wp-analytify-dashboard' );
115
116 // Show dashboard to admin incase of empty access roles.
117 if ( empty( $is_access_level ) ) {
118 $is_access_level = array( 'administrator' ); }
119
120 if ( $wp_analytify->pa_check_roles( $is_access_level ) ) {
121 if ( $access_token ) {
122
123 // 'Compare Chart' section added by the Pro version.
124 if ( in_array( 'show-compare-stats', $selected_stats, true ) ) {
125 /**
126 * All 4 dates are for Pro versions that are older then v5.0.0.
127 * Version 5.0.0 and above will use dates via AJAX.
128 */
129 do_action( 'wp_analytify_view_compare_stats', $start_date, $end_date, $compare_start_date, $compare_end_date );
130 }
131
132 // 'General Stats' section.
133 if ( in_array( 'show-overall-dashboard', $selected_stats, true ) ) {
134 ?>
135 <div class="analytify_general_status analytify_section_general_stats analytify_status_box_wraper" data-endpoint="general-stats" data-target=".analytify_section_general_stats">
136 <div class="analytify_status_header">
137 <h3><?php esc_html_e( 'General Statistics', 'wp-analytify' ); ?>
138 <?php if ( class_exists( 'WP_Analytify_Pro_Base' ) ) { ?>
139 <a href="#" class="analytify-export-data analytify_tooltip" data-stats-type="general-stats">
140 <span class="analytify_tooltiptext"><?php esc_html_e( 'Export General Stats', 'wp-analytify' ); ?></span>
141 </a>
142 <img src="<?php echo esc_url( admin_url( 'images/spinner.gif' ) ); ?>" class='analytify-export-loader' style="display:none">
143 <?php } ?>
144 </h3>
145 </div>
146 <div class="analytify_status_body">
147 <div class="analytify_general_status_boxes_wraper stats-wrapper"></div>
148 </div>
149 <div class="analytify_stats_loading analytify_general_status_boxes_wraper">
150 <?php for ( $i = 0; $i < 9; $i++ ) { ?>
151 <div class="analytify_general_status_boxes">
152 <p class="skt-loading loading-width-sm inline"></p>
153 <div>
154 <p class="skt-loading loading-width-lg inline large"></p>
155 </div>
156 <p class="skt-loading"></p>
157 <p class="skt-loading"></p>
158 <div class="analytify_general_status_footer_info">
159 <p class="skt-loading light-gray"></p>
160 </div>
161 </div>
162 <?php } ?>
163 </div>
164 </div>
165 <?php
166 }
167
168 // 'Top Pages' section.
169 if ( in_array( 'show-top-pages-dashboard', $selected_stats, true ) ) {
170 ?>
171 <div class="analytify_general_status analytify_section_top_pages analytify_status_box_wraper" data-endpoint="top-pages-stats" data-target=".analytify_section_top_pages">
172 <div class="analytify_status_header">
173 <h3>
174 <?php esc_html_e( 'Top pages by views', 'wp-analytify' ); ?>
175 <a href="javascript: return false;" data-ga-dashboard-link="<?php echo esc_attr( WPANALYTIFY_Utils::get_all_stats_link( $report_url, 'top_pages', false ) ); ?>" target="_blank" class="analytify_tooltip"><span class="analytify_tooltiptext"><?php esc_html_e( 'View All Top Pages', 'wp-analytify' ); ?></span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>
176 <?php do_action( 'analytify_after_top_page_text' ); ?>
177 </h3>
178 </div>
179 <div class="analytify_status_body">
180 <div class="analytify_top_pages_boxes_wraper stats-wrapper"></div>
181 </div>
182 <div class="analytify_stats_loading">
183 <table class="analytify_data_tables">
184 <thead>
185 <tr>
186 <th class="analytify_num_row"><p class="skt-loading light-gray"></p></th>
187 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
188 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
189 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
190 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
191 </tr>
192 </thead>
193 <tbody>
194 <?php for ( $i = 0; $i < 5; $i++ ) { ?>
195 <tr>
196 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
197 <td><p class="skt-loading"></p></td>
198 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
199 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
200 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
201 </tr>
202 <?php } ?>
203 </tbody>
204 </table>
205 </div>
206 </div>
207 <?php
208 }
209
210 // 'Geographic' section.
211 if ( in_array( 'show-geographic-dashboard', $selected_stats, true ) ) {
212 ?>
213 <div class="analytify_general_status analytify_section_geo_stats analytify_status_box_wraper" data-endpoint="geographic-stats" data-target=".analytify_section_geo_stats">
214 <div class="analytify_status_header">
215 <h3><?php esc_html_e( 'Geographic Stats', 'wp-analytify' ); ?></h3>
216 </div>
217 <div class="analytify_status_body">
218 <div class="analytify_geographic_stats_boxes_wraper stats-wrapper"></div>
219 </div>
220 <div class="analytify_stats_loading">
221 <div class="analytify_clearfix">
222 <?php for ( $i = 0; $i < 2; $i++ ) { ?>
223 <table class="analytify_data_tables analytify_half analytify_pull_left">
224 <thead>
225 <tr>
226 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
227 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
228 </tr>
229 </thead>
230 <tbody>
231 <?php for ( $k = 0; $k < 5; $k++ ) { ?>
232 <tr>
233 <td><p class="skt-loading"></p></td>
234 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
235 </tr>
236 <?php } ?>
237 </tbody>
238 </table>
239 <?php } ?>
240 </div>
241 </div>
242 </div>
243 <?php
244 }
245
246 // 'System' section.
247 if ( in_array( 'show-system-stats', $selected_stats, true ) ) {
248 ?>
249 <div class="analytify_general_status analytify_section_system_stats analytify_status_box_wraper" data-endpoint="system-stats" data-target=".analytify_section_system_stats">
250 <div class="analytify_status_header">
251 <h3><?php esc_html_e( 'System Stats', 'wp-analytify' ); ?></h3>
252 </div>
253 <div class="analytify_status_body">
254 <div class="analytify_system_stats_boxes_wraper stats-wrapper"></div>
255 </div>
256 <div class="analytify_stats_loading">
257 <div class="analytify_clearfix">
258 <?php for ( $i = 0; $i < 3; $i++ ) { ?>
259 <div class="analytify_one_tree_table">
260 <table class="analytify_data_tables">
261 <thead>
262 <tr>
263 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
264 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
265 </tr>
266 </thead>
267 <tbody>
268 <?php for ( $k = 0; $k < 5; $k++ ) { ?>
269 <tr>
270 <td><p class="skt-loading"></p></td>
271 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
272 </tr>
273 <?php } ?>
274 </tbody>
275 </table>
276 </div>
277 <?php } ?>
278 </div>
279 </div>
280 </div>
281 <?php
282 }
283
284 // Free vs Pro comparison gif.
285 if ( ! class_exists( 'WP_Analytify_Pro' ) && 'yes' !== get_option( 'analytify_remove_comparison_gif' ) ) {
286 ?>
287 <div class="analytify_general_status analytify_general_status-gif">
288 <span class="dashicons dashicons-no-alt analytify_general_status-icon"><?php esc_html_e( 'Dismiss', 'wp-analytify' ); ?></span>
289 <a href="https://analytify.io/pricing?utm_source=analytify-lite&utm_medium=overview-dashboard&utm_campaign=pro-upgrade&utm_content=Upgrade-Banner-CTA" class="analytify_block" target="_blank">
290 <img src="<?php echo esc_url( plugins_url( '../assets/img/analytify_compare.gif', __FILE__ ) ); ?>" alt="<?php esc_attr_e( 'Upgrade to Pro', 'wp-analytify' ); ?>" style="width:100%">
291 </a>
292 <a href="https://analytify.io/pricing?utm_source=analytify-lite&utm_medium=overview-dashboard&utm_campaign=pro-upgrade&utm_content=Upgrade-Banner-CTA" class="analytify_go_pro_overlay" target="_blank">
293 <span class="analytify_go_pro_overlay_inner">
294 <span class="analytify_h2"><?php esc_html_e( 'Premium feature', 'wp-analytify' ); ?></span>
295 <span class="analytify_btn" target="_blank"><?php esc_html_e( 'Upgrade Now', 'wp-analytify' ); ?></span>
296 </span>
297 </a>
298 </div>
299 <?php
300 }
301
302 // phpcs:ignore Squiz.PHP.CommentedOutCode.Found -- Kept for reference.
303 /*if ( 'ga4' === WPANALYTIFY_Utils::get_ga_mode() ) { ?><div class="analytify_column"><div class="analytify_half analytify_left_flow"><?php }*/
304
305 // 'Keywords' section.
306 if ( in_array( 'show-keywords-dashboard', $selected_stats, true ) ) {
307 ?>
308 <div class="analytify_general_status analytify_section_keywords_stats analytify_status_box_wraper" data-endpoint="keyword-stats" data-target=".analytify_section_keywords_stats">
309 <div class="analytify_status_header analytify_header_adj">
310 <h3>
311 <?php
312 esc_html_e( 'Keywords (How People Are Finding Your Website)', 'wp-analytify' );
313 do_action( 'analytify_after_top_keyword_text' );
314 ?>
315 </h3>
316 <div class="analytify_status_header_value keywords_total empty-on-loading title-total-wrapper"></div>
317 </div>
318 <div class="analytify_status_body">
319 <div class="analytify_keyword_stats_boxes_wraper stats-wrapper"></div>
320 </div>
321 <div class="analytify_stats_loading">
322 <table class="analytify_data_tables">
323 <thead>
324 <tr>
325 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
326 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
327 </tr>
328 </thead>
329 <tbody>
330 <?php for ( $i = 0; $i < 5; $i++ ) { ?>
331 <tr>
332 <td><p class="skt-loading"></p></td>
333 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
334 </tr>
335 <?php } ?>
336 </tbody>
337 </table>
338 </div>
339 </div>
340 <?php
341 }
342
343 if ( in_array( 'show-social-dashboard', $selected_stats, true ) ) {
344 ?>
345 <div class="analytify_column"><div class="analytify_half analytify_left_flow">
346 <div class="analytify_general_status analytify_section_social_media_stats analytify_status_box_wraper" data-endpoint="social-stats" data-target=".analytify_section_social_media_stats">
347 <div class="analytify_status_header analytify_header_adj">
348 <h3>
349 <?php esc_html_e( 'Social Network', 'wp-analytify' ); ?>
350 <?php do_action( 'analytify_after_top_social_media_text' ); ?>
351 </h3>
352 <div class="analytify_status_header_value social_total empty-on-loading title-total-wrapper"></div>
353 </div>
354 <div class="analytify_status_body">
355 <div class="stats-wrapper"></div>
356 </div>
357 <div class="analytify_stats_loading">
358 <table class="analytify_data_tables">
359 <thead>
360 <tr>
361 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
362 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
363 </tr>
364 </thead>
365 <tbody>
366 <?php for ( $i = 0; $i < 5; $i++ ) { ?>
367 <tr>
368 <td><p class="skt-loading"></p></td>
369 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
370 </tr>
371 <?php } ?>
372 </tbody>
373 </table>
374 </div>
375 </div>
376 <?php
377 }
378
379 ?>
380 </div><div class="analytify_half analytify_right_flow">
381 <?php
382
383 if ( in_array( 'show-referrer-dashboard', $selected_stats, true ) ) {
384 ?>
385 <div class="analytify_general_status analytify_status_box_wraper analytify_section_referer_stats" data-endpoint="referer-stats" data-target=".analytify_section_referer_stats">
386 <div class="analytify_status_header analytify_header_adj">
387 <h3>
388 <?php esc_html_e( 'Top Referrers', 'wp-analytify' ); ?>
389 <a href="javascript: return false;" data-ga-dashboard-link="<?php echo esc_attr( WPANALYTIFY_Utils::get_all_stats_link( $report_url, 'referer', false ) ); ?>" target="_blank" class="analytify_tooltip"><span class="analytify_tooltiptext"><?php esc_html_e( 'View All Top Referrers', 'wp-analytify' ); ?></span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>
390 <?php do_action( 'analytify_after_top_reffers_text' ); ?>
391 </h3>
392 <div class="analytify_status_header_value reffers_total empty-on-loading title-total-wrapper"></div>
393 </div>
394 <div class="analytify_status_body">
395 <div class="stats-wrapper"></div>
396 </div>
397 <div class="analytify_stats_loading">
398 <table class="analytify_data_tables">
399 <thead>
400 <tr>
401 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
402 <th class="analytify_value_row"><p class="skt-loading light-gray"></p></th>
403 </tr>
404 </thead>
405 <tbody>
406 <?php for ( $i = 0; $i < 10; $i++ ) { ?>
407 <tr>
408 <td><p class="skt-loading"></p></td>
409 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
410 </tr>
411 <?php } ?>
412 </tbody>
413 </table>
414 </div>
415 </div>
416 <?php
417 }
418
419 ?>
420 </div>
421 <?php
422
423 if ( in_array( 'show-page-stats-dashboard', $selected_stats, true ) ) {
424 ?>
425 <div class="analytify_general_status analytify_status_box_wraper analytify_section_whats_happening_stats" data-endpoint="what-is-happening-stats" data-target=".analytify_section_whats_happening_stats">
426 <div class="analytify_status_header">
427 <h3><?php esc_html_e( 'What\'s happening when users come to your site', 'wp-analytify' ); ?> <?php do_action( 'analytify_after_top_page_stats_text' ); ?></h3>
428 </div>
429 <div class="analytify_status_body">
430 <div class="analytify_page_stats_boxes_wraper stats-wrapper"></div>
431 </div>
432 <div class="analytify_stats_loading">
433 <table class="analytify_data_tables">
434 <thead>
435 <tr>
436 <th class="analytify_txt_left"><p class="skt-loading light-gray"></p></th>
437 <th class="analytify_compair_value_row"><p class="skt-loading light-gray"></p></th>
438 <th class="analytify_compair_value_row"><p class="skt-loading light-gray"></p></th>
439 <th class="analytify_compair_row"><p class="skt-loading light-gray"></p></th>
440 </tr>
441 </thead>
442 <tbody>
443 <?php for ( $i = 0; $i < 5; $i++ ) { ?>
444 <tr>
445 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
446 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
447 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
448 <td class="analytify_txt_center"><p class="skt-loading"></p></td>
449 </tr>
450 <?php } ?>
451 </tbody>
452 </table>
453 </div>
454 </div>
455 <?php
456 }
457
458 /**
459 * Pro adds these sections.
460 * All 4 dates, $dashboard_profile_id, $report_url, $report_date_range are
461 * for Pro versions that are older then v5.0.0.
462 * Version 5.0.0 and above will use dates via AJAX.
463 */
464 do_action( 'wp_analytify_view_ajax_error', $start_date, $end_date, $dashboard_profile_id, $report_url, $report_date_range );
465 do_action( 'wp_analytify_view_404_error', $start_date, $end_date, $dashboard_profile_id, $report_url, $report_date_range );
466 do_action( 'wp_analytify_view_javascript_error', $start_date, $end_date, $dashboard_profile_id, $report_url, $report_date_range );
467
468 } else {
469 esc_html_e( 'You must be authenticated to see the Analytics Dashboard.', 'wp-analytify' );
470 }
471 } else {
472 esc_html_e( 'You don\'t have access to Analytify Dashboard.', 'wp-analytify' );
473 }
474 }
475 ?>
476 </>
477 </div>
478 </div>
479 </div>
480 </div>
481 </div>
482 </div>
483