TrackerData.php
54 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WPDesk\FS\TableRate\AI; |
| 4 | |
| 5 | use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable; |
| 6 | |
| 7 | /** |
| 8 | * Can append rule data to tracker data. |
| 9 | */ |
| 10 | class TrackerData implements Hookable { |
| 11 | |
| 12 | /** |
| 13 | * Hooks. |
| 14 | */ |
| 15 | public function hooks(): void { |
| 16 | add_filter( 'flexible-shipping/tracker/method-settings', [ $this, 'append_ai_data' ], 10, 2 ); |
| 17 | } |
| 18 | |
| 19 | /** |
| 20 | * @param array $data |
| 21 | * @param array $instance_settings |
| 22 | * |
| 23 | * @return array |
| 24 | */ |
| 25 | public function append_ai_data( $data, array $instance_settings ) { |
| 26 | if ( ! is_array( $data ) || ! is_array( $instance_settings ) ) { |
| 27 | return $data; |
| 28 | } |
| 29 | |
| 30 | $data['rules_table_ai'] = $this->append_data( $data['rules_table_ai'] ?? [], $instance_settings ); |
| 31 | |
| 32 | return $data; |
| 33 | } |
| 34 | |
| 35 | /** |
| 36 | * @param $data |
| 37 | * @param $instance_settings |
| 38 | * |
| 39 | * @return array |
| 40 | */ |
| 41 | private function append_data( $data, $instance_settings ) { |
| 42 | foreach ( TrackerDataOnShippingMethodSaver::FIELDS as $field ) { |
| 43 | if ( ! isset( $data[ $field ] ) ) { |
| 44 | $data[ $field ] = 0; |
| 45 | } |
| 46 | if ( isset( $instance_settings[ $field ] ) ) { |
| 47 | ++$data[ $field ]; |
| 48 | } |
| 49 | } |
| 50 | |
| 51 | return $data; |
| 52 | } |
| 53 | } |
| 54 |