ACSCourierShippingProvider.php
3 months ago
AbstractShippingProvider.php
3 months ago
AmazonLogisticsShippingProvider.php
3 months ago
AnPostShippingProvider.php
3 months ago
ArasKargoShippingProvider.php
3 months ago
AustraliaPostShippingProvider.php
3 months ago
AzerpostShippingProvider.php
3 months ago
BartoliniBRTShippingProvider.php
3 months ago
BelpochtaShippingProvider.php
3 months ago
BpostShippingProvider.php
3 months ago
BulgarianPostsShippingProvider.php
3 months ago
CDEKShippingProvider.php
3 months ago
CTTShippingProvider.php
3 months ago
CanadaPostShippingProvider.php
3 months ago
CeskaPostaShippingProvider.php
3 months ago
ChronopostShippingProvider.php
3 months ago
CorreosShippingProvider.php
3 months ago
CustomShippingProvider.php
3 months ago
CyprusPostShippingProvider.php
3 months ago
DHLShippingProvider.php
3 months ago
DPDShippingProvider.php
3 months ago
DeutschePostShippingProvider.php
3 months ago
ELTAShippingProvider.php
3 months ago
EcontShippingProvider.php
3 months ago
EimskipShippingProvider.php
3 months ago
EvriHermesShippingProvider.php
3 months ago
FanCourierShippingProvider.php
3 months ago
FastwayShippingProvider.php
3 months ago
FedExShippingProvider.php
3 months ago
GLSShippingProvider.php
3 months ago
GenikiTaxydromikiShippingProvider.php
3 months ago
HayPostShippingProvider.php
3 months ago
HelthjemShippingProvider.php
3 months ago
HrvatskaPostaShippingProvider.php
3 months ago
InPostShippingProvider.php
3 months ago
IslandsposturShippingProvider.php
3 months ago
ItellaShippingProvider.php
3 months ago
KazpostShippingProvider.php
3 months ago
LaPosteColissimoShippingProvider.php
3 months ago
LasershipOntracShippingProvider.php
3 months ago
LatvijasPastsShippingProvider.php
3 months ago
LiechtensteinischePostShippingProvider.php
3 months ago
MPLShippingProvider.php
3 months ago
MRWShippingProvider.php
3 months ago
MagyarPostaShippingProvider.php
3 months ago
MakedonskaPostaShippingProvider.php
3 months ago
MaltaPostShippingProvider.php
3 months ago
MatkahuoltoShippingProvider.php
3 months ago
MondialRelayShippingProvider.php
3 months ago
NewZealandPostShippingProvider.php
3 months ago
NovaPoshtaShippingProvider.php
3 months ago
OmnivaShippingProvider.php
3 months ago
OsterreichischePostShippingProvider.php
3 months ago
ParcelForceShippingProvider.php
3 months ago
PocztaPolskaShippingProvider.php
3 months ago
PostLuxembourgShippingProvider.php
3 months ago
PostNLShippingProvider.php
3 months ago
PostNordShippingProvider.php
3 months ago
PostaMoldoveiShippingProvider.php
3 months ago
PostaRomanaShippingProvider.php
3 months ago
PosteItalianeShippingProvider.php
3 months ago
PosteSanMarinoShippingProvider.php
3 months ago
PostenNorgeBringShippingProvider.php
3 months ago
PurolatorShippingProvider.php
3 months ago
RoyalMailShippingProvider.php
3 months ago
RussianPostShippingProvider.php
3 months ago
SDAShippingProvider.php
3 months ago
SeurShippingProvider.php
3 months ago
SlovenskaPostaShippingProvider.php
3 months ago
SpeeDeeDeliveryShippingProvider.php
3 months ago
StarTrackShippingProvider.php
3 months ago
SwissPostShippingProvider.php
3 months ago
TollShippingProvider.php
3 months ago
UPSShippingProvider.php
3 months ago
USPSShippingProvider.php
3 months ago
UkrposhtaShippingProvider.php
3 months ago
UrgentCargusShippingProvider.php
3 months ago
YurticiKargoShippingProvider.php
3 months ago
ZasilkovnaShippingProvider.php
3 months ago
AbstractShippingProvider.php
104 lines
| 1 | <?php declare(strict_types=1); |
| 2 | |
| 3 | namespace Automattic\WooCommerce\Admin\Features\Fulfillments\Providers; |
| 4 | |
| 5 | /** |
| 6 | * Abstract class for shipping providers. |
| 7 | * |
| 8 | * This class defines the basic structure and methods that all shipping providers must implement. |
| 9 | */ |
| 10 | abstract class AbstractShippingProvider { |
| 11 | /** |
| 12 | * Get the key of the shipping provider. |
| 13 | * |
| 14 | * @return string |
| 15 | */ |
| 16 | abstract public function get_key(): string; |
| 17 | |
| 18 | /** |
| 19 | * Get the name of the shipping provider. |
| 20 | * |
| 21 | * @return string |
| 22 | */ |
| 23 | abstract public function get_name(): string; |
| 24 | |
| 25 | /** |
| 26 | * Get the path of the icon of the shipping provider. |
| 27 | * |
| 28 | * @return string |
| 29 | */ |
| 30 | abstract public function get_icon(): string; |
| 31 | |
| 32 | /** |
| 33 | * Get the tracking URL for a given tracking number. |
| 34 | * |
| 35 | * @param string $tracking_number The tracking number. |
| 36 | * @return string The tracking URL. |
| 37 | */ |
| 38 | abstract public function get_tracking_url( string $tracking_number ): string; |
| 39 | |
| 40 | /** |
| 41 | * Get the countries from which the shipping provider can ship. |
| 42 | * |
| 43 | * @return array An array of country codes. |
| 44 | */ |
| 45 | public function get_shipping_from_countries(): array { |
| 46 | return array(); |
| 47 | } |
| 48 | |
| 49 | /** |
| 50 | * Get the countries to which the shipping provider can ship. |
| 51 | * |
| 52 | * @return array An array of country codes. |
| 53 | */ |
| 54 | public function get_shipping_to_countries(): array { |
| 55 | return array(); |
| 56 | } |
| 57 | |
| 58 | /** |
| 59 | * Check if the shipping provider can ship from a specific country. |
| 60 | * |
| 61 | * @param string $country_code The country code to check. |
| 62 | * @return bool True if the provider can ship from the country, false otherwise. |
| 63 | */ |
| 64 | public function can_ship_from( string $country_code ): bool { |
| 65 | return in_array( $country_code, $this->get_shipping_from_countries(), true ); |
| 66 | } |
| 67 | |
| 68 | /** |
| 69 | * Check if the shipping provider can ship to a specific country. |
| 70 | * |
| 71 | * @param string $country_code The country code to check. |
| 72 | * @return bool True if the provider can ship to the country, false otherwise. |
| 73 | */ |
| 74 | public function can_ship_to( string $country_code ): bool { |
| 75 | return in_array( $country_code, $this->get_shipping_to_countries(), true ); |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * Check if the shipping provider can ship from a specific country to another. |
| 80 | * |
| 81 | * @param string $shipping_from The country code from which the shipment is sent. |
| 82 | * @param string $shipping_to The country code to which the shipment is sent. |
| 83 | * @return bool True if the provider can ship from the source to the destination, false otherwise. |
| 84 | */ |
| 85 | public function can_ship_from_to( string $shipping_from, string $shipping_to ): bool { |
| 86 | return $this->can_ship_from( $shipping_from ) && $this->can_ship_to( $shipping_to ); |
| 87 | } |
| 88 | |
| 89 | /** |
| 90 | * Get the tracking URL for a given tracking number with additional parameters. |
| 91 | * |
| 92 | * @param string $tracking_number The tracking number. |
| 93 | * @param string $shipping_from The country code from which the shipment is sent. |
| 94 | * @param string $shipping_to The country code to which the shipment is sent. |
| 95 | * |
| 96 | * @return array|null The tracking URL with ambiguity score, or null if parsing fails. |
| 97 | * |
| 98 | * phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter |
| 99 | */ |
| 100 | public function try_parse_tracking_number( string $tracking_number, string $shipping_from, string $shipping_to ): ?array { |
| 101 | return null; // Default implementation returns null, subclasses should override this method. |
| 102 | } |
| 103 | } |
| 104 |