diff --git a/CHANGELOG.md b/CHANGELOG.md index a6807b8..73f3262 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2023-12-06 4.7.0 +* Fix module activation/deactivation + ## 2023-11-20 4.6.14 * Fix module activation/deactivation diff --git a/VERSION b/VERSION index 8af4c0d..1163055 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.6.14 \ No newline at end of file +4.7.0 \ No newline at end of file diff --git a/src/include/class-wc-retailcrm-base.php b/src/include/class-wc-retailcrm-base.php index 9f34b3c..254e5c0 100644 --- a/src/include/class-wc-retailcrm-base.php +++ b/src/include/class-wc-retailcrm-base.php @@ -821,7 +821,11 @@ if (!class_exists('WC_Retailcrm_Base')) { { global $wpdb; - $table = $entity === 'order' ? $wpdb->postmeta : $wpdb->usermeta; + if ('user' === $entity) { + $table = $wpdb->usermeta; + } else { + $table = useHpos() ? $wpdb->prefix . 'wc_orders_meta' : $wpdb->postmeta; + } $metaData = ['default_retailcrm' => __('Select value', 'retailcrm')]; $sqlQuery = "SELECT DISTINCT `meta_key` FROM $table ORDER BY `meta_key`"; diff --git a/src/include/class-wc-retailcrm-history.php b/src/include/class-wc-retailcrm-history.php index 5cd89c6..50ddbbe 100644 --- a/src/include/class-wc-retailcrm-history.php +++ b/src/include/class-wc-retailcrm-history.php @@ -1354,7 +1354,7 @@ if (!class_exists('WC_Retailcrm_History')) : } if ($wcObject instanceof WC_Order) { - update_post_meta($wcObject->get_id(), $metaKey, $crmData['customFields'][$customKey]); + $wcObject->update_meta_data($metaKey, $crmData['customFields'][$customKey]); } else { update_user_meta($wcObject->get_id(), $metaKey, $crmData['customFields'][$customKey]); } diff --git a/src/include/class-wc-retailcrm-uploader.php b/src/include/class-wc-retailcrm-uploader.php index 4964cc4..0a4d9df 100644 --- a/src/include/class-wc-retailcrm-uploader.php +++ b/src/include/class-wc-retailcrm-uploader.php @@ -169,9 +169,14 @@ if (class_exists('WC_Retailcrm_Uploader') === false) { { global $wpdb; - $result = $wpdb->get_results("SELECT COUNT(ID) as `count` FROM $wpdb->posts WHERE post_type = 'shop_order'"); + if (useHpos()) { + // Use {$wpdb->prefix}, because wp_wc_orders not standard WP table + $result = $wpdb->get_results("SELECT COUNT(ID) as `count` FROM {$wpdb->prefix}wc_orders"); + } else { + $result = $wpdb->get_results("SELECT COUNT(ID) as `count` FROM $wpdb->posts WHERE post_type = 'shop_order'"); + } - return empty($result[0]->count) === false ? (int) $result[0]->count : 0; + return $result[0]->count ?? 0; } diff --git a/src/include/functions.php b/src/include/functions.php index 2440569..df5d27c 100644 --- a/src/include/functions.php +++ b/src/include/functions.php @@ -1,7 +1,5 @@ query("DELETE FROM $wpdb->options WHERE option_name = 'woocommerce_integration-retailcrm_settings';"); -$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_customers_history_since_id';"); -$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_orders_history_since_id';"); -$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_active_in_crm';"); -$wpdb->query("DELETE FROM $wpdb->options WHERE option_name = 'retailcrm_client_id';"); +global $wpdb; + +$options = [ + 'retailcrm_client_id', + 'retailcrm_active_in_crm', + 'retailcrm_orders_history_since_id', + 'retailcrm_customers_history_since_id', + 'woocommerce_integration-retailcrm_settings', +]; + +foreach ($options as $option) { + $wpdb->query("DELETE FROM $wpdb->options WHERE option_name = {$option}"); +} // Clear any cached data that has been removed wp_cache_flush(); diff --git a/tests/helpers/class-wc-retailcrm-test-case-helper.php b/tests/helpers/class-wc-retailcrm-test-case-helper.php index 4b46519..a099ac2 100644 --- a/tests/helpers/class-wc-retailcrm-test-case-helper.php +++ b/tests/helpers/class-wc-retailcrm-test-case-helper.php @@ -100,27 +100,30 @@ class WC_Retailcrm_Test_Case_Helper extends WC_Unit_Test_Case } else { global $wpdb; - foreach ( - [ + $tables = [ + useHpos() ? $wpdb->prefix . 'wc_orders' : '', + useHpos() ? $wpdb->prefix . 'wc_orders_meta' : '', $wpdb->posts, $wpdb->postmeta, $wpdb->comments, $wpdb->commentmeta, $wpdb->term_relationships, $wpdb->termmeta, - ] as $table - ) { - //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + ]; + + foreach ($tables as $table) { + if ('' === $table) { + continue; + } + $wpdb->query("DELETE FROM {$table}"); } foreach ([$wpdb->terms, $wpdb->term_taxonomy] as $table) { - //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $wpdb->query("DELETE FROM {$table} WHERE term_id != 1"); } $wpdb->query("UPDATE {$wpdb->term_taxonomy} SET count = 0"); - $wpdb->query("DELETE FROM {$wpdb->users} WHERE ID != 1"); $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE user_id != 1"); } diff --git a/tests/test-wc-retailcrm-base.php b/tests/test-wc-retailcrm-base.php index aa280df..1285fb9 100644 --- a/tests/test-wc-retailcrm-base.php +++ b/tests/test-wc-retailcrm-base.php @@ -252,7 +252,7 @@ class WC_Retailcrm_Base_Test extends WC_Retailcrm_Test_Case_Helper $this->baseRetailcrm->count_upload_data(); $uploadInfo = $this->getJsonData(ob_get_contents()); - + var_dump($uploadInfo); $this->assertInternalType('array', $uploadInfo); $this->assertArrayHasKey('count_orders', $uploadInfo); $this->assertArrayHasKey('count_users', $uploadInfo); diff --git a/tests/test-wc-retailcrm-uploader.php b/tests/test-wc-retailcrm-uploader.php index 244090f..1fc35b0 100644 --- a/tests/test-wc-retailcrm-uploader.php +++ b/tests/test-wc-retailcrm-uploader.php @@ -109,7 +109,7 @@ class WC_Retailcrm_Uploader_Test extends WC_Retailcrm_Test_Case_Helper { $retailcrm_uploader = $this->getRetailcrmUploader($this->apiMock); $count_orders = $retailcrm_uploader->getCountOrders(); - + var_dump($count_orders); $this->assertInternalType('int', $count_orders); }