PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.10.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.10.0
6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / src / WPDesk / FS / TableRate / Debug / NoShippingMethodsNotice.php
flexible-shipping / src / WPDesk / FS / TableRate / Debug Last commit date
DebugTracker.php 3 days ago MultipleShippingZonesMatchedSameTerritoryNotice.php 3 days ago MultipleShippingZonesMatchedSameTerritoryTracker.php 3 days ago NoShippingMethodsNotice.php 3 days ago
NoShippingMethodsNotice.php
130 lines
1 <?php
2 /**
3 * Class NoShippingMethodNotice
4 *
5 * @package WPDesk\FS\TableRate\Debug
6 */
7
8 namespace WPDesk\FS\TableRate\Debug;
9
10 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11 use WPDesk\FS\TableRate\ShippingMethodSingle;
12
13 /**
14 * Can display notice when no shipping methods are defined in shipping zone.
15 */
16 class NoShippingMethodsNotice implements Hookable {
17
18 /**
19 * @var bool
20 */
21 private $debug_mode_enabled;
22
23 /**
24 * NoShippingMethodsNotice constructor.
25 *
26 * @param bool $debug_mode_enabled .
27 */
28 public function __construct( $debug_mode_enabled ) {
29 $this->debug_mode_enabled = $debug_mode_enabled;
30 }
31
32 /**
33 * Hooks.
34 */
35 public function hooks() {
36 add_action( 'woocommerce_load_shipping_methods', array( $this, 'display_notice_if_needed_for_package' ) );
37 }
38
39 /**
40 * .
41 *
42 * @param array $package .
43 */
44 public function display_notice_if_needed_for_package( $package ) {
45 if ( ! empty( $package ) && $this->debug_mode_enabled ) {
46 $shipping_zone = \WC_Shipping_Zones::get_zone_matching_package( $package );
47 $shipping_methods = $shipping_zone->get_shipping_methods( true );
48 if ( ! $this->zone_has_flexible_shipping( $shipping_methods ) ) {
49 $this->add_notice(
50 $shipping_zone->get_zone_name(),
51 admin_url( 'admin.php?page=wc-settings&tab=shipping&zone_id=' . $shipping_zone->get_id() )
52 );
53 } elseif ( $this->are_not_flexible_shipping_methods_defined( $shipping_methods ) ) {
54 $this->add_notice(
55 $shipping_zone->get_zone_name(),
56 admin_url( 'admin.php?page=wc-settings&tab=shipping&instance_id=' . $this->get_flexible_shipping_instance_id( $shipping_methods ) )
57 );
58 }
59 }
60 }
61
62 /**
63 * .
64 *
65 * @param string $zone_name .
66 * @param string $link_url .
67 */
68 private function add_notice( $zone_name, $link_url ) {
69 wc_add_notice(
70 sprintf(
71 // Translators: shipping zone name and shipping method settings url.
72 __( 'No shipping method handled by Flexible Shipping found in the %1$s shipping zone. %2$sAdd shipping method →%3$s', 'flexible-shipping' ),
73 $zone_name,
74 '<a target="_blank" href="' . $link_url . '">',
75 '</a>'
76 ),
77 'notice'
78 );
79 }
80
81 /**
82 * @param array $shipping_methods .
83 *
84 * @return bool
85 */
86 private function zone_has_flexible_shipping( $shipping_methods ) {
87 foreach ( $shipping_methods as $shipping_method ) {
88 if ( $shipping_method instanceof \WPDesk_Flexible_Shipping || ( class_exists( 'WPDesk\FS\TableRate\ShippingMethodSingle' ) && $shipping_method instanceof ShippingMethodSingle ) ) {
89 return true;
90 }
91 }
92
93 return false;
94 }
95
96 /**
97 * @param array $shipping_methods .
98 *
99 * @return bool
100 */
101 private function are_not_flexible_shipping_methods_defined( $shipping_methods ) {
102 foreach ( $shipping_methods as $shipping_method ) {
103 if ( $shipping_method instanceof \WPDesk_Flexible_Shipping ) {
104 $flexible_shipping_methods = $shipping_method->get_shipping_methods();
105 if ( 0 === count( $shipping_method->get_shipping_methods() ) ) {
106 return true;
107 }
108 }
109 }
110
111 return false;
112 }
113
114 /**
115 * @param array $shipping_methods .
116 *
117 * @return int
118 */
119 private function get_flexible_shipping_instance_id( $shipping_methods ) {
120 foreach ( $shipping_methods as $shipping_method ) {
121 if ( $shipping_method instanceof \WPDesk_Flexible_Shipping ) {
122 return $shipping_method->get_instance_id();
123 }
124 }
125
126 return 0;
127 }
128
129 }
130