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.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 / Rule / Condition / Price.php
flexible-shipping / src / WPDesk / FS / TableRate / Rule / Condition Last commit date
Pro 4 days ago ConditionsFactory.php 4 days ago Price.php 4 days ago Weight.php 4 days ago
Price.php
196 lines
1 <?php
2 /**
3 * Class Price
4 *
5 * @package WPDesk\FS\TableRate\Rule\Condition
6 */
7
8 namespace WPDesk\FS\TableRate\Rule\Condition;
9
10 use FSVendor\WPDesk\Forms\Field;
11 use Psr\Log\LoggerInterface;
12 use WPDesk\FS\TableRate\Rule\ShippingContents\ShippingContents;
13
14 /**
15 * Price condition.
16 */
17 if ( defined( 'FLEXIBLE_SHIPPING_PSR_NOT_PREFIXED' ) && FLEXIBLE_SHIPPING_PSR_NOT_PREFIXED ) {
18 class Price extends AbstractCondition {
19
20 const MIN = 'min';
21 const MAX = 'max';
22
23 const CONDITION_ID = 'value';
24
25 /**
26 * Price constructor.
27 *
28 * @param int $priority .
29 */
30 public function __construct( $priority = 10 ) {
31 $this->condition_id = self::CONDITION_ID;
32 $this->name = __( 'Price', 'flexible-shipping' );
33 $this->description = __( 'Shipping cost based on the cart total or package value', 'flexible-shipping' );
34 $this->group = __( 'Cart', 'flexible-shipping' );
35 $this->priority = $priority;
36 }
37
38 /**
39 * @param array $condition_settings .
40 * @param ShippingContents $contents .
41 * @param LoggerInterface $logger .
42 *
43 * @return bool
44 */
45 public function is_condition_matched( array $condition_settings, ShippingContents $contents, LoggerInterface $logger ) {
46 $min = (float) ( isset( $condition_settings[ self::MIN ] ) && 0 !== strlen( $condition_settings[ self::MIN ] ) ? $condition_settings[ self::MIN ] : 0 );
47 $max = (float) ( isset( $condition_settings[ self::MAX ] ) && 0 !== strlen( $condition_settings[ self::MAX ] ) ? $condition_settings[ self::MAX ] : INF );
48 $min = (float) apply_filters( 'flexible_shipping_value_in_currency', $min, $min );
49 if ( $max !== INF ) {
50 $max = (float) apply_filters( 'flexible_shipping_value_in_currency', $max, $max );
51 }
52
53 $contents_cost = $this->get_contents_cost( $contents );
54
55 $condition_matched = $contents_cost >= $min && $contents_cost <= $max;
56
57 $logger->debug( $this->format_for_log( $condition_settings, $condition_matched, $contents_cost ) );
58
59 return $condition_matched;
60 }
61
62 /**
63 * @param ShippingContents $contents .
64 *
65 * @return float
66 */
67 protected function get_contents_cost( ShippingContents $contents ) {
68 $contents_cost =
69 /**
70 * Can modify contents cost passed to Price (value) condition.
71 *
72 * @param float $contents_cost Contents cost.
73 *
74 * @since 4.1.1
75 */
76 apply_filters( 'flexible-shipping/condition/contents_value', $contents->get_contents_cost() );
77
78 return (float) $contents_cost;
79 }
80
81 /**
82 * @return Field[]
83 */
84 public function get_fields() {
85 return [
86 ( new Field\InputNumberField() )
87 ->set_name( self::MIN )
88 ->add_class( 'wc_input_decimal' )
89 ->add_class( 'hs-beacon-search' )
90 ->add_class( 'parameter_min' )
91 ->add_data( 'beacon_search', __( 'price is from', 'flexible-shipping' ) )
92 ->set_placeholder( __( 'min', 'flexible-shipping' ) )
93 ->set_label( __( 'is from', 'flexible-shipping' ) ),
94 ( new Field\InputNumberField() )
95 ->set_name( self::MAX )
96 ->add_class( 'wc_input_decimal' )
97 ->add_class( 'hs-beacon-search' )
98 ->add_class( 'parameter_max' )
99 ->add_data( 'beacon_search', __( 'price to', 'flexible-shipping' ) )
100 ->set_placeholder( __( 'max', 'flexible-shipping' ) )
101 ->set_label( __( 'to', 'flexible-shipping' ) )
102 ->add_data( 'suffix', get_woocommerce_currency_symbol() ),
103 ];
104 }
105 }
106 } else {
107 class Price extends AbstractCondition {
108
109 const MIN = 'min';
110 const MAX = 'max';
111
112 const CONDITION_ID = 'value';
113
114 /**
115 * Price constructor.
116 *
117 * @param int $priority .
118 */
119 public function __construct( $priority = 10 ) {
120 $this->condition_id = self::CONDITION_ID;
121 $this->name = __( 'Price', 'flexible-shipping' );
122 $this->description = __( 'Shipping cost based on the cart total or package value', 'flexible-shipping' );
123 $this->group = __( 'Cart', 'flexible-shipping' );
124 $this->priority = $priority;
125 }
126
127 /**
128 * @param array $condition_settings .
129 * @param ShippingContents $contents .
130 * @param LoggerInterface $logger .
131 *
132 * @return bool
133 */
134 public function is_condition_matched( array $condition_settings, ShippingContents $contents, $logger ) {
135 $min = (float) ( isset( $condition_settings[ self::MIN ] ) && 0 !== strlen( $condition_settings[ self::MIN ] ) ? $condition_settings[ self::MIN ] : 0 );
136 $max = (float) ( isset( $condition_settings[ self::MAX ] ) && 0 !== strlen( $condition_settings[ self::MAX ] ) ? $condition_settings[ self::MAX ] : INF );
137 $min = (float) apply_filters( 'flexible_shipping_value_in_currency', $min, $min );
138 if ( $max !== INF ) {
139 $max = (float) apply_filters( 'flexible_shipping_value_in_currency', $max, $max );
140 }
141
142 $contents_cost = $this->get_contents_cost( $contents );
143
144 $condition_matched = $contents_cost >= $min && $contents_cost <= $max;
145
146 $logger->debug( $this->format_for_log( $condition_settings, $condition_matched, $contents_cost ) );
147
148 return $condition_matched;
149 }
150
151 /**
152 * @param ShippingContents $contents .
153 *
154 * @return float
155 */
156 protected function get_contents_cost( ShippingContents $contents ) {
157 $contents_cost =
158 /**
159 * Can modify contents cost passed to Price (value) condition.
160 *
161 * @param float $contents_cost Contents cost.
162 *
163 * @since 4.1.1
164 */
165 apply_filters( 'flexible-shipping/condition/contents_value', $contents->get_contents_cost() );
166
167 return (float) $contents_cost;
168 }
169
170 /**
171 * @return Field[]
172 */
173 public function get_fields() {
174 return [
175 ( new Field\InputNumberField() )
176 ->set_name( self::MIN )
177 ->add_class( 'wc_input_decimal' )
178 ->add_class( 'hs-beacon-search' )
179 ->add_class( 'parameter_min' )
180 ->add_data( 'beacon_search', __( 'price is from', 'flexible-shipping' ) )
181 ->set_placeholder( __( 'min', 'flexible-shipping' ) )
182 ->set_label( __( 'is from', 'flexible-shipping' ) ),
183 ( new Field\InputNumberField() )
184 ->set_name( self::MAX )
185 ->add_class( 'wc_input_decimal' )
186 ->add_class( 'hs-beacon-search' )
187 ->add_class( 'parameter_max' )
188 ->add_data( 'beacon_search', __( 'price to', 'flexible-shipping' ) )
189 ->set_placeholder( __( 'max', 'flexible-shipping' ) )
190 ->set_label( __( 'to', 'flexible-shipping' ) )
191 ->add_data( 'suffix', get_woocommerce_currency_symbol() ),
192 ];
193 }
194 }
195 }
196