Google Analytics for WordPress by MonsterInsights - Version 7.2.0

Version Description

= 7.0.0 =

This is a major release. Please back up your site before upgrading.

= 6.0.0 =

This is a major release. Please back up your site before upgrading.

Download this release

Release Info

Developer chriscct7
Plugin Icon 128x128 Google Analytics for WordPress by MonsterInsights
Version 7.2.0
Comparing to
See all releases

Code changes from version 7.1.0 to 7.2.0

assets/lib/pandora/class-am-dashboard-widget-extend-feed.php ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! class_exists( 'AM_Dashboard_Widget_Extend_Feed' ) ) {
4
+ /**
5
+ * Awesome Motive Events and News Feed.
6
+ *
7
+ * This appends additional blog feeds to the WordPress Events and News Feed Widget
8
+ * available in the WP-Admin Dashboard.
9
+ *
10
+ * @package AwesomeMotive
11
+ * @author AwesomeMotive Team
12
+ * @license GPL-2.0+
13
+ * @copyright Copyright (c) 2018, Awesome Motive LLC
14
+ * @version 1.0.0
15
+ */
16
+ class AM_Dashboard_Widget_Extend_Feed {
17
+
18
+ /**
19
+ * The number of feed items to show.
20
+ *
21
+ * @since 1.0.0
22
+ *
23
+ * @var int
24
+ */
25
+ const FEED_COUNT = 6;
26
+
27
+ /**
28
+ * Construct.
29
+ *
30
+ * @since 1.0.0
31
+ */
32
+ public function __construct() {
33
+
34
+ // Actions.
35
+ add_action( 'wp_feed_options', array( $this, 'dashboard_update_feed_urls' ), 10, 2 );
36
+
37
+ // Filters.
38
+ add_filter( 'dashboard_secondary_items', array( $this, 'dashboard_items_count' ) );
39
+ }
40
+
41
+ /**
42
+ * Set the number of feed items to show.
43
+ *
44
+ * @since 1.0.0
45
+ *
46
+ * @return int Count of feed items.
47
+ */
48
+ public function dashboard_items_count() {
49
+
50
+ /**
51
+ * Apply the filters am_dashboard_feed_count for letting an admin
52
+ * override this count.
53
+ */
54
+ return (int) apply_filters( 'am_dashboard_feed_count', self::FEED_COUNT );
55
+ }
56
+
57
+ /**
58
+ * Update the planet feed to add other AM blog feeds.
59
+ *
60
+ * @since 1.0.0
61
+ *
62
+ * @param object $feed SimplePie feed object (passed by reference).
63
+ * @param string $url URL of feed to retrieve (original planet feed url). If an array of URLs, the feeds are merged.
64
+ */
65
+ public function dashboard_update_feed_urls( $feed, $url ) {
66
+
67
+ global $pagenow;
68
+
69
+ // Return early if not on the right page.
70
+ if ( 'admin-ajax.php' !== $pagenow ) {
71
+ return;
72
+ }
73
+
74
+ /**
75
+ * Return early if not on the right feed.
76
+ * We want to modify the feed URLs only for the
77
+ * WordPress Events & News Dashboard Widget
78
+ */
79
+ if ( strpos( $url, 'planet.wordpress.org' ) === false ) {
80
+ return;
81
+ }
82
+
83
+ // Build the feed sources.
84
+ $all_feed_urls = $this->get_feed_urls( $url );
85
+
86
+ // Update the feed sources.
87
+ $feed->set_feed_url( $all_feed_urls );
88
+ }
89
+
90
+ /**
91
+ * Get the feed URLs for various active AM Products.
92
+ *
93
+ * @since 1.0.0
94
+ *
95
+ * @param string $url Planet Feed URL.
96
+ *
97
+ * @return array Array of Feed URLs.
98
+ */
99
+ public function get_feed_urls( $url ) {
100
+
101
+ // Initialize the feeds array.
102
+ $feed_urls = array(
103
+ 'https://www.wpbeginner.com/feed/',
104
+ 'https://www.isitwp.com/feed/',
105
+ $url,
106
+ );
107
+
108
+ // Check if MonsterInsights is active.
109
+ if ( function_exists( 'MonsterInsights' ) ) {
110
+ $feed_urls[] = 'https://www.monsterinsights.com/feed/';
111
+ }
112
+
113
+ // Check if WPForms is active.
114
+ if ( class_exists( 'WPForms', false ) ) {
115
+ $feed_urls[] = 'https://wpforms.com/feed/';
116
+ }
117
+
118
+ // Check if OptinMonster is active.
119
+ if ( class_exists( 'OMAPI', false ) ) {
120
+ $feed_urls[] = 'https://optinmonster.com/feed/';
121
+ }
122
+
123
+ // Return the feed URLs.
124
+ return array_unique( $feed_urls );
125
+ }
126
+ }
127
+
128
+ // Create an instance.
129
+ new AM_Dashboard_Widget_Extend_Feed();
130
+ }
assets/lib/pandora/class-am-notification.php CHANGED
@@ -11,7 +11,7 @@ if ( ! class_exists( 'AM_Notification' ) ) {
11
  * @author AwesomeMotive Team
12
  * @license GPL-2.0+
13
  * @copyright Copyright (c) 2018, Awesome Motive LLC
14
- * @version 1.0.4
15
  */
16
  class AM_Notification {
17
 
@@ -203,15 +203,15 @@ if ( ! class_exists( 'AM_Notification' ) ) {
203
  $dismissable = get_post_meta( $notification->ID, 'dismissable', true );
204
  $type = get_post_meta( $notification->ID, 'type', true );
205
  ?>
206
- <div class="am-notification am-notification-<?php echo $notification->ID; ?> notice notice-<?php echo $type; ?><?php echo $dismissable ? ' is-dismissible' : ''; ?>">
207
- <?php echo $notification->post_content; ?>
208
  </div>
209
  <script type="text/javascript">
210
  jQuery( document ).ready( function ( $ ) {
211
- $( document ).on( 'click', '.am-notification-<?php echo $notification->ID; ?> button.notice-dismiss', function ( event ) {
212
  $.post( ajaxurl, {
213
  action: 'am_notification_dismiss',
214
- notification_id: '<?php echo $notification->ID; ?>'
215
  } );
216
  } );
217
  } );
11
  * @author AwesomeMotive Team
12
  * @license GPL-2.0+
13
  * @copyright Copyright (c) 2018, Awesome Motive LLC
14
+ * @version 1.0.6
15
  */
16
  class AM_Notification {
17
 
203
  $dismissable = get_post_meta( $notification->ID, 'dismissable', true );
204
  $type = get_post_meta( $notification->ID, 'type', true );
205
  ?>
206
+ <div class="am-notification am-notification-<?php echo absint( $notification->ID ); ?> notice notice-<?php echo esc_attr( $type ); ?><?php echo $dismissable ? ' is-dismissible' : ''; ?>">
207
+ <?php echo wp_kses_post( $notification->post_content ); ?>
208
  </div>
209
  <script type="text/javascript">
210
  jQuery( document ).ready( function ( $ ) {
211
+ $( document ).on( 'click', '.am-notification-<?php echo absint( $notification->ID ); ?> button.notice-dismiss', function ( event ) {
212
  $.post( ajaxurl, {
213
  action: 'am_notification_dismiss',
214
+ notification_id: '<?php echo absint( $notification->ID ); ?>'
215
  } );
216
  } );
217
  } );
googleanalytics.php CHANGED
@@ -6,7 +6,7 @@
6
  * Author: MonsterInsights
7
  * Author URI: https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=authoruri&utm_content=7%2E0%2E0
8
  *
9
- * Version: 7.1.0
10
  * Requires at least: 3.8.0
11
  * Tested up to: 4.9
12
  *
@@ -69,7 +69,7 @@ final class MonsterInsights_Lite {
69
  * @access public
70
  * @var string $version Plugin version.
71
  */
72
- public $version = '7.1.0';
73
 
74
  /**
75
  * Plugin file.
@@ -541,6 +541,7 @@ final class MonsterInsights_Lite {
541
  // Lite and Pro files
542
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'assets/lib/pandora/class-am-notification.php';
543
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'assets/lib/pandora/class-am-deactivation-survey.php';
 
544
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/admin/ajax.php';
545
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/admin/admin.php';
546
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/admin/common.php';
6
  * Author: MonsterInsights
7
  * Author URI: https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=authoruri&utm_content=7%2E0%2E0
8
  *
9
+ * Version: 7.2.0
10
  * Requires at least: 3.8.0
11
  * Tested up to: 4.9
12
  *
69
  * @access public
70
  * @var string $version Plugin version.
71
  */
72
+ public $version = '7.2.0';
73
 
74
  /**
75
  * Plugin file.
541
  // Lite and Pro files
542
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'assets/lib/pandora/class-am-notification.php';
543
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'assets/lib/pandora/class-am-deactivation-survey.php';
544
+ require_once MONSTERINSIGHTS_PLUGIN_DIR . 'assets/lib/pandora/class-am-dashboard-widget-extend-feed.php';
545
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/admin/ajax.php';
546
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/admin/admin.php';
547
  require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/admin/common.php';
includes/admin/api-auth.php CHANGED
@@ -35,6 +35,9 @@ final class MonsterInsights_API_Auth {
35
 
36
  add_action( 'admin_init', array( $this, 'authenticate_listener' ) );
37
  add_action( 'admin_init', array( $this, 'reauthenticate_listener' ) );
 
 
 
38
  }
39
 
40
  public function get_tt(){
@@ -46,7 +49,7 @@ final class MonsterInsights_API_Auth {
46
  }
47
  return $tt;
48
  }
49
-
50
  public function rotate_tt(){
51
  $tt = $this->generate_tt();
52
  is_network_admin() ? update_site_option( 'monsterinsights_network_tt', $tt ) : update_option( 'monsterinsights_site_tt', $tt );
@@ -61,6 +64,15 @@ final class MonsterInsights_API_Auth {
61
  return hash_equals( $tt, $passed_tt );
62
  }
63
 
 
 
 
 
 
 
 
 
 
64
  public function maybe_authenticate(){
65
 
66
  // Check nonce
@@ -95,6 +107,8 @@ final class MonsterInsights_API_Auth {
95
  'tt' => $this->get_tt(),
96
  'sitei' => $sitei,
97
  'miversion' => MONSTERINSIGHTS_VERSION,
 
 
98
  'siteurl' => is_network_admin() ? network_admin_url() : site_url(),
99
  'return' => is_network_admin() ? network_admin_url( 'admin.php?page=monsterinsights_network' ) : admin_url( 'admin.php?page=monsterinsights_settings' ),
100
  ), $this->get_route( 'https://' . monsterinsights_get_api_url() . 'auth/new/{type}' ) );
@@ -108,6 +122,87 @@ final class MonsterInsights_API_Auth {
108
  wp_send_json_success( array( 'redirect' => $siteurl ) );
109
  }
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
  public function authenticate_listener(){
113
  // Make sure it's for us
@@ -115,7 +210,6 @@ final class MonsterInsights_API_Auth {
115
  return;
116
  }
117
 
118
-
119
  // User can authenticate
120
  if ( ! current_user_can( 'monsterinsights_save_settings' ) ) {
121
  return;
@@ -211,6 +305,8 @@ final class MonsterInsights_API_Auth {
211
  'tt' => $this->get_tt(),
212
  'sitei' => $this->get_sitei(),
213
  'miversion' => MONSTERINSIGHTS_VERSION,
 
 
214
  'siteurl' => is_network_admin() ? network_admin_url() : site_url(),
215
  'key' => MonsterInsights()->auth->get_key(),
216
  'token' => MonsterInsights()->auth->get_token(),
35
 
36
  add_action( 'admin_init', array( $this, 'authenticate_listener' ) );
37
  add_action( 'admin_init', array( $this, 'reauthenticate_listener' ) );
38
+
39
+ add_action( 'wp_ajax_nopriv_monsterinsights_is_installed', array( $this, 'is_installed' ) );
40
+ add_action( 'wp_ajax_nopriv_monsterinsights_rauthenticate', array( $this, 'authenticate' ) );
41
  }
42
 
43
  public function get_tt(){
49
  }
50
  return $tt;
51
  }
52
+
53
  public function rotate_tt(){
54
  $tt = $this->generate_tt();
55
  is_network_admin() ? update_site_option( 'monsterinsights_network_tt', $tt ) : update_option( 'monsterinsights_site_tt', $tt );
64
  return hash_equals( $tt, $passed_tt );
65
  }
66
 
67
+ public function is_installed() {
68
+ wp_send_json_success(
69
+ array(
70
+ 'version' => MONSTERINSIGHTS_VERSION,
71
+ 'pro' => monsterinsights_is_pro_version(),
72
+ )
73
+ );
74
+ }
75
+
76
  public function maybe_authenticate(){
77
 
78
  // Check nonce
107
  'tt' => $this->get_tt(),
108
  'sitei' => $sitei,
109
  'miversion' => MONSTERINSIGHTS_VERSION,
110
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
111
+ 'network' => is_network_admin() ? 'network' : 'site',
112
  'siteurl' => is_network_admin() ? network_admin_url() : site_url(),
113
  'return' => is_network_admin() ? network_admin_url( 'admin.php?page=monsterinsights_network' ) : admin_url( 'admin.php?page=monsterinsights_settings' ),
114
  ), $this->get_route( 'https://' . monsterinsights_get_api_url() . 'auth/new/{type}' ) );
122
  wp_send_json_success( array( 'redirect' => $siteurl ) );
123
  }
124
 
125
+ public function authenticate() {
126
+ // Check for missing params
127
+ $reqd_args = array( 'key', 'token', 'ua', 'miview', 'a', 'w', 'p', 'tt', 'network' );
128
+ foreach ( $reqd_args as $arg ) {
129
+ if ( empty( $_REQUEST[$arg] ) ) {
130
+ wp_send_json_error(
131
+ array(
132
+ 'error' => 'authenticate_missing_arg',
133
+ 'message' => 'Authenticate missing parameter: ' . $arg,
134
+ 'version' => MONSTERINSIGHTS_VERSION,
135
+ 'pro' => monsterinsights_is_pro_version(),
136
+ )
137
+ );
138
+ }
139
+ }
140
+
141
+ if ( ! $this->validate_tt( $_REQUEST['tt'] ) ) {
142
+ wp_send_json_error(
143
+ array(
144
+ 'error' => 'authenticate_invalid_tt',
145
+ 'message' => 'Invalid TT sent',
146
+ 'version' => MONSTERINSIGHTS_VERSION,
147
+ 'pro' => monsterinsights_is_pro_version(),
148
+ )
149
+ );
150
+ }
151
+
152
+ // Invalid UA code
153
+ $ua = monsterinsights_is_valid_ua( $_REQUEST['ua'] );
154
+ if ( empty( $ua ) ) {
155
+ wp_send_json_error(
156
+ array(
157
+ 'error' => 'authenticate_invalid_ua',
158
+ 'message' => 'Invalid UA code sent',
159
+ 'version' => MONSTERINSIGHTS_VERSION,
160
+ 'pro' => monsterinsights_is_pro_version(),
161
+ )
162
+ );
163
+ }
164
+
165
+ $profile = array(
166
+ 'key' => sanitize_text_field( $_REQUEST['key'] ),
167
+ 'token' => sanitize_text_field( $_REQUEST['token'] ),
168
+ 'ua' => monsterinsights_is_valid_ua( $_REQUEST['ua'] ),
169
+ 'viewname' => sanitize_text_field( $_REQUEST['miview'] ),
170
+ 'a' => sanitize_text_field( $_REQUEST['a'] ),
171
+ 'w' => sanitize_text_field( $_REQUEST['w'] ),
172
+ 'p' => sanitize_text_field( $_REQUEST['p'] ),
173
+ 'siteurl' => site_url(),
174
+ 'neturl' => network_admin_url(),
175
+ );
176
+
177
+ $worked = $this->verify_auth( $profile );
178
+ if ( ! $worked ) {
179
+ wp_send_json_error(
180
+ array(
181
+ 'error' => 'authenticate_auth_verification_failed',
182
+ 'message' => 'Authenticate verification failed',
183
+ 'version' => MONSTERINSIGHTS_VERSION,
184
+ 'pro' => monsterinsights_is_pro_version(),
185
+ )
186
+ );
187
+ }
188
+
189
+ // Rotate tt
190
+ $this->rotate_tt();
191
+
192
+ // Save Profile
193
+ $is_network = $_REQUEST['network'] === 'network';
194
+ if ( $is_network ) {
195
+ MonsterInsights()->auth->set_network_analytics_profile( $profile );
196
+ } else {
197
+ MonsterInsights()->auth->set_analytics_profile( $profile );
198
+ }
199
+
200
+ // Clear cache
201
+ $where = $is_network ? 'network' : 'site';
202
+ MonsterInsights()->reporting->delete_aggregate_data( $where );
203
+
204
+ wp_send_json_success();
205
+ }
206
 
207
  public function authenticate_listener(){
208
  // Make sure it's for us
210
  return;
211
  }
212
 
 
213
  // User can authenticate
214
  if ( ! current_user_can( 'monsterinsights_save_settings' ) ) {
215
  return;
305
  'tt' => $this->get_tt(),
306
  'sitei' => $this->get_sitei(),
307
  'miversion' => MONSTERINSIGHTS_VERSION,
308
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
309
+ 'network' => is_network_admin() ? 'network' : 'site',
310
  'siteurl' => is_network_admin() ? network_admin_url() : site_url(),
311
  'key' => MonsterInsights()->auth->get_key(),
312
  'token' => MonsterInsights()->auth->get_token(),
includes/admin/common.php CHANGED
@@ -312,6 +312,13 @@ function monsterinsights_remove_conflicting_asset_files() {
312
  'ssi_script', // Fix for Add Social Share
313
  'live_templates', // Fix for Add Social Share
314
  'default', // Fix for Add Social Share
 
 
 
 
 
 
 
315
  );
316
 
317
  if ( ! empty( $styles ) ) {
@@ -500,6 +507,7 @@ function hide_non_monsterinsights_warnings () {
500
  }
501
  }
502
  add_action('admin_print_scripts', 'hide_non_monsterinsights_warnings');
 
503
 
504
  /**
505
  * Called whenever an upgrade button / link is displayed in Lite, this function will
@@ -646,6 +654,8 @@ function monsterinsights_remove_unnecessary_footer_hooks() {
646
  // Remove js code added by Newspaper theme - version 8.8.0.
647
  remove_action( 'print_media_templates', 'td_custom_gallery_settings_hook' );
648
  remove_action( 'print_media_templates', 'td_change_backbone_js_hook' );
 
 
649
 
650
  // Remove js code added by WordPress Book List Plugin - version 5.8.1.
651
  remove_action( 'admin_footer', 'wpbooklist_jre_dismiss_prem_notice_forever_action_javascript' );
312
  'ssi_script', // Fix for Add Social Share
313
  'live_templates', // Fix for Add Social Share
314
  'default', // Fix for Add Social Share
315
+ 'handsontable', // Fix WP Tables
316
+ 'moment-js', // Magee Shortcodes
317
+ 'postbox', // Scripts from wp-admin enqueued everywhere by WP Posts Filter
318
+ 'link', // Scripts from wp-admin enqueued everywhere by WP Posts Filter
319
+ 'wpvr_scripts', // WP Video Robot
320
+ 'wpvr_scripts_loaded', // WP Video Robot
321
+ 'wpvr_scripts_assets' // WP Video Robot
322
  );
323
 
324
  if ( ! empty( $styles ) ) {
507
  }
508
  }
509
  add_action('admin_print_scripts', 'hide_non_monsterinsights_warnings');
510
+ add_action('admin_head', 'hide_non_monsterinsights_warnings', PHP_INT_MAX );
511
 
512
  /**
513
  * Called whenever an upgrade button / link is displayed in Lite, this function will
654
  // Remove js code added by Newspaper theme - version 8.8.0.
655
  remove_action( 'print_media_templates', 'td_custom_gallery_settings_hook' );
656
  remove_action( 'print_media_templates', 'td_change_backbone_js_hook' );
657
+ // Remove js code added by the Brooklyn theme - version 4.5.3.1.
658
+ remove_action( 'print_media_templates', 'ut_create_gallery_options' );
659
 
660
  // Remove js code added by WordPress Book List Plugin - version 5.8.1.
661
  remove_action( 'admin_footer', 'wpbooklist_jre_dismiss_prem_notice_forever_action_javascript' );
includes/admin/reports/overview.php CHANGED
@@ -395,8 +395,8 @@ final class MonsterInsights_Report_Overview extends MonsterInsights_Report {
395
  <?php echo esc_html__( 'Sessions', 'google-analytics-for-wordpress' ); ?>
396
  </div>
397
  <div class="monsterinsights-reports-uright-tooltip" data-tooltip-title="<?php echo esc_attr( __( 'Session', 'google-analytics-for-wordpress' ) ); ?>" data-tooltip-description="<?php echo esc_attr( __( 'A session is the browsing session of a single user to your site.', 'google-analytics-for-wordpress' ) ); ?>"></div>
398
- <div class="monsterinsights-reports-infobox-number">
399
- <?php echo esc_html( number_format_i18n( $data['infobox']['sessions']['value'] ) ); ?>
400
  </div>
401
  <?php if ( empty( $data['infobox']['sessions']['prev'] ) ) { ?>
402
  <div class="monsterinsights-reports-infobox-prev">
@@ -422,8 +422,8 @@ final class MonsterInsights_Report_Overview extends MonsterInsights_Report {
422
  <?php echo esc_html__( 'Pageviews', 'google-analytics-for-wordpress' ); ?>
423
  </div>
424
  <div class="monsterinsights-reports-uright-tooltip" data-tooltip-title="<?php echo esc_attr( __( 'Pageviews', 'google-analytics-for-wordpress' ) ); ?>" data-tooltip-description="<?php echo esc_attr( __( 'A pageview is defined as a view of a page on your site that is being tracked by the Analytics tracking code. Each refresh of a page is also a new pageview.', 'google-analytics-for-wordpress' ) ); ?>"></div>
425
- <div class="monsterinsights-reports-infobox-number">
426
- <?php echo esc_html( number_format_i18n( $data['infobox']['pageviews']['value'] ) ); ?>
427
  </div>
428
  <?php if ( empty( $data['infobox']['pageviews']['prev'] ) ) { ?>
429
  <div class="monsterinsights-reports-infobox-prev">
395
  <?php echo esc_html__( 'Sessions', 'google-analytics-for-wordpress' ); ?>
396
  </div>
397
  <div class="monsterinsights-reports-uright-tooltip" data-tooltip-title="<?php echo esc_attr( __( 'Session', 'google-analytics-for-wordpress' ) ); ?>" data-tooltip-description="<?php echo esc_attr( __( 'A session is the browsing session of a single user to your site.', 'google-analytics-for-wordpress' ) ); ?>"></div>
398
+ <div class="monsterinsights-reports-infobox-number" title="<?php echo esc_attr( number_format_i18n( $data['infobox']['sessions']['value'] ) ); ?>">
399
+ <?php echo esc_html( monsterinsights_round_number( $data['infobox']['sessions']['value'] ) ); ?>
400
  </div>
401
  <?php if ( empty( $data['infobox']['sessions']['prev'] ) ) { ?>
402
  <div class="monsterinsights-reports-infobox-prev">
422
  <?php echo esc_html__( 'Pageviews', 'google-analytics-for-wordpress' ); ?>
423
  </div>
424
  <div class="monsterinsights-reports-uright-tooltip" data-tooltip-title="<?php echo esc_attr( __( 'Pageviews', 'google-analytics-for-wordpress' ) ); ?>" data-tooltip-description="<?php echo esc_attr( __( 'A pageview is defined as a view of a page on your site that is being tracked by the Analytics tracking code. Each refresh of a page is also a new pageview.', 'google-analytics-for-wordpress' ) ); ?>"></div>
425
+ <div class="monsterinsights-reports-infobox-number" title="<?php echo esc_attr( number_format_i18n( $data['infobox']['pageviews']['value'] ) ); ?>">
426
+ <?php echo esc_html( monsterinsights_round_number( $data['infobox']['pageviews']['value'] ) ); ?>
427
  </div>
428
  <?php if ( empty( $data['infobox']['pageviews']['prev'] ) ) { ?>
429
  <div class="monsterinsights-reports-infobox-prev">
includes/admin/settings/register-settings.php CHANGED
@@ -246,7 +246,7 @@ function monsterinsights_get_registered_settings() {
246
  'extensions_of_files' => array( /* @todo: Select2 extensions of files */
247
  'id' => 'extensions_of_files',
248
  'name' => __( 'Extensions of files to track as downloads:', 'google-analytics-for-wordpress' ),
249
- 'desc' => __( 'If you have enabled event tracking, MonsterInsights will send an event/pageview to GA if a link to a local file has one of the above extensions.', 'google-analytics-for-wordpress' ),
250
  'type' => 'text',
251
  ),
252
  )
246
  'extensions_of_files' => array( /* @todo: Select2 extensions of files */
247
  'id' => 'extensions_of_files',
248
  'name' => __( 'Extensions of files to track as downloads:', 'google-analytics-for-wordpress' ),
249
+ 'desc' => __( 'If you have enabled event tracking, MonsterInsights will send an event/pageview to GA if a link to a file has one of the above extensions.', 'google-analytics-for-wordpress' ),
250
  'type' => 'text',
251
  ),
252
  )
includes/api-request.php CHANGED
@@ -16,7 +16,7 @@ final class MonsterInsights_API_Request {
16
  *
17
  * @var string
18
  */
19
- public $base = 'www.monsterinsights.com/v1/';
20
 
21
  /**
22
  * Current API route.
@@ -45,6 +45,15 @@ final class MonsterInsights_API_Request {
45
  */
46
  public $method = false;
47
 
 
 
 
 
 
 
 
 
 
48
  /**
49
  * API token.
50
  *
@@ -134,11 +143,11 @@ final class MonsterInsights_API_Request {
134
  $this->protocol = 'https://';
135
  $this->url = trailingslashit( $this->protocol . $this->base . $this->route );
136
  $this->method = $method;
 
 
 
 
137
 
138
- $default_token = ! empty( $args['network'] ) && $args['network'] ? MonsterInsights()->auth->get_network_token() : MonsterInsights()->auth->get_token();
139
- $default_key = ! empty( $args['network'] ) && $args['network'] ? MonsterInsights()->auth->get_network_key() : MonsterInsights()->auth->get_key();
140
-
141
-
142
  $this->token = ! empty( $args['token'] ) ? $args['token'] : $default_token;
143
  $this->key = ! empty( $args['key'] ) ? $args['key'] : $default_key;
144
  $this->tt = ! empty( $args['tt'] ) ? $args['tt'] : '';
@@ -150,12 +159,11 @@ final class MonsterInsights_API_Request {
150
  $this->site_url = is_network_admin() ? network_admin_url() : site_url();
151
 
152
  if ( monsterinsights_is_pro_version() ) {
153
- $this->license = is_network_admin() || ( ! empty( $args['network'] ) && $args['network'] ) ? MonsterInsights()->license->get_network_license_key() : MonsterInsights()->license->get_site_license_key();
154
  }
155
  $this->plugin = MonsterInsights()->plugin_slug;
156
  $this->miversion = MONSTERINSIGHTS_VERSION;
157
  $this->sitei = ! empty( $args['sitei'] ) ? $args['sitei'] : '';
158
-
159
  }
160
 
161
  /**
@@ -181,7 +189,7 @@ final class MonsterInsights_API_Request {
181
  if ( ! empty( $this->key ) ) {
182
  $body['key'] = $this->key;
183
  }
184
-
185
  if ( ! empty( $this->tt ) ) {
186
  $body['tt'] = $this->tt;
187
  }
@@ -225,6 +233,8 @@ final class MonsterInsights_API_Request {
225
 
226
  $body['timezone'] = date('e');
227
 
 
 
228
  $body['ip'] = ! empty( $_SERVER['SERVER_ADDR'] ) ? $_SERVER['SERVER_ADDR'] : '';
229
 
230
  // This filter will be removed in the future.
16
  *
17
  * @var string
18
  */
19
+ public $base = 'api.monsterinsights.com/v2/';
20
 
21
  /**
22
  * Current API route.
45
  */
46
  public $method = false;
47
 
48
+ /**
49
+ * Is a network request.
50
+ *
51
+ * @since 7.2.0
52
+ *
53
+ * @var bool
54
+ */
55
+ public $network = false;
56
+
57
  /**
58
  * API token.
59
  *
143
  $this->protocol = 'https://';
144
  $this->url = trailingslashit( $this->protocol . $this->base . $this->route );
145
  $this->method = $method;
146
+ $this->network = is_network_admin() || ! empty( $args['network'] );
147
+
148
+ $default_token = $this->network ? MonsterInsights()->auth->get_network_token() : MonsterInsights()->auth->get_token();
149
+ $default_key = $this->network ? MonsterInsights()->auth->get_network_key() : MonsterInsights()->auth->get_key();
150
 
 
 
 
 
151
  $this->token = ! empty( $args['token'] ) ? $args['token'] : $default_token;
152
  $this->key = ! empty( $args['key'] ) ? $args['key'] : $default_key;
153
  $this->tt = ! empty( $args['tt'] ) ? $args['tt'] : '';
159
  $this->site_url = is_network_admin() ? network_admin_url() : site_url();
160
 
161
  if ( monsterinsights_is_pro_version() ) {
162
+ $this->license = $this->network ? MonsterInsights()->license->get_network_license_key() : MonsterInsights()->license->get_site_license_key();
163
  }
164
  $this->plugin = MonsterInsights()->plugin_slug;
165
  $this->miversion = MONSTERINSIGHTS_VERSION;
166
  $this->sitei = ! empty( $args['sitei'] ) ? $args['sitei'] : '';
 
167
  }
168
 
169
  /**
189
  if ( ! empty( $this->key ) ) {
190
  $body['key'] = $this->key;
191
  }
192
+
193
  if ( ! empty( $this->tt ) ) {
194
  $body['tt'] = $this->tt;
195
  }
233
 
234
  $body['timezone'] = date('e');
235
 
236
+ $body['network'] = $this->network ? 'network' : 'site';
237
+
238
  $body['ip'] = ! empty( $_SERVER['SERVER_ADDR'] ) ? $_SERVER['SERVER_ADDR'] : '';
239
 
240
  // This filter will be removed in the future.
includes/helpers.php CHANGED
@@ -845,7 +845,7 @@ function monsterinsights_get_country_list( $translated = false ) {
845
  }
846
 
847
  function monsterinsights_get_api_url(){
848
- return apply_filters( 'monsterinsights_get_api_url', 'www.monsterinsights.com/v1/' );
849
  }
850
 
851
  function monsterinsights_get_licensing_url(){
@@ -982,4 +982,28 @@ if ( ! function_exists ( 'remove_class_action' ) ) {
982
  function remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
983
  remove_class_filter( $tag, $class_name, $method_name, $priority );
984
  }
985
- } // End function exists
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
845
  }
846
 
847
  function monsterinsights_get_api_url(){
848
+ return apply_filters( 'monsterinsights_get_api_url', 'api.monsterinsights.com/v2/' );
849
  }
850
 
851
  function monsterinsights_get_licensing_url(){
982
  function remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
983
  remove_class_filter( $tag, $class_name, $method_name, $priority );
984
  }
985
+ } // End function exists
986
+
987
+ /**
988
+ * Format a big number, instead of 1000000 you get 1.0M, works with billions also.
989
+ *
990
+ * @param int $number
991
+ * @param int $precision
992
+ *
993
+ * @return string
994
+ */
995
+ function monsterinsights_round_number( $number, $precision = 2 ) {
996
+
997
+ if ( $number < 1000000 ) {
998
+ // Anything less than a million
999
+ $number = number_format_i18n( $number );
1000
+ } else if ( $number < 1000000000 ) {
1001
+ // Anything less than a billion
1002
+ $number = number_format_i18n( $number / 1000000, $precision ) . 'M';
1003
+ } else {
1004
+ // At least a billion
1005
+ $number = number_format_i18n( $number / 1000000000, $precision ) . 'B';
1006
+ }
1007
+
1008
+ return $number;
1009
+ }
languages/google-analytics-for-wordpress.pot CHANGED
@@ -4,7 +4,7 @@ msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: MonsterInsights Lite\n"
6
  "Report-Msgid-Bugs-To: https://github.com/awesomemotive/monsterinsights/issues\n"
7
- "POT-Creation-Date: 2018-08-07 22:35-0400\n"
8
  "PO-Revision-Date: 2016-07-21 17:01-0400\n"
9
  "Last-Translator: Chris Christoff <support@monsterinsights.com>\n"
10
  "Language-Team: Chris Christoff <support@monsterinsights.com>\n"
@@ -50,12 +50,12 @@ msgstr ""
50
  msgid "Please %1$suninstall%2$s the MonsterInsights Lite Plugin. Your Pro version of MonsterInsights may not work as expected until the Lite version is uninstalled."
51
  msgstr ""
52
 
53
- #: googleanalytics.php:645
54
  #, php-format
55
  msgid "Sorry, but your version of WordPress does not meet MonsterInsight's required version of %1$s3.8%2$s to run properly. The plugin not been activated. %3$sClick here to return to the Dashboard%4$s."
56
  msgstr ""
57
 
58
- #: googleanalytics.php:650
59
  #, php-format
60
  msgid "Please uninstall and remove MonsterInsights Pro before activating Google Analytics for WordPress by MonsterInsights. The Lite version has not been activated. %1$sClick here to return to the Dashboard%2$s."
61
  msgstr ""
@@ -190,79 +190,79 @@ msgstr ""
190
  msgid "%1$sGet MonsterInsights Pro%2$s"
191
  msgstr ""
192
 
193
- #: includes/admin/api-auth.php:71
194
  msgid "You don't have permission to authenticate MonsterInsights."
195
  msgstr ""
196
 
197
- #: includes/admin/api-auth.php:81
198
  msgid "Cannot authenticate. Please enter a valid, active license key for MonsterInsights Pro into the settings."
199
  msgstr ""
200
 
201
- #: includes/admin/api-auth.php:86
202
  msgid "Cannot authenticate. Please re-authenticate."
203
  msgstr ""
204
 
205
- #: includes/admin/api-auth.php:88
206
  msgid "Cannot network authenticate. Please re-authenticate on the network settings panel."
207
  msgstr ""
208
 
209
- #: includes/admin/api-auth.php:190
210
  msgid "You don't have permission to re-authenticate MonsterInsights."
211
  msgstr ""
212
 
213
- #: includes/admin/api-auth.php:200
214
  msgid "Cannot re-authenticate. Please enter a valid, active license key for MonsterInsights Pro into the settings."
215
  msgstr ""
216
 
217
- #: includes/admin/api-auth.php:205
218
  msgid "Cannot re-authenticate. Please authenticate."
219
  msgstr ""
220
 
221
- #: includes/admin/api-auth.php:207
222
  msgid "Cannot re-authenticate the network. Please authenticate on the network settings panel."
223
  msgstr ""
224
 
225
- #: includes/admin/api-auth.php:307
226
  msgid "You don't have permission to verify MonsterInsights."
227
  msgstr ""
228
 
229
- #: includes/admin/api-auth.php:316 includes/admin/api-auth.php:318
230
  msgid "Cannot verify. Please authenticate."
231
  msgstr ""
232
 
233
- #: includes/admin/api-auth.php:323
234
  msgid "Cannot verify. Please enter a valid, active license key for MonsterInsights Pro into the settings."
235
  msgstr ""
236
 
237
- #: includes/admin/api-auth.php:328
238
  msgid "Successfully verified."
239
  msgstr ""
240
 
241
- #: includes/admin/api-auth.php:330
242
  msgid "Could not verify."
243
  msgstr ""
244
 
245
- #: includes/admin/api-auth.php:358
246
  msgid "You don't have permission to deauthenticate MonsterInsights."
247
  msgstr ""
248
 
249
- #: includes/admin/api-auth.php:367 includes/admin/api-auth.php:369
250
  msgid "Cannot deauthenticate. You are not currently authed."
251
  msgstr ""
252
 
253
- #: includes/admin/api-auth.php:374
254
  msgid "Cannot deauthenticate. Please enter a valid, active license key for MonsterInsights Pro into the settings."
255
  msgstr ""
256
 
257
- #: includes/admin/api-auth.php:381
258
  msgid "Successfully deauthenticated."
259
  msgstr ""
260
 
261
- #: includes/admin/api-auth.php:384
262
  msgid "Successfully force deauthenticated."
263
  msgstr ""
264
 
265
- #: includes/admin/api-auth.php:386
266
  msgid "Could not deauthenticate."
267
  msgstr ""
268
 
@@ -439,7 +439,7 @@ msgstr ""
439
  msgid "Error"
440
  msgstr ""
441
 
442
- #: includes/admin/common.php:628
443
  #, php-format
444
  msgid "MonsterInsights has detected that it's files are being blocked. This is usually caused by a adblock browser plugin (particularly uBlock Origin), or a conflicting WordPress theme or plugin. This issue only affects the admin side of MonsterInsights. To solve this, ensure MonsterInsights is whitelisted for your website URL in any adblock browser plugin you use. For step by step directions on how to do this, %1$sclick here%2$s. If this doesn't solve the issue (rare), send us a ticket %3$shere%2$s and we'll be happy to help diagnose the issue."
445
  msgstr ""
@@ -1281,7 +1281,7 @@ msgid "Extensions of files to track as downloads:"
1281
  msgstr ""
1282
 
1283
  #: includes/admin/settings/register-settings.php:249
1284
- msgid "If you have enabled event tracking, MonsterInsights will send an event/pageview to GA if a link to a local file has one of the above extensions."
1285
  msgstr ""
1286
 
1287
  #: includes/admin/settings/register-settings.php:259
@@ -1448,25 +1448,25 @@ msgstr ""
1448
  msgid "Once Weekly"
1449
  msgstr ""
1450
 
1451
- #: includes/api-request.php:171
1452
  msgid "The firewall of your server is blocking outbound calls. Please contact your hosting provider to fix this issue."
1453
  msgstr ""
1454
 
1455
- #: includes/api-request.php:275
1456
  msgid "The API was unreachable."
1457
  msgstr ""
1458
 
1459
- #: includes/api-request.php:279
1460
  #, php-format
1461
  msgid "The API returned a <strong>%s</strong> response"
1462
  msgstr ""
1463
 
1464
- #: includes/api-request.php:283 includes/api-request.php:287
1465
  #, php-format
1466
  msgid "The API returned a <strong>%d</strong> response with this message: <strong>%s</strong>"
1467
  msgstr ""
1468
 
1469
- #: includes/api-request.php:295
1470
  msgid "Improper API request."
1471
  msgstr ""
1472
 
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: MonsterInsights Lite\n"
6
  "Report-Msgid-Bugs-To: https://github.com/awesomemotive/monsterinsights/issues\n"
7
+ "POT-Creation-Date: 2018-09-19 11:07-0400\n"
8
  "PO-Revision-Date: 2016-07-21 17:01-0400\n"
9
  "Last-Translator: Chris Christoff <support@monsterinsights.com>\n"
10
  "Language-Team: Chris Christoff <support@monsterinsights.com>\n"
50
  msgid "Please %1$suninstall%2$s the MonsterInsights Lite Plugin. Your Pro version of MonsterInsights may not work as expected until the Lite version is uninstalled."
51
  msgstr ""
52
 
53
+ #: googleanalytics.php:646
54
  #, php-format
55
  msgid "Sorry, but your version of WordPress does not meet MonsterInsight's required version of %1$s3.8%2$s to run properly. The plugin not been activated. %3$sClick here to return to the Dashboard%4$s."
56
  msgstr ""
57
 
58
+ #: googleanalytics.php:651
59
  #, php-format
60
  msgid "Please uninstall and remove MonsterInsights Pro before activating Google Analytics for WordPress by MonsterInsights. The Lite version has not been activated. %1$sClick here to return to the Dashboard%2$s."
61
  msgstr ""
190
  msgid "%1$sGet MonsterInsights Pro%2$s"
191
  msgstr ""
192
 
193
+ #: includes/admin/api-auth.php:83
194
  msgid "You don't have permission to authenticate MonsterInsights."
195
  msgstr ""
196
 
197
+ #: includes/admin/api-auth.php:93
198
  msgid "Cannot authenticate. Please enter a valid, active license key for MonsterInsights Pro into the settings."
199
  msgstr ""
200
 
201
+ #: includes/admin/api-auth.php:98
202
  msgid "Cannot authenticate. Please re-authenticate."
203
  msgstr ""
204
 
205
+ #: includes/admin/api-auth.php:100
206
  msgid "Cannot network authenticate. Please re-authenticate on the network settings panel."
207
  msgstr ""
208
 
209
+ #: includes/admin/api-auth.php:284
210
  msgid "You don't have permission to re-authenticate MonsterInsights."
211
  msgstr ""
212
 
213
+ #: includes/admin/api-auth.php:294
214
  msgid "Cannot re-authenticate. Please enter a valid, active license key for MonsterInsights Pro into the settings."
215
  msgstr ""
216
 
217
+ #: includes/admin/api-auth.php:299
218
  msgid "Cannot re-authenticate. Please authenticate."
219
  msgstr ""
220
 
221
+ #: includes/admin/api-auth.php:301
222
  msgid "Cannot re-authenticate the network. Please authenticate on the network settings panel."
223
  msgstr ""
224
 
225
+ #: includes/admin/api-auth.php:403
226
  msgid "You don't have permission to verify MonsterInsights."
227
  msgstr ""
228
 
229
+ #: includes/admin/api-auth.php:412 includes/admin/api-auth.php:414
230
  msgid "Cannot verify. Please authenticate."
231
  msgstr ""
232
 
233
+ #: includes/admin/api-auth.php:419
234
  msgid "Cannot verify. Please enter a valid, active license key for MonsterInsights Pro into the settings."
235
  msgstr ""
236
 
237
+ #: includes/admin/api-auth.php:424
238
  msgid "Successfully verified."
239
  msgstr ""
240
 
241
+ #: includes/admin/api-auth.php:426
242
  msgid "Could not verify."
243
  msgstr ""
244
 
245
+ #: includes/admin/api-auth.php:454
246
  msgid "You don't have permission to deauthenticate MonsterInsights."
247
  msgstr ""
248
 
249
+ #: includes/admin/api-auth.php:463 includes/admin/api-auth.php:465
250
  msgid "Cannot deauthenticate. You are not currently authed."
251
  msgstr ""
252
 
253
+ #: includes/admin/api-auth.php:470
254
  msgid "Cannot deauthenticate. Please enter a valid, active license key for MonsterInsights Pro into the settings."
255
  msgstr ""
256
 
257
+ #: includes/admin/api-auth.php:477
258
  msgid "Successfully deauthenticated."
259
  msgstr ""
260
 
261
+ #: includes/admin/api-auth.php:480
262
  msgid "Successfully force deauthenticated."
263
  msgstr ""
264
 
265
+ #: includes/admin/api-auth.php:482
266
  msgid "Could not deauthenticate."
267
  msgstr ""
268
 
439
  msgid "Error"
440
  msgstr ""
441
 
442
+ #: includes/admin/common.php:636
443
  #, php-format
444
  msgid "MonsterInsights has detected that it's files are being blocked. This is usually caused by a adblock browser plugin (particularly uBlock Origin), or a conflicting WordPress theme or plugin. This issue only affects the admin side of MonsterInsights. To solve this, ensure MonsterInsights is whitelisted for your website URL in any adblock browser plugin you use. For step by step directions on how to do this, %1$sclick here%2$s. If this doesn't solve the issue (rare), send us a ticket %3$shere%2$s and we'll be happy to help diagnose the issue."
445
  msgstr ""
1281
  msgstr ""
1282
 
1283
  #: includes/admin/settings/register-settings.php:249
1284
+ msgid "If you have enabled event tracking, MonsterInsights will send an event/pageview to GA if a link to a file has one of the above extensions."
1285
  msgstr ""
1286
 
1287
  #: includes/admin/settings/register-settings.php:259
1448
  msgid "Once Weekly"
1449
  msgstr ""
1450
 
1451
+ #: includes/api-request.php:179
1452
  msgid "The firewall of your server is blocking outbound calls. Please contact your hosting provider to fix this issue."
1453
  msgstr ""
1454
 
1455
+ #: includes/api-request.php:285
1456
  msgid "The API was unreachable."
1457
  msgstr ""
1458
 
1459
+ #: includes/api-request.php:289
1460
  #, php-format
1461
  msgid "The API returned a <strong>%s</strong> response"
1462
  msgstr ""
1463
 
1464
+ #: includes/api-request.php:293 includes/api-request.php:297
1465
  #, php-format
1466
  msgid "The API returned a <strong>%d</strong> response with this message: <strong>%s</strong>"
1467
  msgstr ""
1468
 
1469
+ #: includes/api-request.php:305
1470
  msgid "Improper API request."
1471
  msgstr ""
1472
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.wpbeginner.com/wpbeginner-needs-your-help/
4
  Tags: analytics, analytics dashboard, google analytics, google analytics dashboard, google analytics widget, universal google analytics, statistics, tracking, stats, google, yoast, google analytics by yoast, ga, monster insights, monsterinsights, universal analytics, web stats, ecommerce, ecommerce tracking
5
  Requires at least: 3.8.0
6
  Tested up to: 4.9
7
- Stable tag: 7.1.0
8
  License: GPL v3
9
 
10
  The best Google Analytics plugin for WordPress. See how visitors find and use your website, so you can keep them coming back.
@@ -134,6 +134,12 @@ You can also learn about other <a href="http://www.wpbeginner.com/category/plugi
134
  4. Want more features? <a href="https://www.monsterinsights.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Purchase MonsterInsights Pro</a>!
135
 
136
  == Changelog ==
 
 
 
 
 
 
137
  = 7.1.0: August 8, 2018 =
138
  - New: Comprehensive review of the plugin to ensure styles are correct when utilizing a right to left language.
139
  - Tweak: Compatibility for the WP Media Folder plugin, TagDiv Composer plugin, Ali Dropship plugin, Affiliate Boxes plugin, Impreza theme, GT3 Photo & Video Gallery plugin, WP Booklist plugin, Houzez theme, Prowess theme, and Add Social Share plugin.
4
  Tags: analytics, analytics dashboard, google analytics, google analytics dashboard, google analytics widget, universal google analytics, statistics, tracking, stats, google, yoast, google analytics by yoast, ga, monster insights, monsterinsights, universal analytics, web stats, ecommerce, ecommerce tracking
5
  Requires at least: 3.8.0
6
  Tested up to: 4.9
7
+ Stable tag: 7.2.0
8
  License: GPL v3
9
 
10
  The best Google Analytics plugin for WordPress. See how visitors find and use your website, so you can keep them coming back.
134
  4. Want more features? <a href="https://www.monsterinsights.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Purchase MonsterInsights Pro</a>!
135
 
136
  == Changelog ==
137
+ = 7.2.0: September 19, 2018 =
138
+ - Tweak: Sites with large traffic will see numbers larger than 1 million abbreviated so the numbers will no longer overflow out of the report container boxes.
139
+ - Tweak: We've clarified the download tracking setting to point out that externally hosted downloads are now tracked as downloads, not external links.
140
+ - Tweak: Compatibility for the Fix WP Tables and Magee Shortcodes plugins.
141
+ - Fixed: We've fixed issues where sites that were recreated/migrated sometimes could not re-authenticate with MonsterInsights.
142
+
143
  = 7.1.0: August 8, 2018 =
144
  - New: Comprehensive review of the plugin to ensure styles are correct when utilizing a right to left language.
145
  - Tweak: Compatibility for the WP Media Folder plugin, TagDiv Composer plugin, Ali Dropship plugin, Affiliate Boxes plugin, Impreza theme, GT3 Photo & Video Gallery plugin, WP Booklist plugin, Houzez theme, Prowess theme, and Add Social Share plugin.