PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.12.1
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.12.1
6.12.1 6.12.0 6.11.0 6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / src / WPDesk / FS / TableRate / ImporterExporter / Importer / JSON.php
flexible-shipping / src / WPDesk / FS / TableRate / ImporterExporter / Importer Last commit date
Exception 1 week ago AbstractImporter.php 1 week ago CSV.php 1 week ago Importer.php 1 week ago ImporterFactory.php 1 week ago JSON.php 1 week ago
JSON.php
138 lines
1 <?php
2 /**
3 * JSON Importer
4 *
5 * @package WPDesk\FS\TableRate\Importer
6 */
7
8 namespace WPDesk\FS\TableRate\ImporterExporter\Importer;
9
10 use WC_Admin_Settings;
11 use WPDesk\FS\TableRate\ImporterExporter\Importer\Exception\FileNotExists;
12 use WPDesk\FS\TableRate\ImporterExporter\Importer\Exception\InvalidFile;
13 use WPDesk\FS\TableRate\ShippingMethod\CommonMethodSettings;
14
15 /**
16 * Class JSON
17 *
18 * @package WPDesk\FS\TableRate\Importer
19 */
20 class JSON extends AbstractImporter {
21 /**
22 * @return array|void
23 * @throws FileNotExists .
24 * @throws InvalidFile .
25 */
26 public function import() {
27 if ( ! file_exists( $this->file['tmp_name'] ) ) {
28 throw new FileNotExists( 'Uploaded file not exist.' );
29 }
30
31 $imported_data = file_get_contents( $this->file['tmp_name'] );
32
33 if ( ! $imported_data ) {
34 throw new FileNotExists( __( 'Uploaded file not exist.', 'flexible-shipping' ) );
35 }
36
37 $imported_shipping_methods = json_decode( $imported_data, true );
38
39 if ( empty( $imported_shipping_methods ) ) {
40 throw new InvalidFile( __( 'Sorry, there has been an error. The JSON file is invalid or incorrect file type.', 'flexible-shipping' ) );
41 }
42
43 foreach ( $imported_shipping_methods as $data ) {
44 if ( ! is_array( $data ) || ! isset( $data['id'] ) ) {
45 throw new InvalidFile( __( 'Sorry, there has been an error. The JSON file is invalid or incorrect file type.', 'flexible-shipping' ) );
46 }
47
48 $imported_shipping_method = $this->get_new_shipping_method_params( $data );
49
50 $this->shipping_methods[ $imported_shipping_method['id'] ] = map_deep( $imported_shipping_method, 'sanitize_text_field' );
51
52 WC_Admin_Settings::add_message(
53 sprintf(
54 // Translators: imported method title and method title.
55 __( 'Shipping method %1$s imported as %2$s.', 'flexible-shipping' ),
56 esc_html( $data['method_title'] ),
57 esc_html( $imported_shipping_method['method_title'] )
58 )
59 );
60 }
61
62 return $this->shipping_methods;
63 }
64
65 /**
66 * Create new shipping method.
67 *
68 * @param array $shipping_method CSV row.
69 *
70 * @return array
71 */
72 private function get_new_shipping_method_params( array $shipping_method ) {
73 $new_shipping_method = array();
74
75 $new_shipping_method['method_enabled'] = 'no';
76
77 $method_title = $this->get_field_value( $shipping_method, 'method_title', __( '(no title)', 'flexible-shipping' ) );
78 $new_shipping_method['method_title'] = $this->get_new_method_title( $method_title );
79
80 $new_shipping_method['id'] = $this->flexible_shipping_method->shipping_method_next_id( $this->shipping_methods );
81 $new_shipping_method['id_for_shipping'] = $this->flexible_shipping_method->id . '_' . $this->flexible_shipping_method->instance_id . '_' . $new_shipping_method['id'];
82 $new_shipping_method['instance_id'] = $this->flexible_shipping_method->instance_id;
83 $new_shipping_method['woocommerce_method_instance_id'] = $this->flexible_shipping_method->instance_id;
84 $new_shipping_method['method_description'] = $this->get_field_value( $shipping_method, 'method_description' );
85 $new_shipping_method[ CommonMethodSettings::METHOD_LOGO_ID ] = absint( $this->get_field_value( $shipping_method, CommonMethodSettings::METHOD_LOGO_ID, 0 ) );
86 $new_shipping_method['method_free_shipping_requires'] = $this->get_field_value( $shipping_method, 'method_free_shipping_requires' );
87 $new_shipping_method['method_free_shipping'] = $this->get_field_price( $shipping_method, 'method_free_shipping' );
88 $new_shipping_method['method_free_shipping_ignore_discounts'] = $this->get_field_value( $shipping_method, 'method_free_shipping_ignore_discounts' );
89 $new_shipping_method['method_free_shipping_cart_notice'] = $this->get_field_value( $shipping_method, 'method_free_shipping_cart_notice' );
90 $new_shipping_method['method_max_cost'] = $this->get_field_price( $shipping_method, 'method_max_cost' );
91 $new_shipping_method['method_calculation_method'] = $this->get_field_value( $shipping_method, 'method_calculation_method' );
92 $new_shipping_method['cart_calculation'] = $this->get_field_value( $shipping_method, 'cart_calculation' );
93 $new_shipping_method['method_visibility'] = $this->get_field_value( $shipping_method, 'method_visibility', 'no' );
94 $new_shipping_method['method_default'] = $this->get_field_value( $shipping_method, 'method_default', 'no' );
95 $new_shipping_method['method_debug_mode'] = $this->get_field_value( $shipping_method, 'method_debug_mode', 'no' );
96 $new_shipping_method['method_integration'] = $this->get_field_value( $shipping_method, 'method_integration', 'no' );
97 $new_shipping_method['method_rules'] = $this->get_field_value( $shipping_method, 'method_rules', array() );
98
99 $method_free_shipping_label = $this->get_field_value( $shipping_method, 'method_free_shipping_label', null );
100
101 if ( null !== $method_free_shipping_label ) {
102 $new_shipping_method['method_free_shipping_label'] = $method_free_shipping_label;
103 }
104
105 /**
106 * Filters whether shipping rates for export.
107 *
108 * @param array $new_shipping_method .
109 * @param string $shipping_method .
110 * @param JSON $this .
111 *
112 * @since 3.17.0
113 */
114 return apply_filters( 'flexible-shipping/importer/json/data', $new_shipping_method, $shipping_method, $this );
115 }
116
117 /**
118 * @param array $data .
119 * @param string $key .
120 * @param mixed $default .
121 *
122 * @return mixed
123 */
124 private function get_field_value( $data, $key, $default = '' ) {
125 return isset( $data[ $key ] ) ? $data[ $key ] : $default;
126 }
127
128 /**
129 * @param array $data .
130 * @param string $key .
131 *
132 * @return string
133 */
134 private function get_field_price( $data, $key ) {
135 return str_replace( ',', '.', $this->get_field_value( $data, $key, '' ) );
136 }
137 }
138