<?php /** * Helpers for Shipping method. * * @package WPDesk\FS\TableRate\NewRulesTablePointer */ namespace WPDesk\FS\Helpers; /** * Collection of helpers for Shipping method. */ class ShippingMethod { /** * Pattern of option with Flexible Shipping methods. * * @var string */ const FS_METHODS_OPTION_PREFIX = 'flexible_shipping_methods_%d'; /** * Checks if there are Flexible Shipping methods in the Shipping Zones. * * @param string $method_name Name of Shipping method. * * @return bool Status. */ public static function check_if_method_exists_in_zones( $method_name ) { $zones = \WC_Shipping_Zones::get_zones(); foreach ( $zones as $zone ) { $zone_instance = \WC_Shipping_Zones::get_zone( $zone['zone_id'] ); if ( self::check_if_method_exists_in_zone( $method_name, $zone_instance ) === true ) { return true; } } return false; } /** * Checks if there are Flexible Shipping methods in the Shipping Zone. * * @param string $method_name Name of Shipping method. * @param \WC_Shipping_Zone $zone_instance Instance of Shipping Zone. * * @return bool Status. */ private static function check_if_method_exists_in_zone( $method_name, $zone_instance ) { $zone_methods = $zone_instance->get_shipping_methods(); foreach ( $zone_methods as $zone_method ) { if ( $zone_method->id !== $method_name ) { continue; } $option_key = sprintf( self::FS_METHODS_OPTION_PREFIX, $zone_method->instance_id ); $shipping_methods = get_option( $option_key, [] ); if ( $shipping_methods ) { return true; } } return false; } }