Skip to content

Commit 50ad06c

Browse files
authored
Merge pull request #134 from BeAPI/issue/72879
Issue/72879
2 parents 05f4352 + 660470c commit 50ad06c

17 files changed

+962
-223
lines changed

src/Addons/Addons.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,10 @@ class Addons {
3636
*/
3737
private $chained_products_plugin;
3838

39-
/**
40-
* @var ASTPlugin
41-
*/
42-
private $ast_plugin;
43-
44-
/**
45-
* @var PhWoocommerceShipmentTrackingProPlugin
46-
*/
47-
private $woocommerce_shipment_tracking_pro;
48-
4939
public function __construct() {
5040
$this->shipping = new Shipping();
5141
$this->inventory = new Inventory();
5242
$this->marketplaces = new Marketplaces();
5343
$this->chained_products_plugin = new ChainedProducts();
54-
$this->ast_plugin = new ASTPlugin();
55-
$this->woocommerce_shipment_tracking_pro = new PhWoocommerceShipmentTrackingProPlugin();
5644
}
5745
}

src/Addons/Plugins/ASTPlugin/ASTPlugin.php

Lines changed: 0 additions & 95 deletions
This file was deleted.

src/Addons/Plugins/PhWoocommerceShipmentTrackingProPlugin/PhWoocommerceShipmentTrackingProPlugin.php

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/Admin/Notices.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
class Notices {
1515

1616
public function __construct() {
17+
add_action( 'admin_notices', array( $this, 'unavailable_selected_shipping_tracking_provider' ) );
1718
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
1819
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
1920
}
@@ -66,4 +67,27 @@ public function display_notice() {
6667
<?php
6768
}
6869

70+
public function unavailable_selected_shipping_tracking_provider(): void {
71+
$manager = ShoppingFeedHelper::wc_tracking_provider_manager();
72+
$selected_provider = $manager->get_selected_provider( false );
73+
if ( ! $selected_provider->is_available() ) {
74+
?>
75+
<div class="notice notice-error">
76+
<p>
77+
<span class="dashicons dashicons-warning"></span>
78+
<?php
79+
echo wp_kses_post(
80+
sprintf(
81+
// translators: 1: the provider name, 2: the plugin settings link
82+
__( 'The selected shipment tracking provider <strong>"%1$s"</strong> is not available. Please go the <a href="%2$s">shipping settings</a> to choose a new one.', 'shopping-feed' ),
83+
$selected_provider->name(),
84+
add_query_arg( 'tab', 'shipping-settings', ShoppingFeedHelper::get_setting_link() )
85+
)
86+
);
87+
?>
88+
</p>
89+
</div>
90+
<?php
91+
}
92+
}
6993
}

src/Admin/Options.php

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use ShoppingFeed\ShoppingFeedWC\Orders\Operations;
1111
use ShoppingFeed\ShoppingFeedWC\Sdk\Sdk;
1212
use ShoppingFeed\ShoppingFeedWC\Orders\Orders;
13+
use ShoppingFeed\ShoppingFeedWC\ShipmentTracking\ShipmentTrackingManager;
1314
use ShoppingFeed\ShoppingFeedWC\ShoppingFeedHelper;
1415
use ShoppingFeed\ShoppingFeedWC\Admin;
1516

@@ -1232,25 +1233,44 @@ function () {
12321233
},
12331234
self::SF_SHIPPING_SETTINGS_PAGE
12341235
);
1236+
12351237
add_settings_field(
1236-
'shipping_is_compatible_with_addons',
1237-
__( 'Retrieval mode', 'shopping-feed' ),
1238+
'shipping_tracking_provider',
1239+
__( 'Tracking provider', 'shopping-feed' ),
12381240
function () {
1241+
$manager = ShoppingFeedHelper::wc_tracking_provider_manager();
1242+
$selected_provider = $this->sf_shipping_options['tracking_provider'] ?? '';
12391243
?>
1240-
<select id="retrieval_mode"
1241-
name="<?php echo esc_html( sprintf( '%s[retrieval_mode]', self::SF_SHIPPING_OPTIONS ) ); ?>">
1242-
<option value="ADDONS"
1243-
<?php selected( 'ADDONS', $this->sf_shipping_options['retrieval_mode'] ? $this->sf_shipping_options['retrieval_mode'] : false ); ?>>
1244-
Addons
1245-
</option>
1246-
<option value="METAS"
1247-
<?php selected( 'METAS', $this->sf_shipping_options['retrieval_mode'] ? $this->sf_shipping_options['retrieval_mode'] : false ); ?>>
1248-
Métas
1244+
<select id="tracking_provider" name="<?php echo esc_html( sprintf( '%s[tracking_provider]', self::SF_SHIPPING_OPTIONS ) ); ?>">
1245+
<option value=""><?php esc_html_e( 'Disable', 'shopping-feed' ); ?></option>
1246+
<?php foreach ( $manager->get_providers() as $provider ) : ?>
1247+
<option value="<?php echo esc_attr( $provider->id() ); ?>"
1248+
<?php selected( $selected_provider, $provider->id() ); ?>
1249+
<?php disabled( ! $provider->is_available() ); ?>>
1250+
<?php echo esc_html( $provider->name() ); ?>
1251+
<?php
1252+
if ( ! $provider->is_available() ) {
1253+
echo esc_html(
1254+
sprintf(
1255+
' (%s)',
1256+
__( 'not installed/activated ', 'shopping-feed' )
1257+
)
1258+
);
1259+
}
1260+
?>
12491261
</option>
1262+
<?php endforeach; ?>
12501263
</select>
1264+
<?php if ( ! $manager->get_selected_provider( false )->is_available() ) : ?>
1265+
<p class="description"
1266+
id="tagline-description">
1267+
<span class="dashicons dashicons-warning"></span>
1268+
<strong><?php esc_attr_e( 'The selected provider is not available.', 'shopping-feed' ); ?></strong>
1269+
</p>
1270+
<?php endif; ?>
12511271
<p class="description"
12521272
id="tagline-description">
1253-
<?php echo esc_attr_e( 'How shipping information will be retrieved', 'shopping-feed' ); ?>
1273+
<?php esc_attr_e( 'Choose the provider used to retrieve tracking information.', 'shopping-feed' ); ?>
12541274
</p>
12551275
<?php
12561276
},
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
namespace ShoppingFeed\ShoppingFeedWC\ShipmentTracking\Provider;
4+
5+
use ShoppingFeed\ShoppingFeedWC\ShipmentTracking\ShipmentTrackingData;
6+
use ShoppingFeed\ShoppingFeedWC\ShipmentTracking\ShipmentTrackingProvider;
7+
8+
/**
9+
* Provider for the Advanced Shipment Tracking / Advanced Shipment Tracking Pro plugin.
10+
*/
11+
class AdvancedShipmentTracking implements ShipmentTrackingProvider {
12+
13+
/**
14+
* @inerhitDoc
15+
*/
16+
public function id(): string {
17+
return 'advanced_shipment_tracking';
18+
}
19+
20+
/**
21+
* @inerhitDoc
22+
*/
23+
public function name(): string {
24+
return 'Advanced Shipment Tracking / Advanced Shipment Tracking Pro';
25+
}
26+
27+
/**
28+
* @inerhitDoc
29+
*/
30+
public function is_available(): bool {
31+
return defined( 'SHIPMENT_TRACKING_PATH' );
32+
}
33+
34+
/**
35+
* @inheritDoc
36+
*/
37+
public function get_tracking_data( \WC_Order $order ): ShipmentTrackingData {
38+
$tracking_data = new ShipmentTrackingData();
39+
$tracking_info = [];
40+
if ( function_exists( 'ast_get_tracking_items' ) ) { // AST >= 3.0 & AST Pro
41+
$tracking_info = ast_get_tracking_items( $order->get_id() );
42+
} elseif ( class_exists( '\WC_Advanced_Shipment_Tracking_Actions' ) ) { // AST < 3.0
43+
$ast = \WC_Advanced_Shipment_Tracking_Actions::get_instance();
44+
$tracking_info = $ast->get_tracking_items( $order->get_id(), true );
45+
}
46+
47+
if ( is_array( $tracking_info ) ) {
48+
foreach ( $tracking_info as $tracking_item ) {
49+
$tracking_data->add_tracking_data(
50+
$tracking_item['tracking_number'],
51+
$tracking_item['formatted_tracking_link']
52+
);
53+
}
54+
}
55+
56+
return $tracking_data;
57+
}
58+
}

0 commit comments

Comments
 (0)