From 19cd4ebeca55ae7821d95f64302a3a89a743ed68 Mon Sep 17 00:00:00 2001 From: Saif Sultan Date: Fri, 30 May 2025 11:37:16 +0530 Subject: [PATCH 1/3] Fixed an issue with Abort Queue not functioning correctly. --- assets/js/gf-feed-forge-admin.js | 26 ++++++++++++++++- class-gwiz-gf-feed-forge.php | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/assets/js/gf-feed-forge-admin.js b/assets/js/gf-feed-forge-admin.js index d4579bb..f109a26 100644 --- a/assets/js/gf-feed-forge-admin.js +++ b/assets/js/gf-feed-forge-admin.js @@ -3,7 +3,25 @@ jQuery(function($) { $(document).on('click', '#gfff-abort-queue', function(e) { e.preventDefault(); gfffAbortQueue = true; - displayMessage(GFFF_ADMIN.abortSuccessMsg, 'error', '#entry_list_form'); + + $(this).html(' Aborting...'); + + // Send request to server to set abort flag + $.post(ajaxurl, { + action: 'gf_process_feeds', + gf_process_feeds: GFFF_ADMIN.nonce, + abort_processing: true + }).done(function(response) { + if (response.success) { + gfffAbortQueue = true; + displayMessage(GFFF_ADMIN.abortSuccessMsg, 'success', '#entry_list_form'); + $('input[name="feed_process"]').prop('disabled', false); + closeModal(false); + } + }); + + // Hide the abort button after click + $(this).hide(); }); $('#doaction, #doaction2').click(function () { @@ -87,6 +105,12 @@ jQuery(function($) { total, }, function (response) { + if (gfffAbortQueue || (response.success && response.data.aborted)) { + $('input[name="feed_process"]').prop('disabled', false); + closeModal(false); + return; + } + if (gfffAbortQueue) { $('input[name="feed_process"]').prop('disabled', false); closeModal(false); diff --git a/class-gwiz-gf-feed-forge.php b/class-gwiz-gf-feed-forge.php index d80460e..e97c3c6 100644 --- a/class-gwiz-gf-feed-forge.php +++ b/class-gwiz-gf-feed-forge.php @@ -29,6 +29,8 @@ class GWiz_GF_Feed_Forge extends GFAddOn { protected $_short_title = 'Feed Forge'; const TRANSIENT_CURRENT_BATCH_OPTION_NAMES = 'gfff_current_batch_option_names'; + const TRANSIENT_ABORT_FLAG = 'gfff_abort_processing'; + const OPTION_BATCH_NAMES = 'gfff_current_batches'; public static function get_instance() { if ( self::$instance === null ) { @@ -381,8 +383,54 @@ public static function registered_addons() { return apply_filters( 'gfff_registered_addons', $feed_addons ); } + public function abort_processing() { + $batch_names = get_option(self::OPTION_BATCH_NAMES, []); + + foreach ( $batch_names as $batch_name ) { + delete_site_option($batch_name); + } + + delete_option( self::OPTION_BATCH_NAMES ); + delete_transient( self::TRANSIENT_CURRENT_BATCH_OPTION_NAMES ); + set_transient( self::TRANSIENT_ABORT_FLAG, true, 60 ); + } + + public function should_abort() { + return get_transient( self::TRANSIENT_ABORT_FLAG ); + } + + public function track_batch( $batch_name ) { + $batch_names = get_option( self::OPTION_BATCH_NAMES, [] ); + $batch_names[] = $batch_name; + update_option( self::OPTION_BATCH_NAMES, array_unique( $batch_names ) ); + } + + public function maybe_abort_processing() { + if ( get_transient( self::TRANSIENT_ABORT_FLAG ) ) { + delete_transient( self::TRANSIENT_ABORT_FLAG ); + wp_send_json_success( array( 'aborted' => true ) ); + } + return false; + } + public function process_feeds() { check_admin_referer( 'gf_process_feeds', 'gf_process_feeds' ); + + $this->maybe_abort_processing(); + + // Handle abort request + if ( rgpost( 'abort_processing' )) { + $this->abort_processing(); + wp_send_json_success( ['aborted' => true] ); + return; + } + + // Check if we should abort + if ( $this->should_abort() ) { + wp_send_json_success( ['aborted' => true] ); + return; + } + $form_id = absint( rgpost( 'formId' ) ); $leads = rgpost( 'leadIds' ); $feeds = json_decode( rgpost( 'feeds' ) ); @@ -478,6 +526,8 @@ public function process_feeds() { $batch_option_names[] = $batch_option_name; + $this->track_batch( $batch_option_name ); + set_transient( self::TRANSIENT_CURRENT_BATCH_OPTION_NAMES, $batch_option_names, DAY_IN_SECONDS ); if ( $count >= $total ) { From eb8a508bdf58c5099cf723f772f8f2cb84f5fa13 Mon Sep 17 00:00:00 2001 From: Saif Sultan Date: Fri, 30 May 2025 20:06:41 +0530 Subject: [PATCH 2/3] ~ Update. --- class-gwiz-gf-feed-forge.php | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/class-gwiz-gf-feed-forge.php b/class-gwiz-gf-feed-forge.php index e97c3c6..7c1355d 100644 --- a/class-gwiz-gf-feed-forge.php +++ b/class-gwiz-gf-feed-forge.php @@ -392,7 +392,7 @@ public function abort_processing() { delete_option( self::OPTION_BATCH_NAMES ); delete_transient( self::TRANSIENT_CURRENT_BATCH_OPTION_NAMES ); - set_transient( self::TRANSIENT_ABORT_FLAG, true, 60 ); + set_transient( self::TRANSIENT_ABORT_FLAG, true, 10 ); } public function should_abort() { @@ -405,29 +405,17 @@ public function track_batch( $batch_name ) { update_option( self::OPTION_BATCH_NAMES, array_unique( $batch_names ) ); } - public function maybe_abort_processing() { - if ( get_transient( self::TRANSIENT_ABORT_FLAG ) ) { - delete_transient( self::TRANSIENT_ABORT_FLAG ); - wp_send_json_success( array( 'aborted' => true ) ); - } - return false; - } - public function process_feeds() { check_admin_referer( 'gf_process_feeds', 'gf_process_feeds' ); - $this->maybe_abort_processing(); - // Handle abort request if ( rgpost( 'abort_processing' )) { $this->abort_processing(); - wp_send_json_success( ['aborted' => true] ); return; } // Check if we should abort if ( $this->should_abort() ) { - wp_send_json_success( ['aborted' => true] ); return; } From c9a180699d441c5173e6c28ca9a65c68e54d28db Mon Sep 17 00:00:00 2001 From: Saif Sultan Date: Fri, 30 May 2025 21:01:41 +0530 Subject: [PATCH 3/3] ~ Update. --- assets/js/gf-feed-forge-admin.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/assets/js/gf-feed-forge-admin.js b/assets/js/gf-feed-forge-admin.js index f109a26..224e6f4 100644 --- a/assets/js/gf-feed-forge-admin.js +++ b/assets/js/gf-feed-forge-admin.js @@ -3,10 +3,8 @@ jQuery(function($) { $(document).on('click', '#gfff-abort-queue', function(e) { e.preventDefault(); gfffAbortQueue = true; + displayMessage(GFFF_ADMIN.abortSuccessMsg, 'error', '#entry_list_form'); - $(this).html(' Aborting...'); - - // Send request to server to set abort flag $.post(ajaxurl, { action: 'gf_process_feeds', gf_process_feeds: GFFF_ADMIN.nonce, @@ -14,9 +12,9 @@ jQuery(function($) { }).done(function(response) { if (response.success) { gfffAbortQueue = true; - displayMessage(GFFF_ADMIN.abortSuccessMsg, 'success', '#entry_list_form'); $('input[name="feed_process"]').prop('disabled', false); closeModal(false); + location.reload(); } });