98 lines
2.5 KiB
PHP
98 lines
2.5 KiB
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;
|
||
|
}
|
||
|
}
|