Google Analytics for WordPress by MonsterInsights - Version 5.0.3

Version Description

Download this release

Release Info

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

Code changes from version 5.0.2 to 5.0.3

admin/class-admin.php CHANGED
@@ -2,9 +2,6 @@
2
  /**
3
  * This class is for the backend, extendable for all child classes
4
  */
5
- if ( ! function_exists( 'wp_verify_nonce' ) ) {
6
- require_once( ABSPATH . 'wp-includes/pluggable.php' );
7
- }
8
 
9
  require_once plugin_dir_path( __FILE__ ) . '/wp-gdata/wp-gdata.php';
10
 
@@ -49,7 +46,16 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
49
  }
50
 
51
  if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
 
 
 
 
 
52
  if ( isset( $_POST['ga-form-settings'] ) && wp_verify_nonce( $_POST['yoast_ga_nonce'], 'save_settings' ) ) {
 
 
 
 
53
  // Post submitted and verified with our nonce
54
  $this->save_settings( $_POST );
55
 
@@ -69,7 +75,7 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
69
  * Throw a warning if no UA code is set.
70
  */
71
  public function config_warning() {
72
- echo '<div class="error"><p>' . sprintf( __( 'Please configure your %s$1Google Analytics settings%s$2!', 'google-analytics-for-wordpress' ), '<a href="' . admin_url( 'admin.php?page=yst_ga_settings' ) . '">', '</a>' ) . '</p></div>';
73
  }
74
 
75
  /**
@@ -428,18 +434,16 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
428
  // Eqneue the chosen js file
429
  wp_enqueue_script( 'chosen_js', plugins_url( 'js/chosen.jquery.min.js', GAWP_FILE ), array(), false, true );
430
 
431
- $option_name = 'Yoast_Google_Analytics';
432
  $options = get_option( $option_name );
433
  $return = array();
434
 
435
  if ( ! empty ( $options['ga_token'] ) ) {
436
- $token = $options['ga_token'];
437
-
438
  $args = array(
439
  'scope' => 'https://www.googleapis.com/auth/analytics.readonly',
440
  'xoauth_displayname' => 'Google Analytics for WordPress by Yoast',
441
  );
442
- $access_token = $options['gawp_oauth']['access_token'];
443
  $gdata = new WP_Gdata( $args, $access_token['oauth_token'], $access_token['oauth_token_secret'] );
444
 
445
  $response = $gdata->get( 'https://www.googleapis.com/analytics/v2.4/management/accounts/~all/webproperties/~all/profiles' );
@@ -447,50 +451,30 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
447
  $response = wp_remote_retrieve_body( $response );
448
 
449
  if ( $http_code == 200 ) {
450
- $options['ga_api_responses'][ $token ] = array(
451
  'response' => array( 'code' => $http_code ),
452
  'body' => $response
453
  );
454
- $options['ga_token'] = $token;
455
- update_option( 'Yoast_Google_Analytics', $options );
 
456
  }
457
 
458
- $xml_reader = new SimpleXMLElement( $options['ga_api_responses'][ $token ]['body'] );
459
-
460
- if ( ! empty( $xml_reader->entry ) ) {
461
 
462
- $ga_accounts = array();
463
 
464
- // Check whether the feed output is the new one, first set, or the old one, second set.
465
- if ( $xml_reader->link['href'] == 'https://www.googleapis.com/analytics/v2.4/management/accounts/~all/webproperties/~all/profiles' ) {
466
- foreach ( $xml_reader->entry AS $entry ) {
467
- $ns = $entry->getNamespaces( true );
468
- $properties = $entry->children( $ns['dxp'] )->property;
469
 
470
- if ( isset ( $properties[1]->attributes()->value ) ) {
471
- $ua = (string) trim( $properties[1]->attributes()->value );
472
- }
473
-
474
- if ( isset ( $properties[2]->attributes()->value ) ) {
475
- $title = (string) trim( $properties[2]->attributes()->value );
476
- }
477
-
478
- if ( ! empty( $ua ) && ! empty( $title ) ) {
479
- $ga_accounts[] = array(
480
- 'ua' => $ua,
481
- 'title' => $title,
482
- );
483
- }
484
-
485
- }
486
- } else {
487
- if ( $xml_reader->link['href'] == 'https://www.google.com/analytics/feeds/accounts/default' ) {
488
  foreach ( $xml_reader->entry AS $entry ) {
489
  $ns = $entry->getNamespaces( true );
490
  $properties = $entry->children( $ns['dxp'] )->property;
491
 
492
- if ( isset ( $properties[3]->attributes()->value ) ) {
493
- $ua = (string) trim( $properties[3]->attributes()->value );
494
  }
495
 
496
  if ( isset ( $properties[2]->attributes()->value ) ) {
@@ -505,19 +489,44 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
505
  }
506
 
507
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
508
  }
509
- }
510
 
511
- if ( is_array( $ga_accounts ) ) {
512
- usort( $ga_accounts, array( $this, 'sort_profiles' ) );
513
- }
514
 
515
- foreach ( $ga_accounts as $key => $ga_account ) {
516
- $return[] = array(
517
- 'id' => $ga_account['ua'],
518
- 'name' => $ga_account['title'] . ' (' . $ga_account['ua'] . ')',
519
- );
 
520
  }
 
 
521
  }
522
  }
523
 
@@ -542,24 +551,24 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
542
  */
543
  private function connect_with_google_analytics() {
544
 
545
- $option_name = 'Yoast_Google_Analytics';
546
 
547
  if ( isset( $_REQUEST['ga_oauth_callback'] ) ) {
548
  $o = get_option( $option_name );
549
- if ( isset( $o['gawp_oauth']['oauth_token'] ) && $o['gawp_oauth']['oauth_token'] == $_REQUEST['oauth_token'] ) {
550
  $gdata = new WP_GData(
551
  array(
552
  'scope' => 'https://www.google.com/analytics/feeds/',
553
  'xoauth_displayname' => 'Google Analytics by Yoast'
554
  ),
555
- $o['gawp_oauth']['oauth_token'],
556
- $o['gawp_oauth']['oauth_token_secret']
557
  );
558
 
559
- $o['gawp_oauth']['access_token'] = $gdata->get_access_token( $_REQUEST['oauth_verifier'] );
560
- unset( $o['gawp_oauth']['oauth_token'] );
561
- unset( $o['gawp_oauth']['oauth_token_secret'] );
562
- $o['ga_token'] = $o['gawp_oauth']['access_token']['oauth_token'];
563
  }
564
 
565
  update_option( $option_name, $o );
@@ -580,10 +589,16 @@ if ( ! class_exists( 'Yoast_GA_Admin' ) ) {
580
  $request_token = $gdata->get_request_token( $oauth_callback );
581
 
582
  $options = get_option( $option_name );
583
- unset( $options['ga_token'] );
584
- unset( $options['gawp_oauth']['access_token'] );
585
- $options['gawp_oauth']['oauth_token'] = $request_token['oauth_token'];
586
- $options['gawp_oauth']['oauth_token_secret'] = $request_token['oauth_token_secret'];
 
 
 
 
 
 
587
  update_option( $option_name, $options );
588
 
589
  wp_redirect( $gdata->get_authorize_url( $request_token ) );
2
  /**
3
  * This class is for the backend, extendable for all child classes
4
  */
 
 
 
5
 
6
  require_once plugin_dir_path( __FILE__ ) . '/wp-gdata/wp-gdata.php';
7
 
46
  }
47
 
48
  if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
49
+
50
+ if ( ! function_exists( 'wp_verify_nonce' ) ) {
51
+ require_once( ABSPATH . 'wp-includes/pluggable.php' );
52
+ }
53
+
54
  if ( isset( $_POST['ga-form-settings'] ) && wp_verify_nonce( $_POST['yoast_ga_nonce'], 'save_settings' ) ) {
55
+ if ( ! isset ( $_POST['ignore_users'] ) ) {
56
+ $_POST['ignore_users'] = array();
57
+ }
58
+
59
  // Post submitted and verified with our nonce
60
  $this->save_settings( $_POST );
61
 
75
  * Throw a warning if no UA code is set.
76
  */
77
  public function config_warning() {
78
+ echo '<div class="error"><p>' . sprintf( __( 'Please configure your %sGoogle Analytics settings%s!', 'google-analytics-for-wordpress' ), '<a href="' . admin_url( 'admin.php?page=yst_ga_settings' ) . '">', '</a>' ) . '</p></div>';
79
  }
80
 
81
  /**
434
  // Eqneue the chosen js file
435
  wp_enqueue_script( 'chosen_js', plugins_url( 'js/chosen.jquery.min.js', GAWP_FILE ), array(), false, true );
436
 
437
+ $option_name = 'yst_ga_api';
438
  $options = get_option( $option_name );
439
  $return = array();
440
 
441
  if ( ! empty ( $options['ga_token'] ) ) {
 
 
442
  $args = array(
443
  'scope' => 'https://www.googleapis.com/auth/analytics.readonly',
444
  'xoauth_displayname' => 'Google Analytics for WordPress by Yoast',
445
  );
446
+ $access_token = $options['ga_oauth']['access_token'];
447
  $gdata = new WP_Gdata( $args, $access_token['oauth_token'], $access_token['oauth_token_secret'] );
448
 
449
  $response = $gdata->get( 'https://www.googleapis.com/analytics/v2.4/management/accounts/~all/webproperties/~all/profiles' );
451
  $response = wp_remote_retrieve_body( $response );
452
 
453
  if ( $http_code == 200 ) {
454
+ $options['ga_api_response'] = array(
455
  'response' => array( 'code' => $http_code ),
456
  'body' => $response
457
  );
458
+ update_option( $option_name, $options );
459
+ } else {
460
+ return $return;
461
  }
462
 
463
+ try {
464
+ $xml_reader = new SimpleXMLElement( $options['ga_api_response']['body'] );
 
465
 
466
+ if ( ! empty( $xml_reader->entry ) ) {
467
 
468
+ $ga_accounts = array();
 
 
 
 
469
 
470
+ // Check whether the feed output is the new one, first set, or the old one, second set.
471
+ if ( $xml_reader->link['href'] == 'https://www.googleapis.com/analytics/v2.4/management/accounts/~all/webproperties/~all/profiles' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  foreach ( $xml_reader->entry AS $entry ) {
473
  $ns = $entry->getNamespaces( true );
474
  $properties = $entry->children( $ns['dxp'] )->property;
475
 
476
+ if ( isset ( $properties[1]->attributes()->value ) ) {
477
+ $ua = (string) trim( $properties[1]->attributes()->value );
478
  }
479
 
480
  if ( isset ( $properties[2]->attributes()->value ) ) {
489
  }
490
 
491
  }
492
+ } else {
493
+ if ( $xml_reader->link['href'] == 'https://www.google.com/analytics/feeds/accounts/default' ) {
494
+ foreach ( $xml_reader->entry AS $entry ) {
495
+ $ns = $entry->getNamespaces( true );
496
+ $properties = $entry->children( $ns['dxp'] )->property;
497
+
498
+ if ( isset ( $properties[3]->attributes()->value ) ) {
499
+ $ua = (string) trim( $properties[3]->attributes()->value );
500
+ }
501
+
502
+ if ( isset ( $properties[2]->attributes()->value ) ) {
503
+ $title = (string) trim( $properties[2]->attributes()->value );
504
+ }
505
+
506
+ if ( ! empty( $ua ) && ! empty( $title ) ) {
507
+ $ga_accounts[] = array(
508
+ 'ua' => $ua,
509
+ 'title' => $title,
510
+ );
511
+ }
512
+
513
+ }
514
+ }
515
  }
 
516
 
517
+ if ( is_array( $ga_accounts ) ) {
518
+ usort( $ga_accounts, array( $this, 'sort_profiles' ) );
519
+ }
520
 
521
+ foreach ( $ga_accounts as $key => $ga_account ) {
522
+ $return[] = array(
523
+ 'id' => $ga_account['ua'],
524
+ 'name' => $ga_account['title'] . ' (' . $ga_account['ua'] . ')',
525
+ );
526
+ }
527
  }
528
+ } catch ( Exception $e ) {
529
+
530
  }
531
  }
532
 
551
  */
552
  private function connect_with_google_analytics() {
553
 
554
+ $option_name = 'yst_ga_api';
555
 
556
  if ( isset( $_REQUEST['ga_oauth_callback'] ) ) {
557
  $o = get_option( $option_name );
558
+ if ( isset( $o['ga_oauth']['oauth_token'] ) && $o['ga_oauth']['oauth_token'] == $_REQUEST['oauth_token'] ) {
559
  $gdata = new WP_GData(
560
  array(
561
  'scope' => 'https://www.google.com/analytics/feeds/',
562
  'xoauth_displayname' => 'Google Analytics by Yoast'
563
  ),
564
+ $o['ga_oauth']['oauth_token'],
565
+ $o['ga_oauth']['oauth_token_secret']
566
  );
567
 
568
+ $o['ga_oauth']['access_token'] = $gdata->get_access_token( $_REQUEST['oauth_verifier'] );
569
+ unset( $o['ga_oauth']['oauth_token'] );
570
+ unset( $o['ga_oauth']['oauth_token_secret'] );
571
+ $o['ga_token'] = $o['ga_oauth']['access_token']['oauth_token'];
572
  }
573
 
574
  update_option( $option_name, $o );
589
  $request_token = $gdata->get_request_token( $oauth_callback );
590
 
591
  $options = get_option( $option_name );
592
+
593
+ if ( is_array( $options ) ) {
594
+ unset( $options['ga_token'] );
595
+ if ( is_array( $options['ga_oauth'] ) ) {
596
+ unset( $options['ga_oauth']['access_token'] );
597
+ }
598
+ }
599
+
600
+ $options['ga_oauth']['oauth_token'] = $request_token['oauth_token'];
601
+ $options['ga_oauth']['oauth_token_secret'] = $request_token['oauth_token_secret'];
602
  update_option( $option_name, $options );
603
 
604
  wp_redirect( $gdata->get_authorize_url( $request_token ) );
frontend/class-ga-js.php CHANGED
@@ -51,13 +51,10 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
51
  $options['allowanchor'] = false;
52
  }
53
 
54
- $ua_code = '';
55
- if ( ! empty( $options['analytics_profile'] ) ) {
56
- $ua_code = $options['analytics_profile'];
57
- }
58
-
59
- if ( ! empty( $options['manual_ua_code_field'] ) && ! empty( $options['manual_ua_code'] ) ) {
60
- $ua_code = $options['manual_ua_code_field'];
61
  }
62
 
63
  $gaq_push[] = "'_setAccount', '" . $ua_code . "'";
51
  $options['allowanchor'] = false;
52
  }
53
 
54
+ global $Yoast_GA_Options;
55
+ $ua_code = $Yoast_GA_Options->get_tracking_code();
56
+ if ( is_null( $ua_code ) ) {
57
+ return;
 
 
 
58
  }
59
 
60
  $gaq_push[] = "'_setAccount', '" . $ua_code . "'";
frontend/class-universal.php CHANGED
@@ -51,14 +51,12 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
51
  $options['allowanchor'] = false;
52
  }
53
 
54
- $ua_code = '';
55
- if ( ! empty( $options['analytics_profile'] ) ) {
56
- $ua_code = $options['analytics_profile'];
 
57
  }
58
 
59
- if ( ! empty( $options['manual_ua_code_field'] ) && ! empty( $options['manual_ua_code'] ) ) {
60
- $ua_code = $options['manual_ua_code_field'];
61
- }
62
 
63
  // Set tracking code here
64
  if ( ! empty( $ua_code ) ) {
51
  $options['allowanchor'] = false;
52
  }
53
 
54
+ global $Yoast_GA_Options;
55
+ $ua_code = $Yoast_GA_Options->get_tracking_code();
56
+ if ( is_null( $ua_code ) ) {
57
+ return;
58
  }
59
 
 
 
 
60
 
61
  // Set tracking code here
62
  if ( ! empty( $ua_code ) ) {
includes/class-options.php CHANGED
@@ -56,18 +56,23 @@ if ( ! class_exists( 'Yoast_GA_Options' ) ) {
56
  if ( ! isset( $this->options['ga_general']['version'] ) && is_null( $this->get_tracking_code() ) ) {
57
  $old_options = get_option( 'Yoast_Google_Analytics' );
58
 
59
- // Save UA as manual UA, instead of saving all the old GA crap
60
- $this->options['ga_general']['manual_ua_code'] = 1;
61
- $this->options['ga_general']['manual_ua_code_field'] = $old_options['uastring'];
62
-
63
- // Other settings
64
- $this->options['ga_general']['allow_anchor'] = $old_options['allowanchor'];
65
- $this->options['ga_general']['add_allow_linker'] = $old_options['allowlinker'];
66
- $this->options['ga_general']['anonymous_data'] = $old_options['anonymizeip'];
67
- $this->options['ga_general']['track_outbound'] = $old_options['trackoutbound'];
68
- $this->options['ga_general']['track_internal_as_outbound'] = $old_options['internallink'];
69
- $this->options['ga_general']['track_internal_as_label'] = $old_options['internallinklabel'];
70
- $this->options['ga_general']['extensions_of_files'] = $old_options['dlextensions'];
 
 
 
 
 
71
 
72
  delete_option( 'Yoast_Google_Analytics' );
73
  }
@@ -79,6 +84,12 @@ if ( ! class_exists( 'Yoast_GA_Options' ) ) {
79
  }
80
  }
81
 
 
 
 
 
 
 
82
  // Set to the current version now that we've done all needed upgrades
83
  $this->options['ga_general']['version'] = GAWP_VERSION;
84
 
56
  if ( ! isset( $this->options['ga_general']['version'] ) && is_null( $this->get_tracking_code() ) ) {
57
  $old_options = get_option( 'Yoast_Google_Analytics' );
58
 
59
+ if ( isset( $old_options ) && is_array( $old_options ) ) {
60
+ if ( isset( $old_options['uastring'] ) && '' !== trim( $old_options['uastring'] ) ) {
61
+ // Save UA as manual UA, instead of saving all the old GA crap
62
+ $this->options['ga_general']['manual_ua_code'] = 1;
63
+ $this->options['ga_general']['manual_ua_code_field'] = $old_options['uastring'];
64
+ }
65
+
66
+ // Other settings
67
+ $this->options['ga_general']['allow_anchor'] = $old_options['allowanchor'];
68
+ $this->options['ga_general']['add_allow_linker'] = $old_options['allowlinker'];
69
+ $this->options['ga_general']['anonymous_data'] = $old_options['anonymizeip'];
70
+ $this->options['ga_general']['track_outbound'] = $old_options['trackoutbound'];
71
+ $this->options['ga_general']['track_internal_as_outbound'] = $old_options['internallink'];
72
+ $this->options['ga_general']['track_internal_as_label'] = $old_options['internallinklabel'];
73
+ $this->options['ga_general']['extensions_of_files'] = $old_options['dlextensions'];
74
+
75
+ }
76
 
77
  delete_option( 'Yoast_Google_Analytics' );
78
  }
84
  }
85
  }
86
 
87
+ // Check is API option already exists - if not add it
88
+ $yst_ga_api = get_option('yst_ga_api');
89
+ if($yst_ga_api === false) {
90
+ add_option( 'yst_ga_api', array(), '', 'no' );
91
+ }
92
+
93
  // Set to the current version now that we've done all needed upgrades
94
  $this->options['ga_general']['version'] = GAWP_VERSION;
95