PluginProbe
Analytics Insights – Google Analytics Dashboard for WordPress / trunk
Analytics Insights – Google Analytics Dashboard for WordPress vtrunk
6.3.6 6.3.7 6.3.8 6.3.9 trunk 5.4.1 5.4.2 5.4.2.1 5.4.3 5.4.4 5.4.5 5.4.6 5.4.7 5.5.2 5.5.3 5.5.4 5.5.5 5.5.6 5.6 5.6.1 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 All 61 releases
analytics-insights / admin / setup.php

setup.php in Analytics Insights – Google Analytics Dashboard for WordPress trunk, at admin/setup.php

333 lines 18.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Author: Alin Marcu
4 * Author URI: https://deconf.com
5 * Copyright 2013 Alin Marcu
6 * License: GPLv2 or later
7 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
8 */
9 // Exit if accessed directly
10 if ( ! defined( 'ABSPATH' ) )
11 exit();
12 if ( ! class_exists( 'AIWP_Backend_Setup' ) ) {
13
14 final class AIWP_Backend_Setup {
15
16 private $aiwp;
17
18 public function __construct() {
19 $this->aiwp = AIWP();
20 // Styles & Scripts
21 add_action( 'admin_enqueue_scripts', array( $this, 'load_styles_scripts' ) );
22 // Site Menu
23 add_action( 'admin_menu', array( $this, 'site_menu' ) );
24 // Network Menu
25 add_action( 'network_admin_menu', array( $this, 'network_menu' ) );
26 // Settings link
27 add_filter( "plugin_action_links_" . plugin_basename( AIWP_DIR . 'analytics-insights.php' ), array( $this, 'settings_link' ) );
28 }
29
30 /**
31 * Add Site Menu
32 */
33 public function site_menu() {
34 global $wp_version;
35 if ( current_user_can( 'manage_options' ) ) {
36 include ( AIWP_DIR . 'admin/settings.php' );
37 add_menu_page( __( "Analytics Insights", 'analytics-insights' ), __( "Analytics Insights", 'analytics-insights' ), 'manage_options', 'aiwp_settings', array( 'AIWP_Settings', 'general_settings' ), version_compare( $wp_version, '3.8.0', '>=' ) ? 'dashicons-chart-area' : AIWP_URL . 'admin/images/aiwp-icon.png' );
38 add_submenu_page( 'aiwp_settings', __( "General Settings", 'analytics-insights' ), __( "General Settings", 'analytics-insights' ), 'manage_options', 'aiwp_settings', array( 'AIWP_Settings', 'general_settings' ) );
39 add_submenu_page( 'aiwp_settings', __( "Backend Settings", 'analytics-insights' ), __( "Backend Settings", 'analytics-insights' ), 'manage_options', 'aiwp_backend_settings', array( 'AIWP_Settings', 'backend_settings' ) );
40 add_submenu_page( 'aiwp_settings', __( "Frontend Settings", 'analytics-insights' ), __( "Frontend Settings", 'analytics-insights' ), 'manage_options', 'aiwp_frontend_settings', array( 'AIWP_Settings', 'frontend_settings' ) );
41 add_submenu_page( 'aiwp_settings', __( "Tracking Code", 'analytics-insights' ), __( "Tracking Code", 'analytics-insights' ), 'manage_options', 'aiwp_tracking_settings', array( 'AIWP_Settings', 'tracking_settings' ) );
42 add_submenu_page( 'aiwp_settings', __( "Errors & Debug", 'analytics-insights' ), __( "Errors & Debug", 'analytics-insights' ), 'manage_options', 'aiwp_errors_debugging', array( 'AIWP_Settings', 'errors_debugging' ) );
43 }
44 }
45
46 /**
47 * Add Network Menu
48 */
49 public function network_menu() {
50 global $wp_version;
51 if ( current_user_can( 'manage_network' ) ) {
52 include ( AIWP_DIR . 'admin/settings.php' );
53 add_menu_page( __( "Analytics Insights", 'analytics-insights' ), "Analytics Insights", 'manage_network', 'aiwp_settings', array( 'AIWP_Settings', 'general_settings_network' ), version_compare( $wp_version, '3.8.0', '>=' ) ? 'dashicons-chart-area' : AIWP_URL . 'admin/images/aiwp-icon.png' );
54 add_submenu_page( 'aiwp_settings', __( "General Settings", 'analytics-insights' ), __( "General Settings", 'analytics-insights' ), 'manage_network', 'aiwp_settings', array( 'AIWP_Settings', 'general_settings_network' ) );
55 add_submenu_page( 'aiwp_settings', __( "Errors & Debug", 'analytics-insights' ), __( "Errors & Debug", 'analytics-insights' ), 'manage_network', 'aiwp_errors_debugging', array( 'AIWP_Settings', 'errors_debugging' ) );
56 }
57 }
58
59 /**
60 * Styles & Scripts conditional loading (based on current URI)
61 *
62 * @param
63 * $hook
64 */
65 public function load_styles_scripts( $hook ) {
66 $new_hook = explode( '_page_', $hook );
67 if ( isset( $new_hook[1] ) ) {
68 $new_hook = '_page_' . $new_hook[1];
69 } else {
70 $new_hook = $hook;
71 }
72 /*
73 * AIWP main stylesheet
74 */
75 wp_enqueue_style( 'aiwp', AIWP_URL . 'admin/css/aiwp' . AIWP_Tools::script_debug_suffix() . '.css', null, AIWP_CURRENT_VERSION );
76 /*
77 * AIWP UI
78 */
79 if ( AIWP_Tools::get_cache( 'api_errors' ) ) {
80 $ed_bubble = '!';
81 } else {
82 $ed_bubble = '';
83 }
84 wp_enqueue_script( 'aiwp-backend-ui', plugins_url( 'js/ui' . AIWP_Tools::script_debug_suffix() . '.js', __FILE__ ), array( 'jquery' ), AIWP_CURRENT_VERSION, true );
85 /* @formatter:off */
86 wp_localize_script( 'aiwp-backend-ui', 'aiwp_ui_data', array(
87 'ajaxurl' => admin_url( 'admin-ajax.php' ),
88 'security' => wp_create_nonce( 'aiwp_dismiss_notices' ),
89 'ed_bubble' => $ed_bubble,
90 )
91 );
92 /* @formatter:on */
93 if ( $this->aiwp->config->options['switch_profile'] && count( $this->aiwp->config->options['ga4_webstreams_list'] ) > 1 ) {
94 $views = array();
95 foreach ( $this->aiwp->config->options['ga4_webstreams_list'] as $items ) {
96 if ( $items[2] ) {
97 $views[$items[1]] = sanitize_text_field( AIWP_Tools::strip_protocol( $items[2] ) );
98 }
99 }
100 } else {
101 $views = false;
102 }
103 /*
104 * Main Dashboard Widgets Styles & Scripts
105 */
106 $widgets_hooks = array( 'index.php' );
107 if ( in_array( $new_hook, $widgets_hooks ) ) {
108 if ( AIWP_Tools::check_roles( $this->aiwp->config->options['access_back'] ) && $this->aiwp->config->options['dashboard_widget'] ) {
109 if ( $this->aiwp->config->options['ga_target_geomap'] ) {
110 $country_codes = AIWP_Tools::get_countrycodes();
111 $country_codes = array_flip($country_codes);
112 if ( 'None' !== $this->aiwp->config->options['ga_target_geomap'] && isset( $country_codes[$this->aiwp->config->options['ga_target_geomap']] ) ) {
113 $region = sanitize_text_field( $country_codes[$this->aiwp->config->options['ga_target_geomap']] );
114 } else {
115 $region = false;
116 }
117 } else {
118 $region = false;
119 }
120 wp_enqueue_style( 'aiwp-nprogress', AIWP_URL . 'common/nprogress/nprogress' . AIWP_Tools::script_debug_suffix() . '.css', null, AIWP_CURRENT_VERSION );
121 wp_enqueue_style( 'aiwp-backend-item-reports', AIWP_URL . 'admin/css/admin-widgets' . AIWP_Tools::script_debug_suffix() . '.css', null, AIWP_CURRENT_VERSION );
122 wp_register_style( 'jquery-ui-tooltip-html', AIWP_URL . 'common/realtime/jquery.ui.tooltip.html' . AIWP_Tools::script_debug_suffix() . '.css' );
123 wp_enqueue_style( 'jquery-ui-tooltip-html' );
124 wp_register_script( 'jquery-ui-tooltip-html', AIWP_URL . 'common/realtime/jquery.ui.tooltip.html' . AIWP_Tools::script_debug_suffix() . '.js' );
125 wp_register_script( 'googlecharts', 'https://www.gstatic.com/charts/loader.js', array(), null );
126 wp_enqueue_script( 'aiwp-nprogress', AIWP_URL . 'common/nprogress/nprogress' . AIWP_Tools::script_debug_suffix() . '.js', array( 'jquery' ), AIWP_CURRENT_VERSION );
127 wp_enqueue_script( 'aiwp-backend-dashboard-reports', AIWP_URL . 'common/js/reports' . AIWP_Tools::script_debug_suffix() . '.js', array( 'jquery', 'googlecharts', 'aiwp-nprogress', 'jquery-ui-tooltip', 'jquery-ui-core', 'jquery-ui-position', 'jquery-ui-tooltip-html' ), AIWP_CURRENT_VERSION, true );
128 /* @formatter:off */
129
130 $datelist = array(
131 'realtime' => __( "Real-Time", 'analytics-insights' ),
132 'today' => __( "Today", 'analytics-insights' ),
133 'yesterday' => __( "Yesterday", 'analytics-insights' ),
134 '7daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 7 ),
135 '14daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 14 ),
136 '30daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 30 ),
137 '90daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 90 ),
138 '365daysAgo' => sprintf( _n( "%s Year", "%s Years", 1, 'analytics-insights' ), __('One', 'analytics-insights') ),
139 '1095daysAgo' => sprintf( _n( "%s Year", "%s Years", 3, 'analytics-insights' ), __('Three', 'analytics-insights') ),
140 );
141
142 wp_localize_script( 'aiwp-backend-dashboard-reports', 'aiwpItemData', array(
143 'ajaxurl' => admin_url( 'admin-ajax.php' ),
144 'security' => wp_create_nonce( 'aiwp_backend_item_reports' ),
145 'dateList' => $datelist,
146 'reportList' => array(
147 'sessions' => __( "Sessions", 'analytics-insights' ),
148 'users' => __( "Users", 'analytics-insights' ),
149 'organicSearches' => __( "Engagement", 'analytics-insights' ),
150 'pageviews' => __( "Page Views", 'analytics-insights' ),
151 'visitBounceRate' => __( "Bounce Rate", 'analytics-insights' ),
152 'locations' => __( "Location", 'analytics-insights' ),
153 'contentpages' => __( "Pages", 'analytics-insights' ),
154 'referrers' => __( "Referrers", 'analytics-insights' ),
155 'searches' => __( "Searches", 'analytics-insights' ),
156 'trafficdetails' => __( "Traffic", 'analytics-insights' ),
157 'technologydetails' => __( "Technology", 'analytics-insights' ),
158 '404errors' => __( "404 Errors", 'analytics-insights' ),
159 ),
160 'i18n' => array(
161 __( "A JavaScript Error is blocking plugin resources!", 'analytics-insights' ), //0
162 __( "Traffic Mediums", 'analytics-insights' ),
163 __( "Visitor Type", 'analytics-insights' ),
164 __( "Search Engines", 'analytics-insights' ),
165 __( "Language", 'analytics-insights' ),
166 __( "Sessions", 'analytics-insights' ),
167 __( "Users", 'analytics-insights' ),
168 __( "Page Views", 'analytics-insights' ),
169 __( "Bounce Rate", 'analytics-insights' ),
170 __( "Session Duration", 'analytics-insights' ),
171 __( "Pages/Session", 'analytics-insights' ),
172 __( "Invalid response", 'analytics-insights' ),
173 __( "Error:", 'analytics-insights' ),
174 __( "Processing data, please check again in a few hours", 'analytics-insights' ),
175 __( "report generated by", 'analytics-insights' ), //14
176 __( "This plugin needs an authorization:", 'analytics-insights' ) . ' <a href="' . menu_page_url( 'aiwp_settings', false ) . '">' . __( "authorize the plugin", 'analytics-insights' ) . '</a>.',
177 __( "Browser", 'analytics-insights' ), //16
178 __( "Operating System", 'analytics-insights' ),
179 __( "Screen Resolution", 'analytics-insights' ),
180 __( "Mobile Brand", 'analytics-insights' ),
181 __( "REFERRALS", 'analytics-insights' ), //20
182 __( "KEYWORDS", 'analytics-insights' ),
183 __( "SOCIAL", 'analytics-insights' ),
184 __( "CAMPAIGN", 'analytics-insights' ),
185 __( "DIRECT", 'analytics-insights' ),
186 __( "NEW", 'analytics-insights' ), //25
187 __( "Organic Search", 'analytics-insights' ),
188 __( "Engaged Sessions", 'analytics-insights' ),
189 __( "Total Engagement", 'analytics-insights' ),
190 __( "Session Duration", 'analytics-insights' ),
191 __( "", 'analytics-insights' ),
192 __( "Search ...", 'analytics-insights' ), //31
193 __( "DESKTOP", 'analytics-insights' ), //32
194 __( "MOBILE", 'analytics-insights' ), //33
195 __( "TABLET", 'analytics-insights' ), //34
196 __( "USERS IN LAST 30 MINUTES", 'analytics-insights' ), //35
197 ),
198 'rtLimitPages' => $this->aiwp->config->options['ga_realtime_pages'],
199 'colorVariations' => AIWP_Tools::variations( sanitize_text_field( $this->aiwp->config->options['theme_color'] ) ),
200 'region' => $region,
201 'mapsApiKey' => apply_filters( 'aiwp_maps_api_key', sanitize_text_field( $this->aiwp->config->options['maps_api_key'] ) ),
202 'language' => get_bloginfo( 'language' ),
203 'viewList' => $views,
204 'scope' => 'admin-widgets',
205 )
206
207 );
208 /* @formatter:on */
209 }
210 }
211 /*
212 * Posts/Pages List Styles & Scripts
213 */
214 $contentstats_hooks = array( 'edit.php' );
215 if ( in_array( $hook, $contentstats_hooks ) ) {
216 if ( AIWP_Tools::check_roles( $this->aiwp->config->options['access_back'] ) && $this->aiwp->config->options['backend_item_reports'] ) {
217 if ( $this->aiwp->config->options['ga_target_geomap'] ) {
218 $country_codes = AIWP_Tools::get_countrycodes();
219 $country_codes = array_flip($country_codes);
220 if ( 'None' !== $this->aiwp->config->options['ga_target_geomap'] && isset( $country_codes[$this->aiwp->config->options['ga_target_geomap']] ) ) {
221 $region = sanitize_text_field($country_codes[$this->aiwp->config->options['ga_target_geomap']]);
222 } else {
223 $region = false;
224 }
225 } else {
226 $region = false;
227 }
228 wp_enqueue_style( 'aiwp-nprogress', AIWP_URL . 'common/nprogress/nprogress' . AIWP_Tools::script_debug_suffix() . '.css', null, AIWP_CURRENT_VERSION );
229 wp_enqueue_style( 'aiwp-backend-item-reports', AIWP_URL . 'admin/css/item-reports' . AIWP_Tools::script_debug_suffix() . '.css', null, AIWP_CURRENT_VERSION );
230 wp_enqueue_style( "wp-jquery-ui-dialog" );
231 wp_register_script( 'googlecharts', 'https://www.gstatic.com/charts/loader.js', array(), null );
232 wp_enqueue_script( 'aiwp-nprogress', AIWP_URL . 'common/nprogress/nprogress' . AIWP_Tools::script_debug_suffix() . '.js', array( 'jquery' ), AIWP_CURRENT_VERSION );
233 wp_enqueue_script( 'aiwp-backend-item-reports', AIWP_URL . 'common/js/reports' . AIWP_Tools::script_debug_suffix() . '.js', array( 'aiwp-nprogress', 'googlecharts', 'jquery', 'jquery-ui-dialog' ), AIWP_CURRENT_VERSION, true );
234 /* @formatter:off */
235 wp_localize_script( 'aiwp-backend-item-reports', 'aiwpItemData', array(
236 'ajaxurl' => admin_url( 'admin-ajax.php' ),
237 'security' => wp_create_nonce( 'aiwp_backend_item_reports' ),
238 'dateList' => array(
239 'today' => __( "Today", 'analytics-insights' ),
240 'yesterday' => __( "Yesterday", 'analytics-insights' ),
241 '7daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 7 ),
242 '14daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 14 ),
243 '30daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 30 ),
244 '90daysAgo' => sprintf( __( "Last %d Days", 'analytics-insights' ), 90 ),
245 '365daysAgo' => sprintf( _n( "%s Year", "%s Years", 1, 'analytics-insights' ), __('One', 'analytics-insights') ),
246 '1095daysAgo' => sprintf( _n( "%s Year", "%s Years", 3, 'analytics-insights' ), __('Three', 'analytics-insights') ),
247 ),
248 'reportList' => array(
249 'uniquePageviews' => __( "Sessions", 'analytics-insights' ),
250 'users' => __( "Users", 'analytics-insights' ),
251 'organicSearches' => __( "Engagement", 'analytics-insights' ),
252 'pageviews' => __( "Page Views", 'analytics-insights' ),
253 'visitBounceRate' => __( "Bounce Rate", 'analytics-insights' ),
254 'locations' => __( "Location", 'analytics-insights' ),
255 'referrers' => __( "Referrers", 'analytics-insights' ),
256 'searches' => __( "Searches", 'analytics-insights' ),
257 'trafficdetails' => __( "Traffic", 'analytics-insights' ),
258 'technologydetails' => __( "Technology", 'analytics-insights' ),
259 ),
260 'i18n' => array(
261 __( "A JavaScript Error is blocking plugin resources!", 'analytics-insights' ), //0
262 __( "Traffic Mediums", 'analytics-insights' ),
263 __( "Visitor Type", 'analytics-insights' ),
264 __( "Language", 'analytics-insights' ),
265 __( "Search Engines", 'analytics-insights' ),
266 __( "Sessions", 'analytics-insights' ),
267 __( "Users", 'analytics-insights' ),
268 __( "Page Views", 'analytics-insights' ),
269 __( "Bounce Rate", 'analytics-insights' ),
270 __( "Organic Search", 'analytics-insights' ),
271 __( "Pages/Session", 'analytics-insights' ),
272 __( "Invalid response", 'analytics-insights' ),
273 __( "Error:", 'analytics-insights' ),
274 __( "Processing data, please check again in a few hours", 'analytics-insights' ),
275 __( "report generated by", 'analytics-insights' ), //14
276 __( "This plugin needs an authorization:", 'analytics-insights' ) . ' <a href="' . menu_page_url( 'aiwp_settings', false ) . '">' . __( "authorize the plugin", 'analytics-insights' ) . '</a>.',
277 __( "Browser", 'analytics-insights' ), //16
278 __( "Operating System", 'analytics-insights' ),
279 __( "Screen Resolution", 'analytics-insights' ),
280 __( "Mobile Brand", 'analytics-insights' ), //19
281 __( "Future Use", 'analytics-insights' ),
282 __( "Future Use", 'analytics-insights' ),
283 __( "Future Use", 'analytics-insights' ),
284 __( "Future Use", 'analytics-insights' ),
285 __( "Future Use", 'analytics-insights' ),
286 __( "Future Use", 'analytics-insights' ), //25
287 __( "Organic Search", 'analytics-insights' ),
288 __( "Engaged Sessions", 'analytics-insights' ),
289 __( "Exit Rate", 'analytics-insights' ),
290 __( "", 'analytics-insights' ),
291 __( "", 'analytics-insights' ),
292 __( "Search ...", 'analytics-insights' ), //31
293 ),
294 'colorVariations' => AIWP_Tools::variations( $this->aiwp->config->options['theme_color'] ),
295 'region' => $region,
296 'mapsApiKey' => apply_filters( 'aiwp_maps_api_key', sanitize_text_field( $this->aiwp->config->options['maps_api_key'] ) ),
297 'language' => get_bloginfo( 'language' ),
298 'viewList' => false,
299 'scope' => 'admin-item',
300 )
301 );
302 /* @formatter:on */
303 }
304 }
305 /*
306 * Settings Styles & Scripts
307 */
308 $settings_hooks = array( '_page_aiwp_settings', '_page_aiwp_backend_settings', '_page_aiwp_frontend_settings', '_page_aiwp_tracking_settings', '_page_aiwp_errors_debugging' );
309 if ( in_array( $new_hook, $settings_hooks ) ) {
310 wp_enqueue_style( 'wp-color-picker' );
311 wp_enqueue_style( 'aiwp-select2-css', AIWP_URL . 'common/select2/css/select2' . AIWP_Tools::script_debug_suffix() . '.css' );
312 wp_enqueue_script( 'aiwp-select2-js', AIWP_URL . 'common/select2/js/select2' . AIWP_Tools::script_debug_suffix() . '.js', array( 'jquery' ), AIWP_CURRENT_VERSION );
313 wp_enqueue_script( 'wp-color-picker' );
314 wp_enqueue_script( 'wp-color-picker-script-handle', plugins_url( 'js/wp-color-picker-script' . AIWP_Tools::script_debug_suffix() . '.js', __FILE__ ), array( 'wp-color-picker' ), false, true );
315 wp_enqueue_script( 'aiwp-settings', plugins_url( 'js/settings' . AIWP_Tools::script_debug_suffix() . '.js', __FILE__ ), array( 'jquery' ), AIWP_CURRENT_VERSION, true );
316 }
317 }
318
319 /**
320 * Add "Settings" link in Plugins List
321 *
322 * @param
323 * $links
324 * @return array
325 */
326 public function settings_link( $links ) {
327 $settings_link = '<a href="' . esc_url( get_admin_url( null, 'admin.php?page=aiwp_settings' ) ) . '">' . __( "Settings", 'analytics-insights' ) . '</a>';
328 array_unshift( $links, $settings_link );
329 return $links;
330 }
331 }
332 }
333