PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.6.5
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.6.5
1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 trunk All 48 releases
← All changes | database/DBMigrator.php +37 -0 1.6.2 → 1.6.5 View file →
@@ -135,8 +135,10 @@
135 135 }
136 136
137 137 public static function maybeMigrateDBChanges()
138 138 {
139 + self::maybeMigrateCustomerRecoveryIndexes();
140 +
139 141 /*
140 142 * TODO We will remove this after final release
141 143 */
142 144 $currentDBVersion = get_option('_fluent_cart_db_version');
@@ -177,8 +179,11 @@
177 179
178 180 // 2026-07-24
179 181 OrdersMigrator::addUuidIndex();
180 182
183 + // 2026-08-20
184 + ProductMetaMigrator::addObjectMetaIndex();
185 +
181 186 // let's check the orders table sequence number
182 187 global $wpdb;
183 188
184 189 // Product Meta unique index removal
@@ -592,8 +597,40 @@
592 597 AttributeObjectRelationsMigrator::migrate();
593 598 AttributeTermsMigrator::migrate();
594 599 AttributeSeeder::seed();
595 600
601 + self::releaseMigrationLock();
602 + }
603 + }
604 +
605 + /** Upgrade active stores without running index DDL on customer requests. */
606 + public static function maybeMigrateCustomerRecoveryIndexes(): void
607 + {
608 + $option = '_fluent_cart_customer_recovery_indexes_version';
609 + if (get_option($option) === '1') {
610 + return;
611 + }
612 + if (!(defined('WP_CLI') && WP_CLI) && (!is_admin() || !current_user_can('manage_options'))) {
613 + return;
614 + }
615 + if (!self::acquireMigrationLock()) {
616 + return;
617 + }
618 + try {
619 + if (get_option($option) === '1') {
620 + return;
621 + }
622 + foreach ([SubscriptionsMigrator::class, OrderDownloadPermissionsMigrator::class, CartMigrator::class] as $migrator) {
623 + if (!Schema::hasTable($migrator::$tableName)) {
624 + return;
625 + }
626 + $migrator::addCustomerRecoveryIndex();
627 + if (!$migrator::hasCustomerRecoveryIndex()) {
628 + return; // Keep the upgrade pending if ALTER failed.
629 + }
630 + }
631 + update_option($option, '1', false);
632 + } finally {
596 633 self::releaseMigrationLock();
597 634 }
598 635 }
599 636