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',