Changeset 3341145
- Timestamp:
- 08/07/2025 03:19:30 PM (8 months ago)
- Location:
- activecampaign-for-woocommerce/trunk
- Files:
-
- 14 edited
-
README.txt (modified) (2 diffs)
-
ac_vendor/autoload.php (modified) (1 diff)
-
ac_vendor/composer/autoload_real.php (modified) (5 diffs)
-
ac_vendor/composer/autoload_static.php (modified) (2 diffs)
-
activecampaign-for-woocommerce.php (modified) (1 diff)
-
admin/scripts/activecampaign-for-woocommerce-settings-page.js (modified) (3 diffs)
-
admin/views/activecampaign-for-woocommerce-admin-display.php (modified) (1 diff)
-
includes/config/activecampaign-for-woocommerce-global-constants.php (modified) (1 diff)
-
includes/events/class-activecampaign-for-woocommerce-scheduler-handler.php (modified) (1 diff)
-
includes/models/class-activecampaign-for-woocommerce-cofe-ecom-order.php (modified) (3 diffs)
-
includes/models/class-activecampaign-for-woocommerce-ecom-order.php (modified) (1 diff)
-
includes/orders/class-activecampaign-for-woocommerce-cofe-order-builder.php (modified) (2 diffs)
-
includes/orders/class-activecampaign-for-woocommerce-new-order-created-event.php (modified) (2 diffs)
-
includes/subscriptions/models/class-activecampaign-for-woocommerce-subscription-model.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
activecampaign-for-woocommerce/trunk/README.txt
r3307195 r3341145 4 4 Requires at least: 6.0 5 5 Tested up to: 6.8.1 6 Stable tag: 2.10. 06 Stable tag: 2.10.1 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 96 96 == Changelog == 97 97 98 = 2.10.1 2025-08-07 = 99 * Fix - Distinction between user ID and customer ID when syncing order 100 * Fix - Syncing order multiple times causing automations to run twice 101 98 102 = 2.10.0 2025-05-15 = 99 103 * Improvement - Accepts marketing support for WooCommerce Blocks added -
activecampaign-for-woocommerce/trunk/ac_vendor/autoload.php
r3307195 r3341145 5 5 require_once __DIR__ . '/composer/autoload_real.php'; 6 6 7 return ComposerAutoloaderInit 1b745f4bb5309cf35a328c2aacb791d4::getLoader();7 return ComposerAutoloaderInit3e2cba0abd503ac7ca9bd25b616cc324::getLoader(); -
activecampaign-for-woocommerce/trunk/ac_vendor/composer/autoload_real.php
r3307195 r3341145 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 1b745f4bb5309cf35a328c2aacb791d45 class ComposerAutoloaderInit3e2cba0abd503ac7ca9bd25b616cc324 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 1b745f4bb5309cf35a328c2aacb791d4', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit3e2cba0abd503ac7ca9bd25b616cc324', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 1b745f4bb5309cf35a328c2aacb791d4', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit3e2cba0abd503ac7ca9bd25b616cc324', 'loadClassLoader')); 30 30 31 31 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); … … 33 33 require __DIR__ . '/autoload_static.php'; 34 34 35 call_user_func(\Composer\Autoload\ComposerStaticInit 1b745f4bb5309cf35a328c2aacb791d4::getInitializer($loader));35 call_user_func(\Composer\Autoload\ComposerStaticInit3e2cba0abd503ac7ca9bd25b616cc324::getInitializer($loader)); 36 36 } else { 37 37 $map = require __DIR__ . '/autoload_namespaces.php'; … … 54 54 55 55 if ($useStaticLoader) { 56 $includeFiles = Composer\Autoload\ComposerStaticInit 1b745f4bb5309cf35a328c2aacb791d4::$files;56 $includeFiles = Composer\Autoload\ComposerStaticInit3e2cba0abd503ac7ca9bd25b616cc324::$files; 57 57 } else { 58 58 $includeFiles = require __DIR__ . '/autoload_files.php'; 59 59 } 60 60 foreach ($includeFiles as $fileIdentifier => $file) { 61 composerRequire 1b745f4bb5309cf35a328c2aacb791d4($fileIdentifier, $file);61 composerRequire3e2cba0abd503ac7ca9bd25b616cc324($fileIdentifier, $file); 62 62 } 63 63 … … 66 66 } 67 67 68 function composerRequire 1b745f4bb5309cf35a328c2aacb791d4($fileIdentifier, $file)68 function composerRequire3e2cba0abd503ac7ca9bd25b616cc324($fileIdentifier, $file) 69 69 { 70 70 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
activecampaign-for-woocommerce/trunk/ac_vendor/composer/autoload_static.php
r3307195 r3341145 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 1b745f4bb5309cf35a328c2aacb791d47 class ComposerStaticInit3e2cba0abd503ac7ca9bd25b616cc324 8 8 { 9 9 public static $files = array ( … … 494 494 { 495 495 return \Closure::bind(function () use ($loader) { 496 $loader->prefixLengthsPsr4 = ComposerStaticInit 1b745f4bb5309cf35a328c2aacb791d4::$prefixLengthsPsr4;497 $loader->prefixDirsPsr4 = ComposerStaticInit 1b745f4bb5309cf35a328c2aacb791d4::$prefixDirsPsr4;498 $loader->classMap = ComposerStaticInit 1b745f4bb5309cf35a328c2aacb791d4::$classMap;496 $loader->prefixLengthsPsr4 = ComposerStaticInit3e2cba0abd503ac7ca9bd25b616cc324::$prefixLengthsPsr4; 497 $loader->prefixDirsPsr4 = ComposerStaticInit3e2cba0abd503ac7ca9bd25b616cc324::$prefixDirsPsr4; 498 $loader->classMap = ComposerStaticInit3e2cba0abd503ac7ca9bd25b616cc324::$classMap; 499 499 500 500 }, null, ClassLoader::class); -
activecampaign-for-woocommerce/trunk/activecampaign-for-woocommerce.php
r3307195 r3341145 17 17 * Plugin URI: https://www.activecampaign.com/ 18 18 * Description: Add Abandoned Cart functionality to your WooCommerce store, synchronize order & customer information using ActiveCampaign. 19 * Version: 2.10. 019 * Version: 2.10.1 20 20 * WC requires at least: 7.4.0 21 21 * WC tested up to: 9.8.5 -
activecampaign-for-woocommerce/trunk/admin/scripts/activecampaign-for-woocommerce-settings-page.js
r3242090 r3341145 127 127 const form = $('#activecampaign-for-woocommerce-options-form'); 128 128 129 // https://my-woocommerce-store.shop/**/products/{{ sku}}129 // https://my-woocommerce-store.shop/**/products/{{variantSku}} 130 130 function validProductUrlPattern(pattern) { 131 let validUrlPatternVariables = [' sku', 'storePrimaryId', 'storeBaseProductId', 'upc', 'baseProductUrlSlug', 'variantProductUrlSlug'];131 let validUrlPatternVariables = ['variantSku', 'storePrimaryId', 'storeBaseProductId', 'upc', 'baseProductUrlSlug', 'variantProductUrlSlug']; 132 132 const regexp = /\{\{(.*?)}}/g; 133 133 if('' === pattern) { … … 140 140 } 141 141 // Variable validations 142 // https://my-woocommerce-store.shop/**/products/{{ sku}}/{{id}}142 // https://my-woocommerce-store.shop/**/products/{{variantSku}}/{{id}} 143 143 // https://my-woocommerce-store.shop/**/products/{{id}} 144 144 const matches = [...pattern.matchAll(regexp)] … … 152 152 } 153 153 // Wildcard next To Variable Validation 154 // https://example.com/**{{ sku}}154 // https://example.com/**{{variantSku}} 155 155 if(pattern.includes('**{{') || pattern.includes('}}**')) { 156 156 return false; -
activecampaign-for-woocommerce/trunk/admin/views/activecampaign-for-woocommerce-admin-display.php
r3307195 r3341145 232 232 } 233 233 234 $activecampaign_for_woocommerce_ba_product_url_valid_variables = array( ' sku', 'storePrimaryId', 'storeBaseProductId', 'upc', 'baseProductUrlSlug', 'variantProductUrlSlug' );234 $activecampaign_for_woocommerce_ba_product_url_valid_variables = array( 'variantSku', 'storePrimaryId', 'storeBaseProductId', 'upc', 'baseProductUrlSlug', 'variantProductUrlSlug' ); 235 235 236 236 $activecampaign_for_woocommerce_ac_debug_options = array( -
activecampaign-for-woocommerce/trunk/includes/config/activecampaign-for-woocommerce-global-constants.php
r3307195 r3341145 26 26 */ 27 27 if ( ! defined( 'ACTIVECAMPAIGN_FOR_WOOCOMMERCE_VERSION' ) ) { 28 define( 'ACTIVECAMPAIGN_FOR_WOOCOMMERCE_VERSION', '2.10. 0' );28 define( 'ACTIVECAMPAIGN_FOR_WOOCOMMERCE_VERSION', '2.10.1' ); 29 29 } 30 30 -
activecampaign-for-woocommerce/trunk/includes/events/class-activecampaign-for-woocommerce-scheduler-handler.php
r3284304 r3341145 236 236 } 237 237 238 public static function remove_scheduled_ac_event( $event, $args = array() ) { 239 ( new Activecampaign_For_Woocommerce_Scheduler_Handler() )->clear_single_event( $event, $args ); 240 } 241 238 242 /** 239 243 * Schedules all events in the recurring list. -
activecampaign-for-woocommerce/trunk/includes/models/class-activecampaign-for-woocommerce-cofe-ecom-order.php
r3232769 r3341145 33 33 set_properties_from_serialized_array as set_all_but_products_as_properties_from_serialized_array; 34 34 } 35 36 /** 37 * CID - customer id 38 * UID - registered user id 39 * Related to DEFECT-30172 - Old order are syncing into new customer orders 40 * We need to distinct customer and user ids, so we don't send duplicates 41 */ 42 public const CUSTOMER_ID = 'CID'; 43 public const USER_ID = 'UID'; 35 44 36 45 /** … … 409 418 */ 410 419 public function set_currency( $currency ) { 411 $this->currency = $currency;420 $this->currency = strtolower( $currency ); 412 421 } 413 422 … … 998 1007 } 999 1008 if ( isset( $order_data['customer_id'] ) ) { 1000 // this is ok 1001 $this->set_wc_customer_id( $order_data['customer_id'] ); 1009 $customer_id = $order_data['customer_id']; 1010 if ( ! in_array( $customer_id, array( 0, '0', null ), true ) ) { 1011 $customer_id = self::USER_ID . '-' . $customer_id; 1012 } 1013 1014 $this->set_wc_customer_id( $customer_id ); 1002 1015 } 1003 1016 -
activecampaign-for-woocommerce/trunk/includes/models/class-activecampaign-for-woocommerce-ecom-order.php
r3220303 r3341145 310 310 */ 311 311 public function set_currency( $currency ) { 312 $this->currency = $currency;312 $this->currency = strtolower( $currency ); 313 313 } 314 314 -
activecampaign-for-woocommerce/trunk/includes/orders/class-activecampaign-for-woocommerce-cofe-order-builder.php
r3220303 r3341145 351 351 if ( ! is_null( $order ) && self::validate_object( $order, 'get_customer_id' ) && ! empty( $order->get_customer_id() ) ) { 352 352 353 return $order->get_customer_id();353 return Cofe_Ecom_Order::USER_ID . '-' . $order->get_customer_id(); 354 354 } 355 355 356 356 if ( ! is_null( $order ) && self::validate_object( $order, 'get_user_id' ) && ! empty( $order->get_user_id() ) ) { 357 357 358 return $order->get_user_id();358 return Cofe_Ecom_Order::USER_ID . '-' . $order->get_user_id(); 359 359 } 360 360 } catch ( Throwable $t ) { … … 379 379 380 380 if ( isset( $customer_row ) && ! empty( $customer_row->customer_id ) ) { 381 return $customer_row->customer_id;381 return Cofe_Ecom_Order::CUSTOMER_ID . '-' . $customer_row->customer_id; 382 382 } 383 383 } catch ( Throwable $t ) { -
activecampaign-for-woocommerce/trunk/includes/orders/class-activecampaign-for-woocommerce-new-order-created-event.php
r3284304 r3341145 579 579 private function schedule_sync_job( $order_id ) { 580 580 try { 581 if ( ! AC_Scheduler::is_scheduled( AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, array( 'wc_order_id' => $order_id, 'event' => 'onetime' ) ) ) { 582 AC_Scheduler::schedule_ac_event( 583 AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, 581 if ( AC_Scheduler::is_scheduled( AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, array( 'wc_order_id' => $order_id, 'event' => 'onetime' ) ) ) { 582 AC_Scheduler::remove_scheduled_ac_event( AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, array( 'wc_order_id' => $order_id, 'event' => 'onetime' ) ); 583 584 $this->logger->debug( 585 'Removed finished order for immediate sync (duplicate job for single order).', 584 586 array( 585 587 'wc_order_id' => $order_id, 586 'event' => 'onetime', 587 ), 588 false, 589 false 588 'event' => 'onetime', 589 ) 590 590 ); 591 591 } 592 593 AC_Scheduler::schedule_ac_event( 594 AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, 595 array( 596 'wc_order_id' => $order_id, 597 'event' => 'onetime', 598 ), 599 false, 600 false 601 ); 592 602 593 603 $this->logger->debug( … … 597 607 'current_time' => time(), 598 608 'scheduled_time' => time() + 40, 599 'schedule validation' => AC_Scheduler::get_schedule( AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, array( 'wc_order_id' => $order_id, 'event' => 'onetime' ) ),609 'schedule_validation' => AC_Scheduler::get_schedule( AC_Scheduler::SYNC_ONE_ORDER_ACTIVE, array( 'wc_order_id' => $order_id, 'event' => 'onetime' ) ), 600 610 ) 601 611 ); -
activecampaign-for-woocommerce/trunk/includes/subscriptions/models/class-activecampaign-for-woocommerce-subscription-model.php
r3220303 r3341145 809 809 */ 810 810 public function set_currency( $currency ) { 811 $this->currency = $currency;811 $this->currency = strtolower( $currency ); 812 812 } 813 813
Note: See TracChangeset
for help on using the changeset viewer.