Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
primogenial
/
plugins
/
google-listings-and-ads
/
src
/
DB
/
Migration
:
Migration20211228T1640692399.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare( strict_types=1 ); namespace Automattic\WooCommerce\GoogleListingsAndAds\DB\Migration; use Automattic\WooCommerce\GoogleListingsAndAds\DB\Table\ShippingRateTable; use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsInterface; use wpdb; defined( 'ABSPATH' ) || exit; /** * Class Migration20211228T1640692399 * * @package Automattic\WooCommerce\GoogleListingsAndAds\DB\Migration * * @since 1.12.2 */ class Migration20211228T1640692399 extends AbstractMigration { /** * @var ShippingRateTable */ protected $shipping_rate_table; /** * @var OptionsInterface */ protected $options; /** * Migration constructor. * * @param wpdb $wpdb The wpdb object. * @param ShippingRateTable $shipping_rate_table * @param OptionsInterface $options */ public function __construct( wpdb $wpdb, ShippingRateTable $shipping_rate_table, OptionsInterface $options ) { parent::__construct( $wpdb ); $this->shipping_rate_table = $shipping_rate_table; $this->options = $options; } /** * Returns the version to apply this migration for. * * @return string A version number. For example: 1.4.1 */ public function get_applicable_version(): string { return '1.12.2'; } /** * Apply the migrations. * * @return void */ public function apply(): void { if ( $this->shipping_rate_table->exists() ) { $mc_settings = $this->options->get( OptionsInterface::MERCHANT_CENTER ); if ( ! is_array( $mc_settings ) ) { return; } if ( isset( $mc_settings['offers_free_shipping'] ) && false !== boolval( $mc_settings['offers_free_shipping'] ) && isset( $mc_settings['free_shipping_threshold'] ) ) { // Move the free shipping threshold from the options to the shipping rate table. $options_json = json_encode( [ 'free_shipping_threshold' => (float) $mc_settings['free_shipping_threshold'] ] ); // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared $this->wpdb->query( $this->wpdb->prepare( "UPDATE `{$this->wpdb->_escape( $this->shipping_rate_table->get_name() )}` SET `options`=%s WHERE 1=1", $options_json ) ); // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared } // Remove the free shipping threshold from the options. unset( $mc_settings['free_shipping_threshold'] ); unset( $mc_settings['offers_free_shipping'] ); $this->options->update( OptionsInterface::MERCHANT_CENTER, $mc_settings ); } } }