PluginProbe
Mailchimp List Subscribe Form / trunk
Mailchimp List Subscribe Form vtrunk
1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 All 55 releases
mailchimp / includes / class-mailchimp-analytics.php

class-mailchimp-analytics.php in Mailchimp List Subscribe Form trunk, at includes/class-mailchimp-analytics.php

123 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class responsible for the Analytics admin page.
4 *
5 * @package Mailchimp
6 */
7
8 // Exit if accessed directly.
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 /**
14 * Class Mailchimp_Analytics
15 */
16 class Mailchimp_Analytics {
17
18 /**
19 * Initialize the class.
20 */
21 public function init() {
22 if ( ! $this->is_connected() ) {
23 return;
24 }
25
26 add_action( 'admin_menu', array( $this, 'register_admin_page' ) );
27 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
28 }
29
30 /**
31 * Check if a Mailchimp account is connected.
32 *
33 * @return bool
34 */
35 private function is_connected() {
36 $user = get_option( 'mc_user' );
37 return $user && ( get_option( 'mc_api_key' ) || mailchimp_sf_get_access_token() );
38 }
39
40 /**
41 * Register the Analytics submenu page under Mailchimp.
42 */
43 public function register_admin_page() {
44 add_submenu_page(
45 'mailchimp_sf_options',
46 esc_html__( 'Analytics', 'mailchimp' ),
47 esc_html__( 'Analytics', 'mailchimp' ),
48 MCSF_CAP_THRESHOLD,
49 'mailchimp_sf_analytics',
50 array( $this, 'render_page' )
51 );
52 }
53
54 /**
55 * Render the Analytics page.
56 */
57 public function render_page() {
58 include_once MCSF_DIR . 'includes/admin/templates/analytics.php';
59 }
60
61 /**
62 * Enqueue scripts and styles only on the analytics page.
63 *
64 * @param string $hook_suffix The current admin page hook suffix.
65 */
66 public function enqueue_scripts( $hook_suffix ) {
67 if ( 'mailchimp_page_mailchimp_sf_analytics' !== $hook_suffix ) {
68 return;
69 }
70
71 wp_enqueue_style(
72 'mailchimp_sf_admin_css',
73 MCSF_URL . 'assets/css/admin.css',
74 array(),
75 MCSF_VER
76 );
77
78 wp_enqueue_style(
79 'mailchimp_sf_analytics_css',
80 MCSF_URL . 'dist/css/analytics.css',
81 array( 'mailchimp_sf_admin_css' ),
82 MCSF_VER
83 );
84
85 wp_enqueue_script(
86 'mailchimp_sf_chartjs',
87 MCSF_URL . 'assets/js/chart.umd.min.js',
88 array(),
89 '4.4.7',
90 true
91 );
92
93 $dependencies = array( 'mailchimp_sf_chartjs', 'wp-i18n' );
94 $version = MCSF_VER;
95 if ( file_exists( MCSF_DIR . '/dist/js/analytics.asset.php' ) ) {
96 $asset = require MCSF_DIR . '/dist/js/analytics.asset.php';
97 $dependencies = $asset['dependencies'] ?? array();
98 $dependencies = array_merge( $dependencies, array( 'mailchimp_sf_chartjs' ) );
99 $version = $asset['version'] ?? MCSF_VER;
100 }
101
102 wp_enqueue_script(
103 'mailchimp_sf_analytics_js',
104 MCSF_URL . 'dist/js/analytics.js',
105 $dependencies,
106 $version,
107 true
108 );
109
110 wp_localize_script(
111 'mailchimp_sf_analytics_js',
112 'mailchimpSFAnalytics',
113 array(
114 'ajax_url' => admin_url( 'admin-ajax.php' ),
115 'nonce' => wp_create_nonce( 'mailchimp_sf_analytics_admin_nonce' ),
116 'dateFormat' => get_option( 'date_format', 'Y-m-d' ),
117 'startOfWeek' => (int) get_option( 'start_of_week', 0 ),
118 'settingsUrl' => admin_url( 'admin.php?page=mailchimp_sf_options' ),
119 )
120 );
121 }
122 }
123