TrackerData.php
41 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WPDesk\FS\TableRate\ShippingMethod\Timestamps; |
| 4 | |
| 5 | use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable; |
| 6 | |
| 7 | class TrackerData implements Hookable { |
| 8 | |
| 9 | public function hooks(): void { |
| 10 | add_filter( 'flexible-shipping/tracker/method-settings', [ $this, 'append_time_data_to_tracker' ], 10, 2 ); |
| 11 | } |
| 12 | |
| 13 | /** |
| 14 | * @param array $data |
| 15 | * @param array $instance_settings |
| 16 | * |
| 17 | * @return array |
| 18 | */ |
| 19 | public function append_time_data_to_tracker( $data, $instance_settings ) { |
| 20 | if ( ! is_array( $data ) || ! is_array( $instance_settings ) ) { |
| 21 | return $data; |
| 22 | } |
| 23 | |
| 24 | if ( isset( $instance_settings[ MethodTimestamps::CREATION_TIME_WITH_FREE ] ) && isset( $instance_settings[ MethodTimestamps::METHOD_RULES_UPDATE_TIME_WITH_FREE ] ) ) { |
| 25 | $time = $instance_settings[ MethodTimestamps::METHOD_RULES_UPDATE_TIME_WITH_FREE ] - $instance_settings[ MethodTimestamps::CREATION_TIME_WITH_FREE ]; |
| 26 | $data['rules_table_config_time_free'] = $this->append_time_data( $data['rules_table_configuration_time'] ?? [], $time ); |
| 27 | } |
| 28 | |
| 29 | return $data; |
| 30 | } |
| 31 | |
| 32 | private function append_time_data( array $data, int $time ): array { |
| 33 | $data['methods_count'] = ( $data['methods_count'] ?? 0 ) + 1; |
| 34 | $data['min_time'] = min( $data['min_time'] ?? $time, $time ); |
| 35 | $data['max_time'] = max( $data['max_time'] ?? $time, $time ); |
| 36 | $data['avg_time'] = ( (float) ( ( $data['avg_time'] ?? 0.0 ) + $time ) ) / $data['methods_count']; |
| 37 | |
| 38 | return $data; |
| 39 | } |
| 40 | } |
| 41 |