PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.10.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.10.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 / ShippingMethod / Convert / ConvertAction.php
flexible-shipping / src / WPDesk / FS / TableRate / ShippingMethod / Convert Last commit date
views 3 days ago ConvertAction.php 3 days ago ConvertNotice.php 3 days ago ConvertTracker.php 3 days ago
ConvertAction.php
138 lines
1 <?php
2 /**
3 * Class ConvertAction
4 *
5 * @package WPDesk\FS\TableRate\ShippingMethod\Convert
6 */
7
8 namespace WPDesk\FS\TableRate\ShippingMethod\Convert;
9
10 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11 use WC_Shipping_Zone;
12 use WC_Shipping_Zones;
13 use WPDesk\FS\TableRate\ShippingMethod\Management\ShippingMethodManagement;
14 use WPDesk\FS\TableRate\ShippingMethodSingle;
15 use WPDesk_Flexible_Shipping;
16
17 /**
18 * Action for convert Group Shipping Method.
19 */
20 class ConvertAction implements Hookable {
21 const AJAX_ACTION = 'flexible_shipping_process_converting';
22 const AJAX_NONCE = 'flexible_shipping_process_converting';
23
24 /**
25 * @var ShippingMethodManagement
26 */
27 private $shipping_method_management;
28
29 /**
30 * @param ShippingMethodManagement $shipping_method_management
31 */
32 public function __construct( ShippingMethodManagement $shipping_method_management ) {
33 $this->shipping_method_management = $shipping_method_management;
34 }
35
36 /**
37 * Hooks.
38 */
39 public function hooks() {
40 add_action( 'wp_ajax_' . self::AJAX_ACTION, [ $this, 'ajax_run_convert' ] );
41 }
42
43 /**
44 * Process convert.
45 */
46 public function ajax_run_convert() {
47 check_ajax_referer( self::AJAX_NONCE );
48 if ( ! current_user_can( 'manage_woocommerce' ) ) {
49 wp_send_json_error();
50 }
51
52 $instance_id = filter_input( INPUT_GET, 'instance_id', FILTER_VALIDATE_INT );
53
54 if ( ! $instance_id ) {
55 return;
56 }
57
58 /** @var WPDesk_Flexible_Shipping $shipping_method */
59 $shipping_method = WC_Shipping_Zones::get_shipping_method( $instance_id );
60
61 if ( ! $shipping_method instanceof WPDesk_Flexible_Shipping ) {
62 return;
63 }
64
65 /** @var WC_Shipping_Zone $zone */
66 $zone = WC_Shipping_Zones::get_zone_by( 'instance_id', $instance_id );
67
68 $shipping_methods = $shipping_method->get_shipping_methods();
69
70 // Shipping method orders.
71 $shipping_method_order = $this->shipping_method_management->get_shipping_method_order( $instance_id );
72 $this->shipping_method_management->update_shipping_methods_order( $zone->get_id(), $shipping_method_order, count( $shipping_methods ) );
73
74 foreach ( $shipping_methods as $single_shipping_method ) {
75 $single_shipping_method_instance_id = $this->add_new_shipping_method_to_zone( $zone, $single_shipping_method, $shipping_method );
76
77 $method_status = $shipping_method->is_enabled() ? isset( $single_shipping_method['method_enabled'] ) && 'yes' === $single_shipping_method['method_enabled'] : false;
78
79 $this->shipping_method_management->set_shipping_method_status( $single_shipping_method_instance_id, $method_status, $zone );
80 $this->shipping_method_management->update_shipping_method_field( $single_shipping_method_instance_id, 'method_order', ++$shipping_method_order );
81
82 do_action( 'flexible-shipping/group-method/converted-single-method', $single_shipping_method_instance_id, $single_shipping_method );
83 }
84
85 // Turn off current Flexible Shipping Group Method.
86 $this->shipping_method_management->set_shipping_method_status( $instance_id, false, $zone );
87 $shipping_method->set_as_converted();
88
89 do_action( 'flexible-shipping/group-method/converted-method', $shipping_method );
90
91 wp_redirect( $this->get_redirect_url_success_convert( $zone->get_id() ) );
92 die();
93 }
94
95 /**
96 * @param WC_Shipping_Zone $zone .
97 * @param array $old_shipping_method_settings .
98 * @param WPDesk_Flexible_Shipping $old_shipping_method .
99 *
100 * @return int
101 */
102 private function add_new_shipping_method_to_zone( WC_Shipping_Zone $zone, array $old_shipping_method_settings, WPDesk_Flexible_Shipping $old_shipping_method ): int {
103 $instance_id = $zone->add_shipping_method( ShippingMethodSingle::SHIPPING_METHOD_ID );
104
105 /** @var ShippingMethodSingle $shipping_method . */
106 $shipping_method = WC_Shipping_Zones::get_shipping_method( $instance_id );
107 $shipping_method_key = $shipping_method->get_instance_option_key();
108
109 if ( ! is_array( $old_shipping_method_settings ) ) {
110 $old_shipping_method_settings = [];
111 }
112
113 $old_shipping_method_settings['tax_status'] = $old_shipping_method->get_instance_option( 'tax_status' );
114
115 // Add default options.
116 update_option( $shipping_method_key, $old_shipping_method_settings );
117
118 return $instance_id;
119 }
120
121 /**
122 * @param int $zone_id .
123 *
124 * @return string
125 */
126 private function get_redirect_url_success_convert( int $zone_id ): string {
127 return add_query_arg(
128 [
129 'page' => 'wc-settings',
130 'tab' => 'shipping',
131 'converted' => '1',
132 'zone_id' => $zone_id,
133 ],
134 admin_url( 'admin.php' )
135 );
136 }
137 }
138