PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.11.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.11.0
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 2 weeks ago AbstractImporter.php 2 weeks ago CSV.php 2 weeks ago Importer.php 2 weeks ago ImporterFactory.php 2 weeks ago JSON.php 2 weeks 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