From c84ab52bdbe95edb5a04cd8ef647e465006f93bd Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Thu, 11 Sep 2025 15:57:51 -0700 Subject: [PATCH 1/6] `gw-draft-resume-change-notice.php`: Added new snippet. --- .../gw-draft-resume-change-notice.php | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 gravity-forms/gw-draft-resume-change-notice.php diff --git a/gravity-forms/gw-draft-resume-change-notice.php b/gravity-forms/gw-draft-resume-change-notice.php new file mode 100644 index 000000000..3f94b7d1d --- /dev/null +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -0,0 +1,66 @@ +get_row( + $wpdb->prepare( + "SELECT form_id, ip, submission FROM {$table} WHERE uuid = %s", + $token + ) + ); + + if ( ! $draft ) { + return $form_markup; + } + + if ( (int) $form['id'] !== (int) $draft->form_id ) { + return $form_markup; + } + + $submission_data = json_decode( $draft->submission, true ); + $submission_data = is_array( $submission_data ) ? $submission_data : array(); + + $stored_user_agent = $submission_data['partial_entry']['user_agent'] ?? ''; + $current_user_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; + + $stored_ip = $draft->ip ?? ''; + $current_ip = GFFormsModel::get_ip(); + + $ip_changed = ( $stored_ip && $current_ip && $stored_ip !== $current_ip ); + $browser_changed = ( $stored_user_agent && $current_user_agent && $stored_user_agent !== $current_user_agent ); + + if ( ! $ip_changed && ! $browser_changed ) { + return $form_markup; + } + + // Configure Messages + $ip_changed_message = "🌍 Your location has changed since last editing this draft"; + $browser_changed_message = "💻 Your browser or device has changed since last editing this draft"; + $both_changed_message = "🔒 Your location and device have both changed since last editing this draft"; + + $message = $both_changed_message; + if ( $ip_changed && ! $browser_changed ) { + $message = $ip_changed_message; + } elseif ( $browser_changed && ! $ip_changed ) { + $message = $browser_changed_message; + } + + $warning = '
'; + $warning .= '' . esc_html( $message ) . ''; + $warning .= '
'; + + return $warning . $form_markup; + +}, 10, 2 ); From 3018ec3e6336c3164e0bd240a842f85f2896ed75 Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Mon, 15 Sep 2025 09:49:06 -0700 Subject: [PATCH 2/6] `gw-draft-resume-change-notice.php`: Added new snippet that displays a notice when a user resumes draft from a new IP/UA. --- .../gw-draft-resume-change-notice.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gravity-forms/gw-draft-resume-change-notice.php b/gravity-forms/gw-draft-resume-change-notice.php index 3f94b7d1d..79a37a137 100644 --- a/gravity-forms/gw-draft-resume-change-notice.php +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -3,7 +3,7 @@ * Gravity Wiz // Gravity Forms // Draft Resume Change Notice * https://gravitywiz.com/ * - * Use this snippet to display a notice when the user resumes a draft from a different location, browser or device. + * Use this snippet to display a notice when the user resumes draft from a different location, browser or device. */ add_filter( 'gform_get_form_filter', function( $form_markup, $form ) { @@ -14,6 +14,8 @@ global $wpdb; $table = GFFormsModel::get_draft_submissions_table_name(); + + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $draft = $wpdb->get_row( $wpdb->prepare( "SELECT form_id, ip, submission FROM {$table} WHERE uuid = %s", @@ -32,11 +34,11 @@ $submission_data = json_decode( $draft->submission, true ); $submission_data = is_array( $submission_data ) ? $submission_data : array(); - $stored_user_agent = $submission_data['partial_entry']['user_agent'] ?? ''; + $stored_user_agent = $submission_data['partial_entry']['user_agent'] ?? ''; $current_user_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; - $stored_ip = $draft->ip ?? ''; - $current_ip = GFFormsModel::get_ip(); + $stored_ip = $draft->ip ?? ''; + $current_ip = GFFormsModel::get_ip(); $ip_changed = ( $stored_ip && $current_ip && $stored_ip !== $current_ip ); $browser_changed = ( $stored_user_agent && $current_user_agent && $stored_user_agent !== $current_user_agent ); @@ -45,10 +47,10 @@ return $form_markup; } - // Configure Messages - $ip_changed_message = "🌍 Your location has changed since last editing this draft"; - $browser_changed_message = "💻 Your browser or device has changed since last editing this draft"; - $both_changed_message = "🔒 Your location and device have both changed since last editing this draft"; + // Configure Messages + $ip_changed_message = '🌍 Your location has changed since last editing this draft'; + $browser_changed_message = '💻 Your browser or device has changed since last editing this draft'; + $both_changed_message = '🔒 Your location AND device have both changed since last editing this draft'; $message = $both_changed_message; if ( $ip_changed && ! $browser_changed ) { From ba8fb22a04e6fe2f0edd2172e8223cbaab8ae4f4 Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Mon, 15 Sep 2025 09:53:07 -0700 Subject: [PATCH 3/6] `gw-draft-resume-change-notice.php`: Added new snippet that displays a notice when a user resumes draft from a new IP/UA. --- gravity-forms/gw-draft-resume-change-notice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity-forms/gw-draft-resume-change-notice.php b/gravity-forms/gw-draft-resume-change-notice.php index 79a37a137..71fe84cb7 100644 --- a/gravity-forms/gw-draft-resume-change-notice.php +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -10,7 +10,7 @@ if ( empty( $_GET['gf_token'] ) ) { return $form_markup; } - $token = sanitize_text_field( wp_unslash( $_GET['gf_token'] ) ); + $token = sanitize_text_field( wp_unslash( $_GET['gf_token'] ) ); global $wpdb; $table = GFFormsModel::get_draft_submissions_table_name(); From aad73a5aa36b7703a0a58e6f353a7800c38b5381 Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:43:39 -0700 Subject: [PATCH 4/6] `gw-draft-resume-change-notice.php`: Added new snippet that displays a notice when a user resumes draft from a new IP/UA. --- gravity-forms/gw-draft-resume-change-notice.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gravity-forms/gw-draft-resume-change-notice.php b/gravity-forms/gw-draft-resume-change-notice.php index 71fe84cb7..28a6e3078 100644 --- a/gravity-forms/gw-draft-resume-change-notice.php +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -14,12 +14,15 @@ global $wpdb; $table = GFFormsModel::get_draft_submissions_table_name(); - + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $draft = $wpdb->get_row( $wpdb->prepare( - "SELECT form_id, ip, submission FROM {$table} WHERE uuid = %s", - $token + sprintf( + "SELECT form_id, ip, submission FROM `%s` WHERE uuid = %%s", + esc_sql( $table ) + ), + $uuid ) ); @@ -47,7 +50,7 @@ return $form_markup; } - // Configure Messages + // Configure Messages $ip_changed_message = '🌍 Your location has changed since last editing this draft'; $browser_changed_message = '💻 Your browser or device has changed since last editing this draft'; $both_changed_message = '🔒 Your location AND device have both changed since last editing this draft'; From 42a33c01f140eaaf99c4d7df6b393cec18463a6a Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:46:05 -0700 Subject: [PATCH 5/6] `gw-draft-resume-change-notice.php`: Added new snippet that displays a notice when a user resumes draft from a new IP/UA. --- gravity-forms/gw-draft-resume-change-notice.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gravity-forms/gw-draft-resume-change-notice.php b/gravity-forms/gw-draft-resume-change-notice.php index 28a6e3078..741afb13f 100644 --- a/gravity-forms/gw-draft-resume-change-notice.php +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -19,10 +19,10 @@ $draft = $wpdb->get_row( $wpdb->prepare( sprintf( - "SELECT form_id, ip, submission FROM `%s` WHERE uuid = %%s", + 'SELECT form_id, ip, submission FROM `%s` WHERE uuid = %%s', esc_sql( $table ) ), - $uuid + $token ) ); From ea46c4759ede47446cdebec54a22dfb48d6f7cf2 Mon Sep 17 00:00:00 2001 From: SebastianWiz <165194375+SebastianWiz@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:49:29 -0700 Subject: [PATCH 6/6] `gw-draft-resume-change-notice.php`: Added new snippet that displays a notice when a user resumes draft from a new IP/UA. --- gravity-forms/gw-draft-resume-change-notice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity-forms/gw-draft-resume-change-notice.php b/gravity-forms/gw-draft-resume-change-notice.php index 741afb13f..327c66575 100644 --- a/gravity-forms/gw-draft-resume-change-notice.php +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -15,8 +15,8 @@ global $wpdb; $table = GFFormsModel::get_draft_submissions_table_name(); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $draft = $wpdb->get_row( + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber $wpdb->prepare( sprintf( 'SELECT form_id, ip, submission FROM `%s` WHERE uuid = %%s',