HEX
Server: Apache
System: Linux 162-240-236-42.bluehost.com 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64
User: bt667 (1004)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //proc/self/cwd/wp-content/plugins/easy-digital-downloads/backup/includes/compat/class-tax.php
<?php
/**
 * Backwards Compatibility Handler for Taxes.
 *
 * @package     EDD
 * @subpackage  Compat
 * @copyright   Copyright (c) 2018, Easy Digital Downloads, LLC
 * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 * @since       3.0
 */
namespace EDD\Compat;

// Exit if accessed directly
defined( 'ABSPATH' ) || exit;

/**
 * Tax Class.
 *
 * EDD 3.0 moves away from storing tax rates in wp_options. This class handles all the backwards compatibility for the
 * transition to custom tables.
 *
 * @since 3.0
 */
class Tax extends Base {

	/**
	 * Holds the component for which we are handling back-compat. There is a chance that two methods have the same name
	 * and need to be dispatched to completely other methods. When a new instance of Back_Compat is created, a component
	 * can be passed to the constructor which will allow __call() to dispatch to the correct methods.
	 *
	 * @since 3.0
	 * @access protected
	 * @var string
	 */
	protected $component = 'tax';

	/**
	 * Backwards compatibility hooks for payments.
	 *
	 * @since 3.0
	 * @access protected
	 */
	protected function hooks() {

		/* Filters ************************************************************/

		add_filter( 'pre_update_option', array( $this, 'update_option' ), 10, 3 );
	}

	/**
	 * Backwards compatibility layer for update_option().
	 *
	 * This is here for backwards compatibility purposes with the migration to custom tables in EDD 3.0.
	 *
	 * @since 3.0
	 *
	 * @param mixed  $value     The new, unserialized option value.
	 * @param string $option    Name of the option.
	 * @param mixed  $old_value The old option value.
	 *
	 * @return string $value Option value.
	 */
	public function update_option( $value, $option, $old_value ) {

		// Bail if tax rates are not being updated.
		if ( 'edd_tax_rates' !== $option ) {
			return $value;
		}

		$value = (array) $value;

		foreach ( $value as $tax_rate ) {
			if ( empty( $tax_rate['country'] ) || empty( $tax_rate['rate'] ) ) {
				continue;
			}
			$scope = ! empty( $tax_rate['global'] )
				? 'country'
				: 'region';

			$region = ! empty( $tax_rate['state'] )
				? sanitize_text_field( $tax_rate['state'] )
				: '';

			$adjustment_data = array(
				'name'        => $tax_rate['country'],
				'scope'       => $scope,
				'amount'      => floatval( $tax_rate['rate'] ),
				'description' => $region,
			);

			edd_add_tax_rate( $adjustment_data );
		}

		// Return the value so it is stored for backwards compatibility purposes.
		return $value;
	}
}