WC_Geolite_Integration::get_country_iso() sometimes returns null instead of an array, so this commit adds a check to account for that possibility before using the returned value. Doing this to prevent the following undefined index notice:
PHP Notice: Undefined index: country in wp-content/plugins/woocommerce/includes/class-wc-geolite-integration.php on line 60
Fixes#20594
The algorithm to add a list of product categories to the query that order products of a given category by price was including only first level sub-categories since PR #20391. This was happening because `get_terms()` when called with the argument `parent` will only return direct children. To fix this and get all children for a given product category, it was necessary to replace `parent` with the argument `child_of`. See #20554 for a more detailed description of the issue that this commit fixes.
Replace the usage of `// @codingStandardsIgnoreStart` and `// @codingStandardsIgnoreEnd` with `// phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores` on WC_Gateway_Paypal_IPN_Handler::check_response(). Ignoring a single PHPCS rule is better than ignoring everything to protect the line against potential violations of the other rules.
Commit c7a3fd2 changed the logic to check if the refund is a full refund to use the strict equal operator (`===`) in the following line:
25be9fc13c/includes/gateways/paypal/includes/class-wc-gateway-paypal-ipn-handler.php (L295)
This change broke the comparison as `$order->get_total()` will return the value respecting the number of decimals after the decimal point set in the option `woocommerce_price_num_decimals` and `wc_format_decimal()`, when called without a second parameter, will not format the received value to use the same number of decimals set in `woocommerce_price_num_decimals`. To fix this issue, this commit passes `wc_get_price_decimals()` as the second parameter to `wc_format_decimal()`. This way both values will always have the same number of decimals and the comparison should work when handling a full refund.
Fixes#20551
This PR introduces a check on the permission_id FK to ensure that it is not added multiple times on upgrades. It also names the key specifically to ensure future changes to the key can be targeted properly and removes old keys that were added since 3.4.0.
* Add FK check before adding the FK. Also give the FK a name to avoid auto generated names and duplicate keys.
* Remove additional OR
* Remove additional OR
* Final FK check query
* Add foreign key cleanup routine to 3.4.3 db version
* Only check on named foreign key now that we have a cleanup routine in place, use specific phpcignore
* Rework formatting of SQL query
* Change way to fetch and add FK, can't use procedural SQL, needs to be done via statements.
* Add table name to lookup
* Only clean up FK on the wc_download_log table
* Remove erenouse bracket