Google Analytics for WordPress by MonsterInsights - Version 6.0.4

Version Description

= 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 6.0.4
Comparing to
See all releases

Code changes from version 6.0.3 to 6.0.4

googleanalytics.php CHANGED
@@ -6,7 +6,7 @@
6
  * Author: MonsterInsights
7
  * Author URI: https://www.monsterinsights.com/
8
  *
9
- * Version: 6.0.3
10
  * Requires at least: 3.9.0
11
  * Tested up to: 4.7.2
12
  *
@@ -69,7 +69,7 @@ final class MonsterInsights_Lite {
69
  * @access public
70
  * @var string $version Plugin version.
71
  */
72
- public $version = '6.0.3';
73
 
74
  /**
75
  * Plugin file.
@@ -157,7 +157,7 @@ final class MonsterInsights_Lite {
157
  }
158
 
159
  // Detect Pro version and return early
160
- if ( class_exists( 'MonsterInsights' ) ) {
161
  add_action( 'admin_notices', array( self::$instance, 'monsterinsights_pro_notice' ) );
162
  return;
163
  }
@@ -367,7 +367,7 @@ final class MonsterInsights_Lite {
367
  }
368
  ?>
369
  <div class="error">
370
- <p><?php echo sprintf( esc_html__( 'Sorry, but your version of WordPress does not meet MonsterInsights\'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.', 'google-analytics-by-wordpress' ), '<strong>', '</strong>', '<a href="' . $url . '">"', '</a>' ); ?></p>
371
  </div>
372
  <?php
373
  }
@@ -388,7 +388,7 @@ final class MonsterInsights_Lite {
388
  }
389
  ?>
390
  <div class="error">
391
- <p><?php echo sprintf( esc_html__( 'Please %1$sdeactivate%2$s the MonsterInsights Pro Plugin. Your lite version of MonsterInsights may not work as expected until the Pro version is deactivated.', 'google-analytics-for-wordpress' ), '<a href="' . $url . '">"', '</a>' ); ?></p>
392
  </div>
393
  <?php
394
 
@@ -528,12 +528,12 @@ function monsterinsights_lite_activation_hook( $network_wide ) {
528
 
529
  if ( version_compare( $wp_version, '3.8', '<' ) && ( ! defined( 'MONSTERINSIGHTS_FORCE_ACTIVATION' ) || ! MONSTERINSIGHTS_FORCE_ACTIVATION ) ) {
530
  deactivate_plugins( plugin_basename( __FILE__ ) );
531
- wp_die( sprintf( esc_html__( '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.', 'google-analytics-by-wordpress' ), '<strong>', '</strong>', '<a href="' . $url . '">"', '</a>' ) );
532
  }
533
 
534
  if ( class_exists( 'MonsterInsights' ) ) {
535
  deactivate_plugins( plugin_basename( __FILE__ ) );
536
- wp_die( sprintf( esc_html__( 'Please deactivate MonsterInsights Pro before activating MonsterInsights Lite. The Lite version has not been activated. %2$sClick here to return to the Dashboard%2$s.', 'google-analytics-by-wordpress' ), '<a href="' . $url . '">"', '</a>' ) );
537
  }
538
  }
539
  register_activation_hook( __FILE__, 'monsterinsights_lite_activation_hook' );
@@ -547,9 +547,12 @@ register_activation_hook( __FILE__, 'monsterinsights_lite_activation_hook' );
547
  * @return void
548
  */
549
  function monsterinsights_lite_deactivation_hook( $network_wide ) {
550
-
551
- $instance = MonsterInsights_Lite::get_instance();
552
-
 
 
 
553
  if ( is_multisite() && $network_wide ) {
554
  $site_list = get_sites();
555
  $options = array(
@@ -569,7 +572,6 @@ function monsterinsights_lite_deactivation_hook( $network_wide ) {
569
  );
570
  monsterinsights_delete_options( $options );
571
  }
572
-
573
  }
574
  register_deactivation_hook( __FILE__, 'monsterinsights_lite_deactivation_hook' );
575
 
@@ -583,8 +585,11 @@ register_deactivation_hook( __FILE__, 'monsterinsights_lite_deactivation_hook' )
583
  */
584
  function monsterinsights_lite_uninstall_hook( $network_wide ) {
585
 
586
- $instance = MonsterInsights_lite::get_instance();
587
-
 
 
 
588
  if ( is_multisite() && $network_wide ) {
589
  delete_site_option( 'monsterinsights_license' );
590
  delete_site_option( 'monsterinsights_license_updates' );
@@ -631,7 +636,9 @@ function monsterinsights_lite_uninstall_hook( $network_wide ) {
631
  delete_option( 'monsterinsights_lite_refresh_token' );
632
 
633
  // Destroy the data
634
- $instance->reports->delete_aggregate_data();
 
 
635
  }
636
 
637
  }
@@ -677,14 +684,14 @@ function monsterinsights_lite_install_and_upgrade() {
677
 
678
  // If the WordPress site doesn't meet the correct WP version requirements, don't activate MonsterInsights
679
  if ( version_compare( $wp_version, '3.8', '<' ) ) {
680
- if ( is_plugin_active( MonsterInsights_Lite()->basename ) ) {
681
  return;
682
  }
683
  }
684
 
685
  // Don't run if MI Pro is installed
686
  if ( class_exists( 'MonsterInsights' ) ) {
687
- if ( is_plugin_active( MonsterInsights_Lite()->basename ) ) {
688
  return;
689
  }
690
  }
6
  * Author: MonsterInsights
7
  * Author URI: https://www.monsterinsights.com/
8
  *
9
+ * Version: 6.0.4
10
  * Requires at least: 3.9.0
11
  * Tested up to: 4.7.2
12
  *
69
  * @access public
70
  * @var string $version Plugin version.
71
  */
72
+ public $version = '6.0.4';
73
 
74
  /**
75
  * Plugin file.
157
  }
158
 
159
  // Detect Pro version and return early
160
+ if ( class_exists( 'MonsterInsights' ) && defined( 'GAWP_VERSION' ) ) {
161
  add_action( 'admin_notices', array( self::$instance, 'monsterinsights_pro_notice' ) );
162
  return;
163
  }
367
  }
368
  ?>
369
  <div class="error">
370
+ <p><?php echo sprintf( esc_html__( 'Sorry, but your version of WordPress does not meet MonsterInsights\'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.', 'google-analytics-for-wordpress' ), '<strong>', '</strong>', '<a href="' . $url . '">', '</a>' ); ?></p>
371
  </div>
372
  <?php
373
  }
388
  }
389
  ?>
390
  <div class="error">
391
+ <p><?php echo sprintf( esc_html__( 'Please %1$uninstall%2$s the MonsterInsights Lite Plugin. Your Pro version of MonsterInsights may not work as expected until the Lite version is uninstalled.', 'google-analytics-for-wordpress' ), '<a href="' . $url . '">', '</a>' ); ?></p>
392
  </div>
393
  <?php
394
 
528
 
529
  if ( version_compare( $wp_version, '3.8', '<' ) && ( ! defined( 'MONSTERINSIGHTS_FORCE_ACTIVATION' ) || ! MONSTERINSIGHTS_FORCE_ACTIVATION ) ) {
530
  deactivate_plugins( plugin_basename( __FILE__ ) );
531
+ wp_die( sprintf( esc_html__( '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.', 'google-analytics-by-wordpress' ), '<strong>', '</strong>', '<a href="' . $url . '">', '</a>' ) );
532
  }
533
 
534
  if ( class_exists( 'MonsterInsights' ) ) {
535
  deactivate_plugins( plugin_basename( __FILE__ ) );
536
+ wp_die( sprintf( esc_html__( 'Please uninstall and remove MonsterInsights Pro before activating MonsterInsights Lite. The Lite version has not been activated. %1$sClick here to return to the Dashboard%2$s.', 'google-analytics-by-wordpress' ), '<a href="' . $url . '">', '</a>' ) );
537
  }
538
  }
539
  register_activation_hook( __FILE__, 'monsterinsights_lite_activation_hook' );
547
  * @return void
548
  */
549
  function monsterinsights_lite_deactivation_hook( $network_wide ) {
550
+ // Note, if both MI Pro and Lite are active, this is an MI Pro instance
551
+ // Therefore MI Lite can only use functions of the instance common to
552
+ // both plugins. If it needs to be pro specific, then include a file that
553
+ // has that method.
554
+ $instance = MonsterInsights();
555
+
556
  if ( is_multisite() && $network_wide ) {
557
  $site_list = get_sites();
558
  $options = array(
572
  );
573
  monsterinsights_delete_options( $options );
574
  }
 
575
  }
576
  register_deactivation_hook( __FILE__, 'monsterinsights_lite_deactivation_hook' );
577
 
585
  */
586
  function monsterinsights_lite_uninstall_hook( $network_wide ) {
587
 
588
+ $instance = MonsterInsights();
589
+ // Note, if both MI Pro and Lite are active, this is an MI Pro instance
590
+ // Therefore MI Lite can only use functions of the instance common to
591
+ // both plugins. If it needs to be pro specific, then include a file that
592
+ // has that method.
593
  if ( is_multisite() && $network_wide ) {
594
  delete_site_option( 'monsterinsights_license' );
595
  delete_site_option( 'monsterinsights_license_updates' );
636
  delete_option( 'monsterinsights_lite_refresh_token' );
637
 
638
  // Destroy the data
639
+ if ( isset( $instance->reports ) && method_exists( $instance->reports,'delete_aggregate_data' ) ) {
640
+ $instance->reports->delete_aggregate_data();
641
+ }
642
  }
643
 
644
  }
684
 
685
  // If the WordPress site doesn't meet the correct WP version requirements, don't activate MonsterInsights
686
  if ( version_compare( $wp_version, '3.8', '<' ) ) {
687
+ if ( is_plugin_active( plugin_basename( __FILE__ ) ) ) {
688
  return;
689
  }
690
  }
691
 
692
  // Don't run if MI Pro is installed
693
  if ( class_exists( 'MonsterInsights' ) ) {
694
+ if ( is_plugin_active( plugin_basename( __FILE__ ) ) ) {
695
  return;
696
  }
697
  }
includes/admin/admin.php CHANGED
@@ -242,13 +242,13 @@ function monsterinsights_welcome_redirect() {
242
 
243
  $upgrade = get_option( 'monsterinsights_version_upgraded_from' );
244
  if( ! $upgrade ) { // First time install
245
- wp_safe_redirect( admin_url( 'admin.php?page=monsterinsights_settings#monsterinsights-main-tab-general' ) ); exit;
246
  } else { // Update
247
  return;
248
  //wp_safe_redirect( admin_url( 'admin.php?page=monsterinsights_settings#monsterinsights-main-tab-general' ) ); exit;
249
  }
250
  }
251
- add_action( 'admin_init', 'monsterinsights_welcome_redirect', 11 );
252
 
253
  /**
254
  * When user is on a WPForms related admin page, display footer text
242
 
243
  $upgrade = get_option( 'monsterinsights_version_upgraded_from' );
244
  if( ! $upgrade ) { // First time install
245
+ //wp_safe_redirect( admin_url( 'admin.php?page=monsterinsights_settings#monsterinsights-main-tab-general' ) ); exit;
246
  } else { // Update
247
  return;
248
  //wp_safe_redirect( admin_url( 'admin.php?page=monsterinsights_settings#monsterinsights-main-tab-general' ) ); exit;
249
  }
250
  }
251
+ //add_action( 'admin_init', 'monsterinsights_welcome_redirect', 11 ); @todo: Investigate
252
 
253
  /**
254
  * When user is on a WPForms related admin page, display footer text
includes/admin/common.php CHANGED
@@ -167,6 +167,42 @@ function monsterinsights_admin_scripts() {
167
  }
168
  add_action( 'admin_enqueue_scripts', 'monsterinsights_admin_scripts' );
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  /**
171
  * Remove non-MI notices from MI page.
172
  *
167
  }
168
  add_action( 'admin_enqueue_scripts', 'monsterinsights_admin_scripts' );
169
 
170
+ /**
171
+ * Remove Assets that conflict with ours from our screens.
172
+ *
173
+ * @since 6.0.4
174
+ * @access public
175
+ *
176
+ * @return null Return early if not on the proper screen.
177
+ */
178
+ function monsterinsights_remove_conflicting_asset_files() {
179
+
180
+ // Get current screen.
181
+ $screen = get_current_screen();
182
+
183
+ // Bail if we're not on a MonsterInsights screen.
184
+ if ( empty( $screen->id ) || strpos( $screen->id, 'monsterinsights' ) === false ) {
185
+ return;
186
+ }
187
+
188
+ $styles = array(
189
+ 'kt_admin_css', // Pinnacle theme
190
+ );
191
+
192
+ $scripts = array(
193
+ 'kad_admin_js', // Pinnacle theme
194
+ );
195
+
196
+ foreach ( $styles as $style ) {
197
+ wp_dequeue_style( $style ); // Remove CSS file from MI screen
198
+ }
199
+
200
+ foreach ( $scripts as $script ) {
201
+ wp_dequeue_script( $script ); // Remove JS file from MI screen
202
+ }
203
+ }
204
+ add_action( 'admin_enqueue_scripts', 'monsterinsights_remove_conflicting_asset_files', 9999 );
205
+
206
  /**
207
  * Remove non-MI notices from MI page.
208
  *
includes/admin/reporting.php CHANGED
@@ -69,7 +69,7 @@ final class MonsterInsights_Reporting {
69
  $this->dashboard_disabled = monsterinsights_get_option( 'dashboards_disabled', false );
70
  $this->dashboard_report = monsterinsights_get_option( 'dashboard_report', 'overview' );
71
 
72
- if ( $this->client->status === 'valid' ) {
73
  // Cron actions
74
  // Add cron if its not there
75
  add_action( 'wp', array( $this, 'schedule_cron' ) );
@@ -173,7 +173,9 @@ final class MonsterInsights_Reporting {
173
  * not be used by other developers. This hook's behavior may be modified
174
  * or the hook may be removed at any time, without warning.
175
  */
176
- do_action( 'monsterinsights_delete_aggregate_data', $this->client, $this->client->profile );
 
 
177
  $options = array(
178
  'cron_failed',
179
  'cron_last_run',
69
  $this->dashboard_disabled = monsterinsights_get_option( 'dashboards_disabled', false );
70
  $this->dashboard_report = monsterinsights_get_option( 'dashboard_report', 'overview' );
71
 
72
+ if ( isset( $this->client->status ) && $this->client->status === 'valid' ) {
73
  // Cron actions
74
  // Add cron if its not there
75
  add_action( 'wp', array( $this, 'schedule_cron' ) );
173
  * not be used by other developers. This hook's behavior may be modified
174
  * or the hook may be removed at any time, without warning.
175
  */
176
+ if ( ! empty( $this->client ) && ! empty( $this->client->profile ) ) {
177
+ do_action( 'monsterinsights_delete_aggregate_data', $this->client, $this->client->profile );
178
+ }
179
  $options = array(
180
  'cron_failed',
181
  'cron_last_run',
includes/frontend/frontend.php CHANGED
@@ -113,7 +113,7 @@ function monsterinsights_disabled_user_group( ) {
113
  $user = wp_get_current_user();
114
  $disabled = false;
115
 
116
- $roles = monsterinsights_get_option( 'ignore_roles', array() );
117
 
118
  if ( ! empty( $roles ) && is_array( $roles ) ) {
119
  foreach ( $roles as $role ) {
113
  $user = wp_get_current_user();
114
  $disabled = false;
115
 
116
+ $roles = monsterinsights_get_option( 'ignore_users', array() );
117
 
118
  if ( ! empty( $roles ) && is_array( $roles ) ) {
119
  foreach ( $roles as $role ) {
includes/install.php CHANGED
@@ -105,7 +105,7 @@ class MonsterInsights_Install {
105
  update_option( monsterinsights_get_option_name(), $this->new_settings );
106
 
107
  // This is where we redirect to the MI welcome page
108
- set_transient( '_monsterinsights_activation_redirect', true, 30 );
109
 
110
  // There's no code for this function below this. Just an explanation
111
  // of the MI core options.
105
  update_option( monsterinsights_get_option_name(), $this->new_settings );
106
 
107
  // This is where we redirect to the MI welcome page
108
+ //set_transient( '_monsterinsights_activation_redirect', true, 30 ); @todo: Investigate
109
 
110
  // There's no code for this function below this. Just an explanation
111
  // of the MI core options.
includes/options.php CHANGED
@@ -224,7 +224,7 @@ function monsterinsights_delete_option( $key = '' ) {
224
  */
225
  function monsterinsights_delete_options( $keys = array() ) {
226
  // If no keys, exit
227
- if ( empty( $keys ) ){
228
  return false;
229
  }
230
 
224
  */
225
  function monsterinsights_delete_options( $keys = array() ) {
226
  // If no keys, exit
227
+ if ( empty( $keys ) || ! is_array( $keys ) ){
228
  return false;
229
  }
230
 
languages/google-analytics-for-wordpress.pot CHANGED
@@ -5,14 +5,14 @@ msgstr ""
5
  "Project-Id-Version: MonsterInsights Lite\n"
6
  "Report-Msgid-Bugs-To: https://github.com/awesomemotive/monsterinsights/"
7
  "issues\n"
8
- "POT-Creation-Date: 2017-02-18 21:16-0500\n"
9
  "PO-Revision-Date: 2016-07-21 17:01-0400\n"
10
  "Last-Translator: Chris Christoff <support@monsterinsights.com>\n"
11
  "Language-Team: Chris Christoff <support@monsterinsights.com>\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Poedit 1.8.11\n"
16
  "X-Poedit-Basepath: ..\n"
17
  "X-Poedit-WPHeader: googleanalytics.php\n"
18
  "X-Poedit-SourceCharset: UTF-8\n"
@@ -57,9 +57,9 @@ msgstr ""
57
  #: googleanalytics.php:391
58
  #, php-format
59
  msgid ""
60
- "Please %1$sdeactivate%2$s the MonsterInsights Pro Plugin. Your lite version "
61
- "of MonsterInsights may not work as expected until the Pro version is "
62
- "deactivated."
63
  msgstr ""
64
 
65
  #: googleanalytics.php:531
@@ -73,9 +73,9 @@ msgstr ""
73
  #: googleanalytics.php:536
74
  #, php-format
75
  msgid ""
76
- "Please deactivate MonsterInsights Pro before activating MonsterInsights "
77
- "Lite. The Lite version has not been activated. %2$sClick here to return to "
78
- "the Dashboard%2$s."
79
  msgstr ""
80
 
81
  #: includes/admin/admin.php:36 includes/admin/admin.php:39
@@ -2334,7 +2334,7 @@ msgstr ""
2334
  #. Description of the plugin/theme
2335
  msgid ""
2336
  "The best Google Analytics plugin for WordPress. See how visitors find and "
2337
- "use your website, so you can keep them coming back. Get stats that matter."
2338
  msgstr ""
2339
 
2340
  #. Author URI of the plugin/theme
5
  "Project-Id-Version: MonsterInsights Lite\n"
6
  "Report-Msgid-Bugs-To: https://github.com/awesomemotive/monsterinsights/"
7
  "issues\n"
8
+ "POT-Creation-Date: 2017-02-20 13:23-0500\n"
9
  "PO-Revision-Date: 2016-07-21 17:01-0400\n"
10
  "Last-Translator: Chris Christoff <support@monsterinsights.com>\n"
11
  "Language-Team: Chris Christoff <support@monsterinsights.com>\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Poedit 1.8.12\n"
16
  "X-Poedit-Basepath: ..\n"
17
  "X-Poedit-WPHeader: googleanalytics.php\n"
18
  "X-Poedit-SourceCharset: UTF-8\n"
57
  #: googleanalytics.php:391
58
  #, php-format
59
  msgid ""
60
+ "Please %1$uninstall%2$s the MonsterInsights Lite Plugin. Your Pro version of "
61
+ "MonsterInsights may not work as expected until the Lite version is "
62
+ "uninstalled."
63
  msgstr ""
64
 
65
  #: googleanalytics.php:531
73
  #: googleanalytics.php:536
74
  #, php-format
75
  msgid ""
76
+ "Please uninstall and remove MonsterInsights Pro before activating "
77
+ "MonsterInsights Lite. The Lite version has not been activated. %1$sClick "
78
+ "here to return to the Dashboard%2$s."
79
  msgstr ""
80
 
81
  #: includes/admin/admin.php:36 includes/admin/admin.php:39
2334
  #. Description of the plugin/theme
2335
  msgid ""
2336
  "The best Google Analytics plugin for WordPress. See how visitors find and "
2337
+ "use your website, so you can keep them coming back."
2338
  msgstr ""
2339
 
2340
  #. Author URI of the plugin/theme
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.9
6
  Tested up to: 4.7.2
7
- Stable tag: 6.0.3
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.
@@ -137,6 +137,17 @@ You can also learn about other <a href="http://www.wpbeginner.com/category/plugi
137
 
138
  == Changelog ==
139
 
 
 
 
 
 
 
 
 
 
 
 
140
  = 6.0.3, February 20, 2017 =
141
  * Fixed: Path for fontawesome font files was incorrect
142
  * Fixed: Notice in the install routine for the $version variable not being set.
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.9
6
  Tested up to: 4.7.2
7
+ Stable tag: 6.0.4
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.
137
 
138
  == Changelog ==
139
 
140
+ = 6.0.4, February 20, 2017 =
141
+ * Tweak: monsterinsights_delete_options now checks to ensure an array is passed in
142
+ * Tweak: The reporting class now has many more object property checks.
143
+ * Fixed: In install if WP version not supported or if MI Pro was active, the plugin attempted to call a property of the plugin object which didn't exist.
144
+ * Fixed: In the deactivate/uninstall routines, MI attempted to use a method of a class object which might not exist, as it might not be the active instance. Better instance handling has been added as well as many more exists checks have been added througought the plugin.
145
+ * Fixed: Conflicting loads when both MI Pro and Lite are installed. Note, you should only have Pro installed if you want to use it. That being said, we've done extensive testing to ensure we've handled all of the edge cases surrounding this. This could also lead to issues where it would be impossible to remove Lite and/or Pro from a site if both were installed.
146
+ * Fixed: Conflicts with the Pinnacle theme, which loads it's CSS file (with overrides to literally all select2 inputs not just the ones it adds) across the entire admin. This lead to an issue where in the Google Auth, a user might not have been able to see (or could appear with wacky styling) the dropdown of profiles to select. If you cannot see this dropdown after authenticating, let us know as its most likely a simple plugin or theme conflict on CSS styling.
147
+ * Fixed: The notices to deactivate/uninstall MI Lite/Pro when the other one were installed had an errant extra quotation mark, and they're now more specific about the action to take.
148
+ * Fixed: For some users, the setting for user role exclusion was not working. This has been corrected.
149
+ * Fixed: A redirect issue that was looping for some users. The code that does this, while working for most, doesn't for some. We've removed it until a full investigation can be completed.
150
+
151
  = 6.0.3, February 20, 2017 =
152
  * Fixed: Path for fontawesome font files was incorrect
153
  * Fixed: Notice in the install routine for the $version variable not being set.