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..327c66575 --- /dev/null +++ b/gravity-forms/gw-draft-resume-change-notice.php @@ -0,0 +1,71 @@ +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', + esc_sql( $table ) + ), + $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 = '