<?php
/**
* ExporterData.
*
* @package WPDesk\FS\TableRate\ImporterExporter
*/
namespace WPDesk\FS\TableRate\ImporterExporter;
use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
/**
* Class Hooks
*/
class ExporterData implements Hookable {
/**
* @return void|null
*/
public function hooks() {
add_filter( 'flexible-shipping/exporter/data', array( $this, 'prepare_export_data' ), 10, 4 );
}
/**
* @param array $flexible_shipping_rates .
* @param string $instance_id .
* @param array $methods .
* @param Exporter\JSON $exporter .
*
* @return array
*/
public function prepare_export_data( $flexible_shipping_rates, $instance_id, $methods, $exporter ) {
$shipping_classes = array_flip( $exporter->wc_shipping_classes_hashmap );
foreach ( $flexible_shipping_rates as $id => $flexible_shipping_rate ) {
foreach ( $flexible_shipping_rate['method_rules'] as $method_rule_id => $method_rule ) {
foreach ( $method_rule['conditions'] as $condition_id => $condition ) {
if ( 'shipping_class' !== $condition['condition_id'] ) {
continue;
}
foreach ( $condition['shipping_class'] as $shipping_class_id => $shipping_class ) {
if ( in_array( $shipping_class, array( 'all', 'any', 'none' ), true ) ) {
continue;
}
$flexible_shipping_rates[ $id ]['method_rules'][ $method_rule_id ]['conditions'][ $condition_id ]['shipping_class'][ $shipping_class_id ] = $shipping_classes[ $shipping_class ];
}
}
}
}
return $flexible_shipping_rates;
}
}