Event Tracking for Gravity Forms - Version 2.4.14

Version Description

  • Released 2022-12-02
  • Minifying UTM script for performance.
  • Only load UTM script when UTM variables are present or a form is present.
Download this release

Release Info

Developer ronalfy
Plugin Icon 128x128 Event Tracking for Gravity Forms
Version 2.4.14
Comparing to
See all releases

Code changes from version 2.4.12 to 2.4.14

README.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: ronalfy, bigwing, nmarks, kzeni
3
  Tags: gravity forms, google analytics, google tag manager, matomo, piwik, event tracking
4
  Requires at least: 5.5
5
  Tested up to: 6.1
6
- Stable tag: 2.4.12
7
  Requires PHP: 5.6
8
  Donate link: https://github.com/mediaron
9
  License: GPLv2 or later
@@ -145,6 +145,11 @@ Check out the documentation on [github](https://github.com/ronalfy/wordpress-gra
145
 
146
  == Changelog ==
147
 
 
 
 
 
 
148
  = 2.4.12 =
149
  * Released 2022-11-09
150
  * Updating Google Analytics Add-on banners.
@@ -369,5 +374,5 @@ Check out the documentation on [github](https://github.com/ronalfy/wordpress-gra
369
 
370
  == Upgrade Notice ==
371
 
372
- = 2.4.12 =
373
- Tested with WP 6.1 and Gravity Forms 2.6. Cleaning up documentation and updating links to the official Google Analytics Add-on.
3
  Tags: gravity forms, google analytics, google tag manager, matomo, piwik, event tracking
4
  Requires at least: 5.5
5
  Tested up to: 6.1
6
+ Stable tag: 2.4.14
7
  Requires PHP: 5.6
8
  Donate link: https://github.com/mediaron
9
  License: GPLv2 or later
145
 
146
  == Changelog ==
147
 
148
+ = 2.4.14 =
149
+ * Released 2022-12-02
150
+ * Minifying UTM script for performance.
151
+ * Only load UTM script when UTM variables are present or a form is present.
152
+
153
  = 2.4.12 =
154
  * Released 2022-11-09
155
  * Updating Google Analytics Add-on banners.
374
 
375
  == Upgrade Notice ==
376
 
377
+ = 2.4.14 =
378
+ Minifying GTM/UTM script and only load when UTM variables or a form is present.
gravity-forms-event-tracking.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Gravity Forms Event Tracking
4
  * Plugin URI: https://wordpress.org/plugins/gravity-forms-google-analytics-event-tracking/
5
  * Description: Add event tracking to your Gravity Forms with ease using Google Analytics, Tag Manager, or Matomo
6
- * Version: 2.4.12
7
  * Author: Ronald Huereca
8
  * Author URI: https://mediaron.com
9
  * Text Domain: gravity-forms-google-analytics-event-tracking
@@ -19,7 +19,7 @@ if ( ! defined( 'WPINC' ) ) {
19
  }
20
 
21
  define( 'GFGAET_MIN_GFORMS_VERSION', '2.2.0' );
22
- define( 'GFGAET_VERSION', '2.4.12' );
23
  define( 'GFGAET_FILE', __FILE__ );
24
 
25
  class GFGAET {
3
  * Plugin Name: Gravity Forms Event Tracking
4
  * Plugin URI: https://wordpress.org/plugins/gravity-forms-google-analytics-event-tracking/
5
  * Description: Add event tracking to your Gravity Forms with ease using Google Analytics, Tag Manager, or Matomo
6
+ * Version: 2.4.14
7
  * Author: Ronald Huereca
8
  * Author URI: https://mediaron.com
9
  * Text Domain: gravity-forms-google-analytics-event-tracking
19
  }
20
 
21
  define( 'GFGAET_MIN_GFORMS_VERSION', '2.2.0' );
22
+ define( 'GFGAET_VERSION', '2.4.14' );
23
  define( 'GFGAET_FILE', __FILE__ );
24
 
25
  class GFGAET {
includes/GFGAET_Partial_Entries.php CHANGED
@@ -201,8 +201,9 @@ class GFGAET_Partial_Entries extends GFAddOn {
201
  * Finally, map this value based on the $field_id
202
  * and $input['id'].
203
  */
 
204
  $mapping[ $field_id ] = array(
205
- 'value' => $entry[ $input['id'] ],
206
  'label' => $field['label'],
207
  'event_category' => $event_category,
208
  'event_action' => $event_action,
201
  * Finally, map this value based on the $field_id
202
  * and $input['id'].
203
  */
204
+ $value = $entry[ $input['id'] ] ?? '';
205
  $mapping[ $field_id ] = array(
206
+ 'value' => $value,
207
  'label' => $field['label'],
208
  'event_category' => $event_category,
209
  'event_action' => $event_action,
includes/GFGAET_Submission_Feeds.php CHANGED
@@ -91,14 +91,14 @@ class GFGAET_Submission_Feeds extends GFFeedAddOn {
91
  */
92
  public function add_settings_link( $links ) {
93
 
94
- $settings_url = admin_url( 'admin.php?page=gf_settings&subview=GFGAET_UA');
95
  if ( current_user_can( 'manage_options' ) ) {
96
  $options_link = sprintf( '<a href="%s">%s</a>', esc_url( $settings_url ), _x( 'Settings', 'Gravity Forms Event Tracking Settings page', 'gravity-forms-google-analytics-event-tracking' ) );
97
  $links[] = $options_link;
98
  }
99
  $docs_link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( 'https://mediaron.com/event-tracking-for-gravity-forms/?utm_source=wordpress_plugins_page&utm_medium=documentation&utm_campaign=event_tracking' ), _x( 'Documentation', 'Gravity Forms Event Tracking Documentation page', 'gravity-forms-google-analytics-event-tracking' ) );
100
 
101
- $beta_link = sprintf( '<a href="%s" target="_blank" style="color: green; font-weight: 700;">%s</a>', esc_url( 'https://www.gravityforms.com/add-ons/google-analytics/' ), _x( 'Get the Google Analytics Add-on', 'Gravity Forms Google Analytics Page', 'gravity-forms-google-analytics-event-tracking' ) );
102
  $links[] = $docs_link;
103
  $links[] = $beta_link;
104
 
@@ -407,17 +407,52 @@ gtag('config', '<?php echo esc_js( $ga_code ); ?>');
407
  $ua_options = get_option( 'gravityformsaddon_GFGAET_UA_settings', array() );
408
  if ( isset( $ua_options['gravity_forms_event_tracking_gtm_utm_vars'] ) ) {
409
  if ( 'utm_on' === $ua_options['gravity_forms_event_tracking_gtm_utm_vars'] ) {
410
- wp_enqueue_script(
411
- 'gforms_event_tracking_utm_gtm',
412
- GFGAET::get_plugin_url( '/js/utm-tag-manager.js' ),
413
- array( 'jquery', 'wp-ajax-response' ),
414
- $this->_version,
415
- true
 
416
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
417
  }
418
  }
419
  }
420
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
421
  /**
422
  * Outputs admin scripts to handle form submission in back-end.
423
  *
@@ -1116,11 +1151,11 @@ gtag('config', '<?php echo esc_js( $ga_code ); ?>');
1116
  */
1117
  public function feed_settings_fields() {
1118
  $ga_id_placeholder = $this->get_ga_id();
1119
- $ua_options = get_option( 'gravityformsaddon_GFGAET_UA_settings', array() );
1120
- $beta_notification = rgar( $ua_options, 'beta_notification');
1121
- $beta_field = array(
1122
- 'name' => 'gravityforms_ga',
1123
- 'type' => $beta_notification === 'on' || rgblank( $beta_notification ) ? 'gforms_beta_cta' : 'hidden',
1124
  );
1125
  return array(
1126
  array(
91
  */
92
  public function add_settings_link( $links ) {
93
 
94
+ $settings_url = admin_url( 'admin.php?page=gf_settings&subview=GFGAET_UA' );
95
  if ( current_user_can( 'manage_options' ) ) {
96
  $options_link = sprintf( '<a href="%s">%s</a>', esc_url( $settings_url ), _x( 'Settings', 'Gravity Forms Event Tracking Settings page', 'gravity-forms-google-analytics-event-tracking' ) );
97
  $links[] = $options_link;
98
  }
99
  $docs_link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( 'https://mediaron.com/event-tracking-for-gravity-forms/?utm_source=wordpress_plugins_page&utm_medium=documentation&utm_campaign=event_tracking' ), _x( 'Documentation', 'Gravity Forms Event Tracking Documentation page', 'gravity-forms-google-analytics-event-tracking' ) );
100
 
101
+ $beta_link = sprintf( '<a href="%s" target="_blank" style="color: green; font-weight: 700;">%s</a>', esc_url( 'https://www.gravityforms.com/add-ons/google-analytics/' ), _x( 'Get the Google Analytics Add-on', 'Gravity Forms Google Analytics Page', 'gravity-forms-google-analytics-event-tracking' ) );
102
  $links[] = $docs_link;
103
  $links[] = $beta_link;
104
 
407
  $ua_options = get_option( 'gravityformsaddon_GFGAET_UA_settings', array() );
408
  if ( isset( $ua_options['gravity_forms_event_tracking_gtm_utm_vars'] ) ) {
409
  if ( 'utm_on' === $ua_options['gravity_forms_event_tracking_gtm_utm_vars'] ) {
410
+ $utm_vars = array(
411
+ 'utm_id',
412
+ 'utm_source',
413
+ 'utm_medium',
414
+ 'utm_campaign',
415
+ 'utm_term',
416
+ 'utm_content',
417
  );
418
+ $can_load_utm_script = false;
419
+ foreach ( $utm_vars as $utm_var ) {
420
+ if ( isset( $_GET[ $utm_var ] ) ) { // phpcs:ignore
421
+ $can_load_utm_script = true;
422
+ break;
423
+ }
424
+ }
425
+ if ( $can_load_utm_script || $this->has_form() ) {
426
+ $script_location = GFGAET::get_plugin_url( '/js/utm-tag-manager.min.js' );
427
+ if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
428
+ $script_location = GFGAET::get_plugin_url( '/js/utm-tag-manager.js' );
429
+ }
430
+ wp_enqueue_script(
431
+ 'gforms_event_tracking_utm_gtm',
432
+ $script_location,
433
+ array( 'jquery', 'wp-ajax-response' ),
434
+ $this->_version,
435
+ true
436
+ );
437
+ }
438
  }
439
  }
440
  }
441
 
442
+ /**
443
+ * Determines if a page has a form on it.
444
+ *
445
+ * @return bool Whether post/page has gravity form.
446
+ */
447
+ private function has_form() {
448
+ if ( ! class_exists( 'GFCommon' ) || ! is_singular() ) {
449
+ return;
450
+ }
451
+ require_once GFCommon::get_base_path() . '/form_display.php';
452
+ GFFormDisplay::parse_forms( get_queried_object()->post_content, $forms, $blocks );
453
+ return ! empty( $forms );
454
+ }
455
+
456
  /**
457
  * Outputs admin scripts to handle form submission in back-end.
458
  *
1151
  */
1152
  public function feed_settings_fields() {
1153
  $ga_id_placeholder = $this->get_ga_id();
1154
+ $ua_options = get_option( 'gravityformsaddon_GFGAET_UA_settings', array() );
1155
+ $beta_notification = rgar( $ua_options, 'beta_notification' );
1156
+ $beta_field = array(
1157
+ 'name' => 'gravityforms_ga',
1158
+ 'type' => $beta_notification === 'on' || rgblank( $beta_notification ) ? 'gforms_beta_cta' : 'hidden',
1159
  );
1160
  return array(
1161
  array(
js/utm-tag-manager.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ (function(GF_EventTracking_UTM_Tag_Manager,$){jQuery(document).ready(function(){var hrefObject=wpAjax.unserialize(window.location.href);if(typeof hrefObject.utm_source!=="undefined"){var utmSource=decodeURIComponent(hrefObject.utm_source);var utmMedium="",utmCampaign="",utmTerm="",utmContent="";if(typeof hrefObject.utm_medium!=="undefined")utmMedium=decodeURIComponent(hrefObject.utm_medium);if(typeof hrefObject.utm_campaign!=="undefined")utmCampaign=decodeURIComponent(hrefObject.utm_campaign);if(typeof hrefObject.utm_term!==
2
+ "undefined")utmTerm=decodeURIComponent(hrefObject.utm_term);if(typeof hrefObject.utm_content!=="undefined")utmContent=decodeURIComponent(hrefObject.utm_content);var utmObject={source:utmSource,medium:utmMedium,campaign:utmCampaign,term:utmTerm,content:utmContent};localStorage.setItem("googleAnalyticsUTM",JSON.stringify(utmObject))}})})(window.GF_EventTracking_UTM_Tag_Manager=window.GF_EventTracking_UTM_Tag_Manager||{},jQuery);