Changeset 3752867
- Timestamp:
- 10/18/2026 10:10:08 AM (less than one hour ago)
- Location:
- mercenza-b2b-for-woocommerce
- Files:
-
- 16 edited
- 1 copied
-
tags/1.2.1 (copied) (copied from mercenza-b2b-for-woocommerce/trunk )
-
tags/1.2.1/languages/mercenza-b2b-for-woocommerce.pot (modified) (2 diffs)
-
tags/1.2.1/mercenza-b2b-for-woocommerce.php (modified) (2 diffs)
-
tags/1.2.1/readme.txt (modified) (3 diffs)
-
tags/1.2.1/src/Customers/Rules/FactsCollector.php (modified) (1 diff)
-
tags/1.2.1/src/Utilities/Blocks.php (modified) (2 diffs)
-
tags/1.2.1/vendor/autoload.php (modified) (1 diff)
-
tags/1.2.1/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/1.2.1/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/languages/mercenza-b2b-for-woocommerce.pot (modified) (2 diffs)
-
trunk/mercenza-b2b-for-woocommerce.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/src/Customers/Rules/FactsCollector.php (modified) (1 diff)
-
trunk/src/Utilities/Blocks.php (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
mercenza-b2b-for-woocommerce/tags/1.2.1/languages/mercenza-b2b-for-woocommerce.pot
r3752620 r3752867 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Mercenza - B2B for WooCommerce 1.2. 0\n"5 "Project-Id-Version: Mercenza - B2B for WooCommerce 1.2.1\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mercenza-b2b-for-woocommerce\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-10-1 7T17:58:26+00:00\n"12 "POT-Creation-Date: 2026-10-18T10:05:45+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" -
mercenza-b2b-for-woocommerce/tags/1.2.1/mercenza-b2b-for-woocommerce.php
r3752620 r3752867 4 4 * Plugin URI: https://propluginslab.io/shop/plugins/pro-plugins/mercenza-b2b-for-woocommerce/ 5 5 * Description: B2B and wholesale toolkit for WooCommerce: customer groups, wholesale pricing, quantity rules, B2B only products, registration approval, company accounts, and more. 6 * Version: 1.2. 06 * Version: 1.2.1 7 7 * Author: ProPluginsLab 8 8 * Author URI: https://propluginslab.io … … 35 35 } 36 36 37 define( 'MERCENZA_VERSION', '1.2. 0' );37 define( 'MERCENZA_VERSION', '1.2.1' ); 38 38 39 39 // Which build this is. Only read when two copies are installed at once, to let -
mercenza-b2b-for-woocommerce/tags/1.2.1/readme.txt
r3752620 r3752867 7 7 WC requires at least: 8.2 8 8 WC tested up to: 11.2.1 9 Stable tag: 1.2. 09 Stable tag: 1.2.1 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 212 212 213 213 == Changelog == 214 215 = 1.2.1 - 2026-10-18 = 216 * Fix: Pages no longer stop with a critical error for logged in customers who have completed or processing orders. Since 1.2.0 the checkout block fields asked for the customer's past orders before WooCommerce had set up its order types. 217 * Fix: A customer's order history that cannot be read no longer stops a page; rules based on past purchases simply do not match. 214 218 215 219 = 1.2.0 - 2026-10-17 = … … 251 255 == Upgrade Notice == 252 256 257 = 1.2.1 = 258 Fixes a critical error on every page for logged in customers with orders, introduced in 1.2.0. Update now. No database changes. 259 253 260 = 1.2.0 = 254 261 Enforces sub account permissions and order limits, shows the PO number on the Checkout block, fixes price CSV uploads and imports, and adds reCAPTCHA v2. Adds one database table. -
mercenza-b2b-for-woocommerce/tags/1.2.1/src/Customers/Rules/FactsCollector.php
r3747065 r3752867 102 102 ); 103 103 } 104 $orders = wc_get_orders( 105 array( 106 'customer_id' => $user_id, 107 'status' => array( 'wc-completed', 'wc-processing' ), 108 'limit' => 200, 109 'orderby' => 'date', 110 'order' => 'DESC', 111 ) 112 ); 104 try { 105 $orders = wc_get_orders( 106 array( 107 'customer_id' => $user_id, 108 'status' => array( 'wc-completed', 'wc-processing' ), 109 'limit' => 200, 110 'orderby' => 'date', 111 'order' => 'DESC', 112 ) 113 ); 114 } catch ( \Throwable $e ) { 115 // A customer's order history must never take a page down (an order that cannot be loaded, or a call 116 // made before WooCommerce registered its order types): rules based on past purchases do not match. 117 if ( function_exists( 'wc_get_logger' ) ) { 118 wc_get_logger()->warning( 'Mercenza could not read the purchase history of user ' . $user_id . ': ' . $e->getMessage(), array( 'source' => 'mercenza' ) ); 119 } 120 $orders = array(); 121 } 113 122 foreach ( (array) $orders as $order ) { 114 123 if ( ! $order instanceof \WC_Order ) { -
mercenza-b2b-for-woocommerce/tags/1.2.1/src/Utilities/Blocks.php
r3752620 r3752867 41 41 42 42 /** 43 * Registers additional checkout fields on woocommerce_init, as WooCommerce 44 * asks, or straight away when that has already fired. 43 * Registers additional checkout fields once WooCommerce has registered its 44 * post and order types (init priority 5, after woocommerce_init), or 45 * straight away when that has already happened. The callbacks read the 46 * buyer (group, company, past orders), and wc_get_orders() throws for a 47 * customer with orders before the order types exist, which took the whole 48 * site down for logged in customers with orders in 1.2.0. WooCommerce 49 * accepts fields registered on woocommerce_init or later. 45 50 * 46 51 * @since 1.2.0 52 * @since 1.2.1 Waits for woocommerce_after_register_post_type. 47 53 * 48 54 * @param callable $callback Callback. … … 50 56 */ 51 57 public static function when_fields_ready( callable $callback ): void { 52 if ( did_action( 'woocommerce_ init' ) ) {58 if ( did_action( 'woocommerce_after_register_post_type' ) ) { 53 59 $callback(); 54 60 return; 55 61 } 56 add_action( 'woocommerce_ init', $callback );62 add_action( 'woocommerce_after_register_post_type', $callback ); 57 63 } 58 64 } -
mercenza-b2b-for-woocommerce/tags/1.2.1/vendor/autoload.php
r3752620 r3752867 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a::getLoader();22 return ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423::getLoader(); -
mercenza-b2b-for-woocommerce/tags/1.2.1/vendor/composer/autoload_real.php
r3752620 r3752867 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a5 class ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); -
mercenza-b2b-for-woocommerce/tags/1.2.1/vendor/composer/autoload_static.php
r3752620 r3752867 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a7 class ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 293 293 { 294 294 return \Closure::bind(function () use ($loader) { 295 $loader->prefixLengthsPsr4 = ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::$prefixLengthsPsr4;296 $loader->prefixDirsPsr4 = ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::$prefixDirsPsr4;297 $loader->classMap = ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::$classMap;295 $loader->prefixLengthsPsr4 = ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::$prefixLengthsPsr4; 296 $loader->prefixDirsPsr4 = ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::$prefixDirsPsr4; 297 $loader->classMap = ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::$classMap; 298 298 299 299 }, null, ClassLoader::class); -
mercenza-b2b-for-woocommerce/trunk/languages/mercenza-b2b-for-woocommerce.pot
r3752620 r3752867 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Mercenza - B2B for WooCommerce 1.2. 0\n"5 "Project-Id-Version: Mercenza - B2B for WooCommerce 1.2.1\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mercenza-b2b-for-woocommerce\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-10-1 7T17:58:26+00:00\n"12 "POT-Creation-Date: 2026-10-18T10:05:45+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" -
mercenza-b2b-for-woocommerce/trunk/mercenza-b2b-for-woocommerce.php
r3752620 r3752867 4 4 * Plugin URI: https://propluginslab.io/shop/plugins/pro-plugins/mercenza-b2b-for-woocommerce/ 5 5 * Description: B2B and wholesale toolkit for WooCommerce: customer groups, wholesale pricing, quantity rules, B2B only products, registration approval, company accounts, and more. 6 * Version: 1.2. 06 * Version: 1.2.1 7 7 * Author: ProPluginsLab 8 8 * Author URI: https://propluginslab.io … … 35 35 } 36 36 37 define( 'MERCENZA_VERSION', '1.2. 0' );37 define( 'MERCENZA_VERSION', '1.2.1' ); 38 38 39 39 // Which build this is. Only read when two copies are installed at once, to let -
mercenza-b2b-for-woocommerce/trunk/readme.txt
r3752620 r3752867 7 7 WC requires at least: 8.2 8 8 WC tested up to: 11.2.1 9 Stable tag: 1.2. 09 Stable tag: 1.2.1 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 212 212 213 213 == Changelog == 214 215 = 1.2.1 - 2026-10-18 = 216 * Fix: Pages no longer stop with a critical error for logged in customers who have completed or processing orders. Since 1.2.0 the checkout block fields asked for the customer's past orders before WooCommerce had set up its order types. 217 * Fix: A customer's order history that cannot be read no longer stops a page; rules based on past purchases simply do not match. 214 218 215 219 = 1.2.0 - 2026-10-17 = … … 251 255 == Upgrade Notice == 252 256 257 = 1.2.1 = 258 Fixes a critical error on every page for logged in customers with orders, introduced in 1.2.0. Update now. No database changes. 259 253 260 = 1.2.0 = 254 261 Enforces sub account permissions and order limits, shows the PO number on the Checkout block, fixes price CSV uploads and imports, and adds reCAPTCHA v2. Adds one database table. -
mercenza-b2b-for-woocommerce/trunk/src/Customers/Rules/FactsCollector.php
r3747065 r3752867 102 102 ); 103 103 } 104 $orders = wc_get_orders( 105 array( 106 'customer_id' => $user_id, 107 'status' => array( 'wc-completed', 'wc-processing' ), 108 'limit' => 200, 109 'orderby' => 'date', 110 'order' => 'DESC', 111 ) 112 ); 104 try { 105 $orders = wc_get_orders( 106 array( 107 'customer_id' => $user_id, 108 'status' => array( 'wc-completed', 'wc-processing' ), 109 'limit' => 200, 110 'orderby' => 'date', 111 'order' => 'DESC', 112 ) 113 ); 114 } catch ( \Throwable $e ) { 115 // A customer's order history must never take a page down (an order that cannot be loaded, or a call 116 // made before WooCommerce registered its order types): rules based on past purchases do not match. 117 if ( function_exists( 'wc_get_logger' ) ) { 118 wc_get_logger()->warning( 'Mercenza could not read the purchase history of user ' . $user_id . ': ' . $e->getMessage(), array( 'source' => 'mercenza' ) ); 119 } 120 $orders = array(); 121 } 113 122 foreach ( (array) $orders as $order ) { 114 123 if ( ! $order instanceof \WC_Order ) { -
mercenza-b2b-for-woocommerce/trunk/src/Utilities/Blocks.php
r3752620 r3752867 41 41 42 42 /** 43 * Registers additional checkout fields on woocommerce_init, as WooCommerce 44 * asks, or straight away when that has already fired. 43 * Registers additional checkout fields once WooCommerce has registered its 44 * post and order types (init priority 5, after woocommerce_init), or 45 * straight away when that has already happened. The callbacks read the 46 * buyer (group, company, past orders), and wc_get_orders() throws for a 47 * customer with orders before the order types exist, which took the whole 48 * site down for logged in customers with orders in 1.2.0. WooCommerce 49 * accepts fields registered on woocommerce_init or later. 45 50 * 46 51 * @since 1.2.0 52 * @since 1.2.1 Waits for woocommerce_after_register_post_type. 47 53 * 48 54 * @param callable $callback Callback. … … 50 56 */ 51 57 public static function when_fields_ready( callable $callback ): void { 52 if ( did_action( 'woocommerce_ init' ) ) {58 if ( did_action( 'woocommerce_after_register_post_type' ) ) { 53 59 $callback(); 54 60 return; 55 61 } 56 add_action( 'woocommerce_ init', $callback );62 add_action( 'woocommerce_after_register_post_type', $callback ); 57 63 } 58 64 } -
mercenza-b2b-for-woocommerce/trunk/vendor/autoload.php
r3752620 r3752867 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a::getLoader();22 return ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423::getLoader(); -
mercenza-b2b-for-woocommerce/trunk/vendor/composer/autoload_real.php
r3752620 r3752867 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a5 class ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit e7410be3d275e39ff2ab2d51f67e777a', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitfe8a3b7a95c0e13a9b419782fecb1423', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); -
mercenza-b2b-for-woocommerce/trunk/vendor/composer/autoload_static.php
r3752620 r3752867 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a7 class ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 293 293 { 294 294 return \Closure::bind(function () use ($loader) { 295 $loader->prefixLengthsPsr4 = ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::$prefixLengthsPsr4;296 $loader->prefixDirsPsr4 = ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::$prefixDirsPsr4;297 $loader->classMap = ComposerStaticInit e7410be3d275e39ff2ab2d51f67e777a::$classMap;295 $loader->prefixLengthsPsr4 = ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::$prefixLengthsPsr4; 296 $loader->prefixDirsPsr4 = ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::$prefixDirsPsr4; 297 $loader->classMap = ComposerStaticInitfe8a3b7a95c0e13a9b419782fecb1423::$classMap; 298 298 299 299 }, null, ClassLoader::class);
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)