Automattic\WooCommerce\Internal\Fulfillments\Providers
DPDShippingProvider::validate_country_pattern
Validate tracking number against country-specific patterns and determine service type.
Method of the class: DPDShippingProvider{}
No Hooks.
Returns
Array|true|false. Array with service info if valid, false otherwise.
Usage
// private - for code of main (parent) class only $result = $this->validate_country_pattern( $tracking_number, $country_code );
- $tracking_number(string) (required)
- The tracking number to validate.
- $country_code(string) (required)
- The country code for the shipment.
DPDShippingProvider::validate_country_pattern() DPDShippingProvider::validate country pattern code WC 10.3.3
private function validate_country_pattern( string $tracking_number, string $country_code ) {
if ( ! isset( self::TRACKING_PATTERNS[ $country_code ] ) ) {
return false;
}
$country_data = self::TRACKING_PATTERNS[ $country_code ];
$detected_service = null;
$confidence_boost = 0;
// Check service-specific patterns first.
if ( isset( $country_data['services'] ) ) {
if ( preg_match( '/^02\d{12}$/', $tracking_number ) ) {
$detected_service = 'classic';
$confidence_boost = $country_data['services']['classic'] ?? 0;
} elseif ( preg_match( '/^0[34578]\d{12}$/', $tracking_number ) ) {
$detected_service = 'express';
$confidence_boost = $country_data['services']['express'] ?? 0;
} elseif ( preg_match( '/^0[49]\d{12}$/', $tracking_number ) ) {
$detected_service = 'predict';
$confidence_boost = $country_data['services']['predict'] ?? 0;
} elseif ( preg_match( '/^03\d{12}$/', $tracking_number ) && 'GB' === $country_code ) {
$detected_service = 'next_day';
$confidence_boost = $country_data['services']['next_day'] ?? 0;
} elseif ( preg_match( '/^02\d{12}$/', $tracking_number ) && 'FR' === $country_code ) {
$detected_service = 'relais';
$confidence_boost = $country_data['services']['relais'] ?? 0;
} elseif ( preg_match( self::S10_PATTERN, $tracking_number ) ) {
$detected_service = 's10';
$confidence_boost = $country_data['services']['s10'] ?? 90;
}
}
// Check all patterns.
foreach ( $country_data['patterns'] as $pattern ) {
if ( preg_match( $pattern, $tracking_number ) ) {
return array(
'valid' => true,
'service' => $detected_service,
'confidence_boost' => $confidence_boost,
);
}
}
return false;
}