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.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 / ConditionsFactory.php
flexible-shipping / src / WPDesk / FS / TableRate / Rule / Condition Last commit date
Pro 2 weeks ago ConditionsFactory.php 2 weeks ago Price.php 2 weeks ago Weight.php 2 weeks ago
ConditionsFactory.php
131 lines
1 <?php
2 /**
3 * Class ConditionsFactory
4 *
5 * @package WPDesk\FS\TableRate\Rule\Condition
6 */
7
8 namespace WPDesk\FS\TableRate\Rule\Condition;
9
10 use WPDesk\FS\TableRate\Rule\Condition\Pro\CartLineItem;
11 use WPDesk\FS\TableRate\Rule\Condition\Pro\DayOfTheWeek;
12 use WPDesk\FS\TableRate\Rule\Condition\Pro\DimensionalWeight;
13 use WPDesk\FS\TableRate\Rule\Condition\Pro\Item;
14 use WPDesk\FS\TableRate\Rule\Condition\Pro\MaxDimension;
15 use WPDesk\FS\TableRate\Rule\Condition\Pro\Product;
16 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductCategory;
17 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductDimensionHeight;
18 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductDimensionLength;
19 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductDimensionWidth;
20 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductFieldRange;
21 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductFieldValue;
22 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductStockQuantity;
23 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductStockStatus;
24 use WPDesk\FS\TableRate\Rule\Condition\Pro\ProductTag;
25 use WPDesk\FS\TableRate\Rule\Condition\Pro\ShippingClass;
26 use WPDesk\FS\TableRate\Rule\Condition\Pro\ShippingCost;
27 use WPDesk\FS\TableRate\Rule\Condition\Pro\TimeOfTheDay;
28 use WPDesk\FS\TableRate\Rule\Condition\Pro\TotalOverallDimensions;
29 use WPDesk\FS\TableRate\Rule\Condition\Pro\UserRole;
30 use WPDesk\FS\TableRate\Rule\Condition\Pro\Volume;
31
32 /**
33 * Can provide rules conditions.
34 */
35 class ConditionsFactory {
36
37 /**
38 * @return Condition[]
39 */
40 public function get_conditions(): array {
41 $none = new None( 0 );
42 $price = new Price( 10 );
43 $weight = new Weight( 25 );
44
45 // Pro conditions.
46 $item = new Item( 15 );
47 $volume = new Volume( 35 );
48 $product = new Product( 30 );
49 $product_tag = new ProductTag( 45 );
50 $product_category = new ProductCategory( 50 );
51 $product_field_value = new ProductFieldValue( 55 );
52 $product_field_range = new ProductFieldRange( 56 );
53 $product_stock_quantity = new ProductStockQuantity( 60 );
54 $product_stock_status = new ProductStockStatus( \wc_get_product_stock_status_options(), 61 );
55 $shipping_cost = new ShippingCost( 100 );
56 $time_of_the_day = new TimeOfTheDay( 70 );
57 $max_dimension = new MaxDimension( 40 );
58 $product_length = new ProductDimensionLength( 41 );
59 $product_width = new ProductDimensionWidth( 42 );
60 $product_height = new ProductDimensionHeight( 43 );
61 $cart_line_item = new CartLineItem( 20 );
62 $shipping_class = new ShippingClass( 60 );
63 $day_of_the_week = new DayOfTheWeek( 75 );
64 $total_overall_dimensions = new TotalOverallDimensions( 40 );
65 $user_role = new UserRole( 40 );
66 $dimensional_weight = new DimensionalWeight( 30 );
67
68 $conditions = [
69 $none->get_condition_id() => $none,
70 $price->get_condition_id() => $price,
71 $weight->get_condition_id() => $weight,
72 $item->get_condition_id() => $item,
73 $volume->get_condition_id() => $volume,
74 $product->get_condition_id() => $product,
75 $product_tag->get_condition_id() => $product_tag,
76 $product_category->get_condition_id() => $product_category,
77 $time_of_the_day->get_condition_id() => $time_of_the_day,
78 $max_dimension->get_condition_id() => $max_dimension,
79 $product_length->get_condition_id() => $product_length,
80 $product_width->get_condition_id() => $product_width,
81 $product_height->get_condition_id() => $product_height,
82 $cart_line_item->get_condition_id() => $cart_line_item,
83 $shipping_class->get_condition_id() => $shipping_class,
84 $day_of_the_week->get_condition_id() => $day_of_the_week,
85 $total_overall_dimensions->get_condition_id() => $total_overall_dimensions,
86 $user_role->get_condition_id() => $user_role,
87 $dimensional_weight->get_condition_id() => $dimensional_weight,
88 $product_field_value->get_condition_id() => $product_field_value,
89 $product_field_range->get_condition_id() => $product_field_range,
90 $product_stock_quantity->get_condition_id() => $product_stock_quantity,
91 $product_stock_status->get_condition_id() => $product_stock_status,
92 $shipping_cost->get_condition_id() => $shipping_cost,
93 ];
94
95 $conditions = apply_filters( 'flexible_shipping_rule_conditions', $conditions );
96 $conditions = $this->filter_conditions( $conditions );
97
98 return $this->sort_conditions( $conditions );
99 }
100
101 /**
102 * @param Condition[] $conditions .
103 *
104 * @return Condition[]
105 */
106 private function filter_conditions( array $conditions ): array {
107 return array_filter(
108 $conditions,
109 function ( $condition ) {
110 return $condition instanceof Condition;
111 }
112 );
113 }
114
115 /**
116 * @param Condition[] $conditions .
117 *
118 * @return Condition[]
119 */
120 private function sort_conditions( array $conditions ): array {
121 uasort(
122 $conditions,
123 function ( Condition $condition1, Condition $condition2 ) {
124 return $condition1->get_priority() <=> $condition2->get_priority(); // phpcs:ignore.
125 }
126 );
127
128 return $conditions;
129 }
130 }
131