File "JSON.php"
Full Path: /home/jlklyejr/public_html/post-date/wp-content/plugins/flexible-shipping/src/WPDesk/FS/TableRate/ImporterExporter/Importer/JSON.php
File size: 5.65 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* JSON Importer
*
* @package WPDesk\FS\TableRate\Importer
*/
namespace WPDesk\FS\TableRate\ImporterExporter\Importer;
use WC_Admin_Settings;
use WPDesk\FS\TableRate\ImporterExporter\Importer\Exception\FileNotExists;
use WPDesk\FS\TableRate\ImporterExporter\Importer\Exception\InvalidFile;
/**
* Class JSON
*
* @package WPDesk\FS\TableRate\Importer
*/
class JSON extends AbstractImporter {
/**
* @return array|void
* @throws FileNotExists .
* @throws InvalidFile .
*/
public function import() {
if ( ! file_exists( $this->file['tmp_name'] ) ) {
throw new FileNotExists( 'Uploaded file not exist.' );
}
$imported_data = file_get_contents( $this->file['tmp_name'] );
if ( ! $imported_data ) {
throw new FileNotExists( __( 'Uploaded file not exist.', 'flexible-shipping' ) );
}
$imported_shipping_methods = json_decode( $imported_data, true );
if ( empty( $imported_shipping_methods ) ) {
throw new InvalidFile( __( 'Sorry, there has been an error. The JSON file is invalid or incorrect file type.', 'flexible-shipping' ) );
}
foreach ( $imported_shipping_methods as $data ) {
if ( ! is_array( $data ) || ! isset( $data['id'] ) ) {
throw new InvalidFile( __( 'Sorry, there has been an error. The JSON file is invalid or incorrect file type.', 'flexible-shipping' ) );
}
$imported_shipping_method = $this->get_new_shipping_method_params( $data );
$this->shipping_methods[ $imported_shipping_method['id'] ] = map_deep( $imported_shipping_method, 'sanitize_text_field' );
WC_Admin_Settings::add_message(
sprintf(
// Translators: imported method title and method title.
__( 'Shipping method %1$s imported as %2$s.', 'flexible-shipping' ),
esc_html( $data['method_title'] ),
esc_html( $imported_shipping_method['method_title'] )
)
);
}
return $this->shipping_methods;
}
/**
* Create new shipping method.
*
* @param array $shipping_method CSV row.
*
* @return array
*/
private function get_new_shipping_method_params( array $shipping_method ) {
$new_shipping_method = array();
$new_shipping_method['method_enabled'] = 'no';
$method_title = $this->get_field_value( $shipping_method, 'method_title', __( '(no title)', 'flexible-shipping' ) );
$new_shipping_method['method_title'] = $this->get_new_method_title( $method_title );
$new_shipping_method['id'] = $this->flexible_shipping_method->shipping_method_next_id( $this->shipping_methods );
$new_shipping_method['id_for_shipping'] = $this->flexible_shipping_method->id . '_' . $this->flexible_shipping_method->instance_id . '_' . $new_shipping_method['id'];
$new_shipping_method['instance_id'] = $this->flexible_shipping_method->instance_id;
$new_shipping_method['woocommerce_method_instance_id'] = $this->flexible_shipping_method->instance_id;
$new_shipping_method['method_description'] = $this->get_field_value( $shipping_method, 'method_description' );
$new_shipping_method['method_free_shipping_requires'] = $this->get_field_value( $shipping_method, 'method_free_shipping_requires' );
$new_shipping_method['method_free_shipping'] = $this->get_field_price( $shipping_method, 'method_free_shipping' );
$new_shipping_method['method_free_shipping_ignore_discounts'] = $this->get_field_value( $shipping_method, 'method_free_shipping_ignore_discounts' );
$new_shipping_method['method_free_shipping_cart_notice'] = $this->get_field_value( $shipping_method, 'method_free_shipping_cart_notice' );
$new_shipping_method['method_max_cost'] = $this->get_field_price( $shipping_method, 'method_max_cost' );
$new_shipping_method['method_calculation_method'] = $this->get_field_value( $shipping_method, 'method_calculation_method' );
$new_shipping_method['cart_calculation'] = $this->get_field_value( $shipping_method, 'cart_calculation' );
$new_shipping_method['method_visibility'] = $this->get_field_value( $shipping_method, 'method_visibility', 'no' );
$new_shipping_method['method_default'] = $this->get_field_value( $shipping_method, 'method_default', 'no' );
$new_shipping_method['method_debug_mode'] = $this->get_field_value( $shipping_method, 'method_debug_mode', 'no' );
$new_shipping_method['method_integration'] = $this->get_field_value( $shipping_method, 'method_integration', 'no' );
$new_shipping_method['method_rules'] = $this->get_field_value( $shipping_method, 'method_rules', array() );
$method_free_shipping_label = $this->get_field_value( $shipping_method, 'method_free_shipping_label', null );
if ( null !== $method_free_shipping_label ) {
$new_shipping_method['method_free_shipping_label'] = $method_free_shipping_label;
}
/**
* Filters whether shipping rates for export.
*
* @param array $new_shipping_method .
* @param string $shipping_method .
* @param JSON $this .
*
* @since 3.17.0
*/
return apply_filters( 'flexible-shipping/importer/json/data', $new_shipping_method, $shipping_method, $this );
}
/**
* @param array $data .
* @param string $key .
* @param mixed $default .
*
* @return mixed
*/
private function get_field_value( $data, $key, $default = '' ) {
return isset( $data[ $key ] ) ? $data[ $key ] : $default;
}
/**
* @param array $data .
* @param string $key .
*
* @return string
*/
private function get_field_price( $data, $key ) {
return str_replace( ',', '.', $this->get_field_value( $data, $key, '' ) );
}
}