<?php namespace WPDesk\ShowDecision\WooCommerce; use WPDesk\ShowDecision\ShouldShowStrategy; class ShippingMethodInstanceStrategy implements ShouldShowStrategy { private \WC_Shipping_Zones $shipping_zones; private string $method_id; public function __construct(\WC_Shipping_Zones $shipping_zones, string $method_id) { $this->shipping_zones = $shipping_zones; $this->method_id = $method_id; } public function shouldDisplay(): bool { if ($this->isInShippingSettings()) { if (isset($_GET['instance_id'])) { $shipping_method = $this->shipping_zones::get_shipping_method(sanitize_key($_GET['instance_id'])); if ($shipping_method instanceof \WC_Shipping_Method) { return $shipping_method->id === $this->method_id; } } } return false; } private function isInShippingSettings() : bool { if ($this->isGetParameterWithValue('page', 'wc-settings') && $this->isGetParameterWithValue('tab', 'shipping')) { return \true; } return \false; } private function isGetParameterWithValue(string $parameter, string $value) : bool { return isset($_GET[$parameter]) && $_GET[$parameter] === $value; } }