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 / ShippingMethodsIntegration / SettingsFields.php
flexible-shipping / src / WPDesk / FS / TableRate / ShippingMethodsIntegration Last commit date
Integration.php 3 days ago OrderMetaData.php 3 days ago SettingsFields.php 3 days ago ShippingRate.php 3 days ago Tracker.php 3 days ago
SettingsFields.php
161 lines
1 <?php
2
3 namespace WPDesk\FS\TableRate\ShippingMethodsIntegration;
4
5 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
6 use WPDesk\FS\TableRate\DefaultRulesSettings;
7 use WPDesk\FS\TableRate\RulesSettingsField;
8
9 /**
10 * Class SettingsFields
11 */
12 class SettingsFields implements Hookable {
13
14 const SETTING_METHOD_RULES = 'fs_method_rules';
15 const FS_CALCULATION_ENABLED = 'fs_calculation_enabled';
16
17 public function hooks() {
18 add_filter( 'woocommerce_generate_' . RulesSettingsField::FIELD_TYPE . '_html', [ $this, 'generate_shipping_rules_html' ], 10, 4 );
19 add_filter( 'woocommerce_shipping_methods', [ $this, 'add_fields' ], PHP_INT_MAX );
20 add_filter( 'woocommerce_shipping_method_supports', [ $this, 'remove_modal_settings_from_shipping_methods' ], 10, 3 );
21 }
22
23 /**
24 * @param bool $supports
25 * @param string $feature
26 * @param \WC_Shipping_Method $shipping_method
27 *
28 * @return bool
29 */
30 public function remove_modal_settings_from_shipping_methods( $supports, $feature, $shipping_method ) {
31 if ( isset( $_GET['page'] ) && $_GET['page'] === 'wc-settings'
32 && isset( $_GET['tab'] ) && $_GET['tab'] === 'shipping'
33 && isset( $_GET['instance_id'] )
34 ) {
35 if ( $feature === 'instance-settings-modal' ) {
36 return false;
37 }
38 }
39 if ( in_array( $shipping_method->id ?? '', $this->get_allowed_shipping_methods_instance_settings(), true ) ) {
40 if ( $feature === 'instance-settings-modal' ) {
41 return false;
42 }
43 }
44 return $supports;
45 }
46
47 /**
48 * @param array $methods
49 *
50 * @return array
51 */
52 public function add_fields( $methods ) {
53 foreach ( $methods as $shipping_method => $class ) {
54 if ( ! in_array( $shipping_method, $this->get_not_allowed_shipping_methods_instance_settings(), true ) ) {
55 add_filter( 'woocommerce_shipping_instance_form_fields_' . $shipping_method, [ $this, 'add_table_rate_fields' ], PHP_INT_MAX );
56 }
57 if ( in_array( $shipping_method, $this->get_allowed_shipping_methods_global_settings(), true ) ) {
58 add_filter( 'woocommerce_settings_api_form_fields_' . $shipping_method, [ $this, 'add_table_rate_fields' ], PHP_INT_MAX );
59 }
60 }
61
62 return $methods;
63 }
64
65 private function get_not_allowed_shipping_methods_instance_settings() {
66 return apply_filters(
67 'flexible-shipping/integration/not-allowed-shipping-methods-instance-settings',
68 [
69 'flexible_shipping_single',
70 'free_shipping',
71 'box_now_delivery',
72 'mondialrelay_official_shipping',
73 ]
74 );
75 }
76
77 private function get_allowed_shipping_methods_instance_settings() {
78 return apply_filters(
79 'flexible-shipping/integration/allowed-shipping-methods-instance-settings',
80 [
81 'flat_rate',
82 ]
83 );
84 }
85
86 private function get_allowed_shipping_methods_global_settings() {
87 return apply_filters(
88 'flexible-shipping/integration/allowed-shipping-methods-global-settings',
89 []
90 );
91 }
92
93 /**
94 * @param string $field_html
95 * @param string $key
96 * @param array $data
97 * @param \WC_Shipping_Method $shipping_method
98 *
99 * @return string
100 */
101 public function generate_shipping_rules_html( $field_html, $key, $data, $shipping_method ): string {
102 $title = $data['title'];
103 $field_key = $shipping_method->plugin_id . $shipping_method->id . '_' . self::SETTING_METHOD_RULES;
104 $rules_settings = new RulesSettingsField(
105 $field_key,
106 $field_key,
107 $title,
108 [],
109 json_decode( $shipping_method->get_option( self::SETTING_METHOD_RULES, json_encode( ( new DefaultRulesSettings() )->get_normalized_settings() ) ), true ),
110 $shipping_method->instance_settings
111 );
112
113 return $rules_settings->render();
114 }
115
116 /**
117 * @param array $fields
118 *
119 * @return array
120 */
121 public function add_table_rate_fields( $fields ) {
122 if ( ! is_array( $fields ) || empty( $fields ) ) {
123
124 return $fields;
125 }
126 $fields['fs_method_rules_title'] = [
127 'type' => 'title',
128 'title' => __( 'Additional costs by Flexible Shipping Table Rate', 'flexible-shipping' ),
129 'default' => '',
130 ];
131 $fields[ self::FS_CALCULATION_ENABLED ] = [
132 'title' => __( 'Additional Costs', 'flexible-shipping' ),
133 'type' => 'checkbox',
134 'label' => __( 'Enable Flexible Shipping Rules Table', 'flexible-shipping' ),
135 'default' => 'no',
136 'class' => 'fs-costs-calculation-enabled',
137 ];
138 $fields[ self::SETTING_METHOD_RULES ] = [
139 'title' => __( 'Shipping Cost Calculation Rules', 'flexible-shipping' ),
140 'type' => RulesSettingsField::FIELD_TYPE,
141 'sanitize_callback' => [ self::class, 'sanitize_shipping_rules' ],
142 'default' => json_encode( ( new DefaultRulesSettings() )->get_normalized_settings() ),
143 ];
144
145 return $fields;
146 }
147
148 /**
149 * @param array $value
150 *
151 * @return string
152 */
153 public static function sanitize_shipping_rules( $value ) {
154 if ( is_array( $value ) ) {
155 return json_encode( $value );
156 } else {
157 return $value;
158 }
159 }
160 }
161