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 / Rule / TrackerData.php
flexible-shipping / src / WPDesk / FS / TableRate / Rule Last commit date
Condition 3 days ago Cost 3 days ago PreconfiguredScenarios 3 days ago SpecialAction 3 days ago TrackerData.php 3 days ago
TrackerData.php
186 lines
1 <?php
2 /**
3 * Class TrackerData
4 *
5 * @package WPDesk\FS\TableRate\Rule
6 */
7
8 namespace WPDesk\FS\TableRate\Rule;
9
10 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11
12 /**
13 * Can append rule data to tracker data.
14 */
15 class TrackerData implements Hookable {
16
17 const FIELD_OPERATOR = 'operator';
18 const FIELD_OPERATOR_COUNT = 'operator_count';
19 const FIELD_CONDITION_OPERATOR_COUNT = 'condition_operator_count';
20
21 /**
22 * Hooks.
23 */
24 public function hooks() {
25 add_filter( 'flexible-shipping/tracker/method-rule-data', array( $this, 'append_method_rule_data' ), 10, 2 );
26 }
27
28 /**
29 * @param array $tracker_data .
30 * @param array $rule_configuration .
31 *
32 * @return array
33 */
34 public function append_method_rule_data( $tracker_data, $rule_configuration ) {
35
36 $conditions = isset( $rule_configuration['conditions'] ) ? $rule_configuration['conditions'] : array( array( 'condition_id' => 'none' ) );
37 $tracker_data = $this->append_conditions_data( $tracker_data, $conditions );
38
39 $additional_costs = isset( $rule_configuration['additional_costs'] ) ? $rule_configuration['additional_costs'] : array();
40 $tracker_data = $this->append_additional_costs_data( $tracker_data, $additional_costs );
41
42 $special_action = ! empty( $rule_configuration['special_action'] ) ? $rule_configuration['special_action'] : 'none';
43 $tracker_data = $this->append_special_action_data( $tracker_data, $special_action );
44
45 if ( ! empty( $rule_configuration['cost_per_order'] ) ) {
46 $tracker_data['cost_per_order_count'] ++;
47 }
48
49 return $tracker_data;
50 }
51
52 /**
53 * @param array $tracker_data .
54 * @param array $conditions .
55 */
56 private function append_conditions_data( $tracker_data, $conditions ) {
57 $conditions_count = count( $conditions );
58 if ( empty( $tracker_data['conditions_per_rule'] ) ) {
59 $tracker_data['conditions_per_rule'] = array();
60 }
61 if ( empty( $tracker_data['conditions_per_rule'][ $conditions_count ] ) ) {
62 $tracker_data['conditions_per_rule'][ $conditions_count ] = 0;
63 }
64 $tracker_data['conditions_per_rule'][ $conditions_count ]++;
65
66 foreach ( $conditions as $condition ) {
67 $condition_id = isset( $condition['condition_id'] ) ? $condition['condition_id'] : false;
68 if ( $condition_id ) {
69 if ( empty( $tracker_data['based_on'][ $condition_id ] ) ) {
70 $tracker_data['based_on'][ $condition_id ] = 0;
71 }
72 $tracker_data['based_on'][ $condition_id ] ++;
73
74 if ( ! empty( $condition['min'] ) ) {
75 $tracker_data['min_count']++;
76 }
77
78 if ( ! empty( $condition['max'] ) ) {
79 $tracker_data['max_count']++;
80 }
81
82 if ( ! empty( $condition['shipping_class'] ) ) {
83 $shipping_class = $condition['shipping_class'];
84 if ( ! in_array( $shipping_class, array( 'all', 'any', 'none' ), true ) ) {
85 $shipping_class = 'shipping_class';
86 }
87 if ( empty( $tracker_data['shipping_class_option'][ $shipping_class ] ) ) {
88 $tracker_data['shipping_class_option'][ $shipping_class ] = 0;
89 }
90 $tracker_data['shipping_class_option'][ $shipping_class ] ++;
91 }
92
93 $tracker_data = $this->append_operator_data( $condition, $tracker_data, $condition_id );
94 }
95 }
96
97 return $tracker_data;
98 }
99
100 /**
101 * @param array $tracker_data .
102 * @param array $additional_costs .
103 *
104 * @return array
105 */
106 private function append_additional_costs_data( $tracker_data, $additional_costs ) {
107 $additional_costs_count = count( $additional_costs );
108 if ( empty( $tracker_data['additional_costs_per_rule'] ) ) {
109 $tracker_data['additional_costs_per_rule'] = array();
110 }
111 if ( empty( $tracker_data['additional_costs_per_rule'][ $additional_costs_count ] ) ) {
112 $tracker_data['additional_costs_per_rule'][ $additional_costs_count ] = 0;
113 }
114 $tracker_data['additional_costs_per_rule'][ $additional_costs_count ]++;
115
116 $tracker_data['additional_cost_count'] += $additional_costs_count;
117
118 if ( ! isset( $tracker_data['additional_costs'] ) ) {
119 $tracker_data['additional_costs'] = array();
120 }
121
122 foreach ( wp_list_pluck( $additional_costs, 'based_on' ) as $based_on ) {
123 if ( ! isset( $tracker_data['additional_costs'][ $based_on ] ) ) {
124 $tracker_data['additional_costs'][ $based_on ] = 0;
125 }
126
127 $tracker_data['additional_costs'][ $based_on ] ++;
128 }
129
130 return $tracker_data;
131 }
132
133 /**
134 * @param array $tracker_data .
135 * @param string $special_action .
136 *
137 * @return array
138 */
139 private function append_special_action_data( $tracker_data, $special_action ) {
140 if ( ! isset( $tracker_data['special_actions'] ) ) {
141 $tracker_data['special_actions'] = array();
142 }
143 if ( ! isset( $tracker_data['special_actions'][ $special_action ] ) ) {
144 $tracker_data['special_actions'][ $special_action ] = 0;
145 }
146 $tracker_data['special_actions'][ $special_action ]++;
147 if ( in_array( $special_action, array( 'stop', 'cancel' ), true ) ) {
148 $tracker_data[ $special_action . '_count' ]++;
149 }
150
151 return $tracker_data;
152 }
153
154 /**
155 * @param array $condition .
156 * @param array $tracker_data .
157 * @param string $condition_id .
158 *
159 * @return array
160 */
161 private function append_operator_data( $condition, array $tracker_data, $condition_id ) {
162 if ( ! empty( $condition[ self::FIELD_OPERATOR ] ) ) {
163 $operator = $condition[ self::FIELD_OPERATOR ];
164 if ( ! isset( $tracker_data[ self::FIELD_OPERATOR_COUNT ] ) ) {
165 $tracker_data[ self::FIELD_OPERATOR_COUNT ] = array();
166 }
167 if ( ! isset( $tracker_data[ self::FIELD_OPERATOR_COUNT ][ $operator ] ) ) {
168 $tracker_data[ self::FIELD_OPERATOR_COUNT ][ $operator ] = 0;
169 }
170 $tracker_data[ self::FIELD_OPERATOR_COUNT ][ $operator ] ++;
171
172 if ( ! isset( $tracker_data[ self::FIELD_CONDITION_OPERATOR_COUNT ] ) ) {
173 $tracker_data[ self::FIELD_CONDITION_OPERATOR_COUNT ] = array();
174 }
175 $condition_operator = $condition_id . '-' . $operator;
176 if ( ! isset( $tracker_data[ self::FIELD_CONDITION_OPERATOR_COUNT ][ $condition_operator ] ) ) {
177 $tracker_data[ self::FIELD_CONDITION_OPERATOR_COUNT ][ $condition_operator ] = 0;
178 }
179 $tracker_data[ self::FIELD_CONDITION_OPERATOR_COUNT ][ $condition_operator ] ++;
180 }
181
182 return $tracker_data;
183 }
184
185 }
186