diff --git a/env.sample.php b/env.sample.php index 03488e2..541337e 100644 --- a/env.sample.php +++ b/env.sample.php @@ -50,4 +50,5 @@ $SETTINGS = [ "ups_user_account" => "", "ups_password" => "", "shippo_key" => "", + "easypost_key" => "", ]; \ No newline at end of file diff --git a/lib/CarrierAssets.lib.php b/lib/CarrierAssets.lib.php new file mode 100644 index 0000000..f9fa836 --- /dev/null +++ b/lib/CarrierAssets.lib.php @@ -0,0 +1,49 @@ + "ups", "name" => "UPS" ], + "upsdap" => [ + "code" => "ups", + "name" => "UPS" + ], "ups_mi_datamatrix" => [ "code" => "usps", "name" => "USPS" diff --git a/lib/Tracking.lib.php b/lib/Tracking.lib.php index d7b1887..c84dd6e 100644 --- a/lib/Tracking.lib.php +++ b/lib/Tracking.lib.php @@ -30,7 +30,8 @@ class Tracking { case "ups": return Tracking_UPS::track($barcode->getSanitized()); default: - return Tracking_Shippo::track($barcode->getSanitized()); + return Tracking_EasyPost::track($barcode->getSanitized()); + //return Tracking_Shippo::track($barcode->getSanitized()); } } diff --git a/lib/TrackingStatus.lib.php b/lib/TrackingStatus.lib.php index 0d3a903..2208ff2 100644 --- a/lib/TrackingStatus.lib.php +++ b/lib/TrackingStatus.lib.php @@ -22,14 +22,19 @@ class TrackingStatus { case "TRANSIT": case "IN_TRANSIT": case "ACCEPTED": + case "OUT_FOR_DELIVERY": return TrackingStatus::TRACKING_STATUS_TRANSIT; case "DELIVERED": + case "AVAILABLE_FOR_PICKUP": return TrackingStatus::TRACKING_STATUS_DELIVERED; case "RETURNED": + case "RETURN_TO_SENDER": return TrackingStatus::TRACKING_STATUS_RETURNED; case "FAILURE": case "DELIVERY ATTEMPT": case "ALERT": + case "ERROR": + case "CANCELLED": return TrackingStatus::TRACKING_STATUS_FAILURE; default: return TrackingStatus::TRACKING_STATUS_UNKNOWN; diff --git a/lib/Tracking_EasyPost.lib.php b/lib/Tracking_EasyPost.lib.php new file mode 100644 index 0000000..f847ff9 --- /dev/null +++ b/lib/Tracking_EasyPost.lib.php @@ -0,0 +1,101 @@ + $code + )); + } else { + $trackinginfo["carrier"] = $carrier; + $tracker = \EasyPost\Tracker::create(array( + "tracking_code" => $code, + "carrier" => $carrier + )); + } + } catch (Exception $ex) { + throw new TrackingException("There was a server problem. This code cannot be tracked right now."); + } + + $info = new TrackingInfo(); + + $info->setCode($tracker->tracking_code); + $info->setCarrier(strtolower($tracker->carrier)); + $info->setCarrierAttributionText(CarrierAssets::getAttribution(Carriers::getCarrierCode($info->getCarrier()))); + $info->setCarrierLogo(CarrierAssets::getLogo(Carriers::getCarrierCode($info->getCarrier()))); + + if (!empty($tracker->tracking_details) && count($tracker->tracking_details) > 0) { + + $events_sorted = $tracker->tracking_details; + + // start https://stackoverflow.com/a/2910637 + function date_compare($a, $b) { + $t1 = strtotime($a->datetime); + $t2 = strtotime($b->datetime); + return $t2 - $t1; + } + usort($events_sorted, 'date_compare'); + // end https://stackoverflow.com/a/2910637 + + foreach ($events_sorted as $history) { + $location = new Location(); + $location->city = $history->tracking_location["city"]; + $location->state = $history->tracking_location["state"]; + $location->zip = $history->tracking_location["zip"]; + $location->country = $history->tracking_location["country"]; + $info->appendHistoryEntry(new TrackingEntry(TrackingStatus::stringToStatus($history->status), $history->message, $history->datetime, $location)); + } + + $current_status = new TrackingEntry( + TrackingStatus::stringToStatus( + $events_sorted[0]->status), + $events_sorted[0]->message, + $events_sorted[0]->datetime + ); + if (!empty($events_sorted[0]->tracking_location)) { + $current_location = new Location(); + $current_location->city = $events_sorted[0]->tracking_location->city; + $current_location->state = $events_sorted[0]->tracking_location->state; + $current_location->zip = $events_sorted[0]->tracking_location->zip; + $current_location->country = $events_sorted[0]->tracking_location->country; + $current_status->setLocation($current_location); + } + $info->setCurrentStatus($current_status); + } + + if (!empty($tracker->carrier_detail->origin_tracking_location)) { + $from = new Location(); + $from->city = $tracker->carrier_detail->origin_tracking_location->city ?? ""; + $from->state = $tracker->carrier_detail->origin_tracking_location->state ?? ""; + $from->zip = $tracker->carrier_detail->origin_tracking_location->zip ?? ""; + $from->country = $tracker->carrier_detail->origin_tracking_location->country ?? ""; + + $info->setFrom($from); + } + + if (!empty($tracker->carrier_detail->destination_tracking_location)) { + $to = new Location(); + $to->city = $tracker->carrier_detail->destination_tracking_location->city ?? ""; + $to->state = $tracker->carrier_detail->destination_tracking_location->state ?? ""; + $to->zip = $tracker->carrier_detail->destination_tracking_location->zip ?? ""; + $to->country = $tracker->carrier_detail->destination_tracking_location->country ?? ""; + + $info->setTo($to); + } + + return $info; + } + +} diff --git a/lib/Tracking_HelenaExpress.lib.php b/lib/Tracking_HelenaExpress.lib.php index 9d7b602..22e9808 100644 --- a/lib/Tracking_HelenaExpress.lib.php +++ b/lib/Tracking_HelenaExpress.lib.php @@ -14,9 +14,8 @@ class Tracking_HelenaExpress { $barcode = new TrackingBarcode($code); - try { - $status = json_decode(file_get_contents("https://helena.express/tracker/api.php?code=" . $barcode->getCode())); + $status = json_decode(file_get_contents("https://helena.express/apis/track/?code=" . $barcode->getCode())); } catch (Exception $ex) { throw new TrackingException("There was a server problem. This code cannot be tracked right now."); } @@ -30,6 +29,8 @@ class Tracking_HelenaExpress { $info->setCode($barcode->getCode()); $info->setCarrier($status->info->carrier); $info->setService(new Service("", "Local Courier")); + $info->setCarrierAttributionText(CarrierAssets::getAttribution(Carriers::getCarrierCode($info->getCarrier()))); + $info->setCarrierLogo(CarrierAssets::getLogo(Carriers::getCarrierCode($info->getCarrier()))); if (!empty($status->events)) { $current_status = new TrackingEntry( diff --git a/lib/Tracking_Shippo.lib.php b/lib/Tracking_Shippo.lib.php index 6809fd0..09711bb 100644 --- a/lib/Tracking_Shippo.lib.php +++ b/lib/Tracking_Shippo.lib.php @@ -31,6 +31,8 @@ class Tracking_Shippo { $info->setCode($barcode->getCode()); $info->setCarrier($barcode->getCarrier()); $info->setService(new Service($status->servicelevel->token, $status->servicelevel->name)); + $info->setCarrierAttributionText(CarrierAssets::getAttribution(Carriers::getCarrierCode($info->getCarrier()))); + $info->setCarrierLogo(CarrierAssets::getLogo(Carriers::getCarrierCode($info->getCarrier()))); if (!empty($status->tracking_status)) { $current_status = new TrackingEntry( diff --git a/lib/Tracking_UPS.lib.php b/lib/Tracking_UPS.lib.php index 33cf86e..b461157 100644 --- a/lib/Tracking_UPS.lib.php +++ b/lib/Tracking_UPS.lib.php @@ -89,10 +89,8 @@ class Tracking_UPS { $info->setCarrier("ups"); $info->setService(new Service($trackinfo["Service"]["Code"], $trackinfo["Service"]["Description"])); - $info->setCarrierLogo("data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDEyLjYzNSAxNS4zNjggMjI3LjMwNSAyNzkuNDQzIiBoZWlnaHQ9IjI3OS40NDMiIHZpZXdCb3g9IjEyLjYzNSAxNS4zNjggMjI3LjMwNSAyNzkuNDQzIiB3aWR0aD0iMjI3LjMwNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBkPSJtMjM5LjkzOCA0MC4yNzFjLTIzLjg1NC0xMy4xNzYtNTAuOTE2LTE5LjM5My03Mi42NDktMjIuMzE5LTIzLjczMS0zLjE4OC00MS4xMDEtMi40Ni00MS4wMTUtMi41ODQuMDUyLjA2Ni00LjU4Mi0uMDk4LTEyLjM1LjE2Ny03LjkyNC4yNzYtMTkuMTE0Ljk5Ni0zMS45MzggMi44NzYtMTAuMTEzIDEuNDg2LTIxLjIzNiAzLjY4OS0zMi41NzYgNi45NTEtMTIuMzUyIDMuNTU5LTI0Ljk1MiA4LjM4MS0zNi43NzUgMTQuOTA5djI3LjQ5NiAxMC40NzggMjAuMDgyIDc2LjYzNmMuMDA3IDI3LjI3MSA5LjM5NyA1MS4yMzUgMjkuOTQ5IDY4LjMxNyA0LjY1OCAzLjkzOCAxMS44MDcgOC40MzcgMjAuMDE2IDEzLjAwNCA2Ljk2MiAzLjg2NSAxNC42OSA3Ljc4MyAyMi4yODQgMTEuNDY2IDguOTU3IDQuMzMzIDE3LjczNSA4LjMxNSAyNC44ODQgMTEuNDc2IDkuODExIDQuMzM0IDE2LjU2IDcuMTA2IDE2LjUwNSA3LjA1My0uMDgyLjA3MiAxNC45MzItNi4xMDQgMzIuNjgzLTE0LjM4OSAxOC44OTctOC44MjggNDAuODgyLTIwLjAyNyA1MS4wMjEtMjguNjA3IDIwLjU2Mi0xNy4wODEgMjkuOTYzLTQxLjA0OSAyOS45NjMtNjguMzI2IDAtMjUuNTM1IDAtNTEuMDgzIDAtNzYuNjI3IDAtNy41MjkgMC0xMy4zODcgMC0yMC45MTUgMC0yLjY1OSAwLTYuOTg1IDAtOS42NDUtLjAwMi05LjE2OC0uMDAyLTE4LjMzNS0uMDAyLTI3LjQ5OSIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJiIj48cGF0aCBkPSJtMjMxLjAyMyA0Mi4wMjhjLTMzLjI1LTMuNDk3LTY5Ljg5Mi00LjQxNC0xMDYuMzYyIDIuODU1LTEwLjU4NSAyLjEyOC0yMS4xNTcgNC45MzgtMzEuNTg5IDguNTkxLTExLjE0NyAzLjkwOC0yMi4xMjYgOC43NjgtMzIuNzg0IDE0Ljc2OC0xMy42MjcgNy42NzUtMjYuNzEzIDE3LjIxNC0zOC45MjUgMjguOTc4LS4wMDIgMi41MTctLjAwOSA1LjAzMy0uMDE2IDcuNTQ3LS4wMTggMTIuMDc0LS4wMjkgMjQuMTU5LS4wMzQgMzYuMjQ1LS4wMDkgMTEuMzQyIDAgMjIuNjkuMDA5IDM0LjAzOS4wMTggMjUuMzAyIDkuMTEgNDYuNTg5IDI2Ljg5NyA2MS4zNjYgMTAuOTM4IDUuNjYxIDIxLjg3OCAxMS4zMjYgMzIuODIyIDE2Ljk5MSA4LjM1NSA0LjMzMyAxNi43MTYgOC42NTUgMjUuMDc0IDEyLjk4NyA2LjcyMSAzLjQ3NyAxMy40NDEgNi45NTMgMjAuMTYyIDEwLjQ0IDEzLjM5Ni01LjU4NCA2Mi4yMTEtMjcuMDI0IDc4LjA2Ny00MC40MjEgMTcuNzkxLTE0Ljc3NyAyNi44NzItMzYuMDY0IDI2Ljg5Mi02MS4zNjYuMDI3LTI0LjM4Ny4wMTUtNDguNzg4LS4wMjYtNzMuMTUtLjAzNi0xNi41NTEtLjA4MS0zMy4wODYtLjE0Ni00OS41NjktLjAxNy0zLjQzMi0uMDI2LTYuODY4LS4wNDEtMTAuMzAxIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9ImMiPjxwYXRoIGQ9Im0yMDMuODYzIDE3MS40NTVjLS4xMzctNi4zNzktMy42MzctOS44MjYtMTIuNDQ2LTE1LjA1Ni0xNi41OS05Ljg0LTE5LjY1MS0xNy45OS0xOS42OTgtMjguODYyLS4xLTE2LjQ5MiAxMy44MTUtMjYuMDE5IDI2LjkyOC0yNi4yNjYgMTAuOTctLjIxIDE4LjMwMyA0LjA1NiAyMS43NTggNi44MDcuMDE5IDUuODM5LjAzMSAxMS42ODkuMDM1IDE3LjUzNS00LjA4OC00LjM0Ni0xMC43MjktOC4zMjgtMTcuNy04LjQ1Mi01LjY1NS0uMTA2LTExLjU2NCAyLjM4OC0xMS43NDUgOS42MjUtLjE2MyA3LjM5MSA1Ljc3MSAxMC4zNDEgMTMuMTY1IDE0Ljc5NCAxNi41OTkgMTAuMDE0IDE5LjYxIDE4Ljg1OCAxOS4yOTEgMzAuNjI0LS40MjcgMTIuODk1LTguOTk5IDI3LjA4LTI4Ljc3OCAyNy4yOTctNy45MjUuMDgxLTE1Ljc5NS0yLjM2Ny0yMi4xMTktNi4xMDcuMDI2LTYuMjQ4LjA0Ny0xMi41MDYuMDU1LTE4Ljc4NSA1LjE3OSA0LjY1MiAxMi44ODEgOC4yMDMgMTkuMjcyIDguMjAzIDcuMzM0LS4wMDIgMTIuMTQtNC4zMDkgMTEuOTgyLTExLjM1N20tODIuMzU1LTUyLjcwM2MxLjY1My0uODAyIDQuNDg2LTEuNDYxIDcuMjQyLTEuNDYxIDExLjg3NyAwIDE2LjgxMSA5LjQ3OSAxNi44MjkgMzIuNDM1LS4wMTEgMjIuMzgxLTUuNjUyIDMzLjE3LTE3LjQzNSAzMy4xNy0yLjc1MiAwLTUuMTY2LS42ODgtNi42MzktMS4yMzgtLjAwMi0yMC45MjUgMC00MS45ODQuMDAzLTYyLjkwNnptLjA0IDEyMS45OTNjLS4wMDktMTMuOTc5LS4wMjQtMjguMTQzLS4wMjYtNDIuNDA5IDIuMDI3LjU5NyA1LjAyIDEuMTQgOS4yMDcgMS4xMzQgMjIuNjQ1LS4wMjEgMzUuNjk0LTIwLjQxIDM1LjY5NC01MC4yODctLjAxNC0yOS43OTUtMTMuNDMyLTQ4LjI3Mi0zNy44MjMtNDguMjg4LTExLjExOCAwLTIwLjExNiAyLjQ3Mi0yNy40OTMgNy4yODMtLjEwMiA0NC4yMDMtLjA0MSA4OS4yNDYuMTc2IDEzMi41MDggNi43NS4wMzggMTMuNTA5LjA1NCAyMC4yNjUuMDU5em0tNjAuMDAzLTU4LjQzYzQuMDg2LjAyNiA3LjM0Ni0uODk1IDkuNTI4LTIuNDAyLS4wNzItMjUuNTYyLS4wNS01MS4yODIuMDc1LTc2Ljc0NyA2LjcxMS0uMDU3IDEzLjQ1OC0uMTAzIDIwLjIyMi0uMTMxLS4wOTkgMjkuMzYzLS4xMDYgNTkuMTE2LS4wMTggODguNTQyLTcuNzYyIDUuMjctMTguMTQ2IDguMDY4LTMwLjQzIDcuOTU1LTE5LjgzNi0uMjAyLTI5LjU2Ny0xMS4xODItMjkuNjA1LTMyLjUyMiAwLTIxLjE0NS4wMDItNDIuMzE5LjAwMi02My40MTkgNi41MzUtLjA5MyAxMy4xNDMtLjE2NSAxOS43OTEtLjIzOS0uMTAyIDIxLjQ2OS0uMTM4IDQzLjA4Ni0uMTAyIDY0LjY0OC4wMTcgNS43MjggMS4zNzIgMTQuMjUzIDEwLjUzNyAxNC4zMTV6Ii8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYSkiIGQ9Im05IDEzaDIzNS41djI3M2gtMjM1LjV6IiBmaWxsPSIjZmViMzAyIi8+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJtMjAgMzYuNWgyMTV2MjQyLjVoLTIxNXoiIGZpbGw9IiMzNTFjMTUiLz48ZyBmaWxsPSIjZmViMzAyIj48cGF0aCBjbGlwLXBhdGg9InVybCgjYykiIGQ9Im0yMDMuODYzIDE3MS40NTVjLS4xMzctNi4zNzktMy42MzctOS44MjYtMTIuNDQ2LTE1LjA1Ni0xNi41OS05Ljg0LTE5LjY1MS0xNy45OS0xOS42OTgtMjguODYyLS4xLTE2LjQ5MiAxMy44MTUtMjYuMDE5IDI2LjkyOC0yNi4yNjYgMTAuOTctLjIxIDE4LjMwMyA0LjA1NiAyMS43NTggNi44MDcuMDE5IDUuODM5LjAzMSAxMS42ODkuMDM1IDE3LjUzNS00LjA4OC00LjM0Ni0xMC43MjktOC4zMjgtMTcuNy04LjQ1Mi01LjY1NS0uMTA2LTExLjU2NCAyLjM4OC0xMS43NDUgOS42MjUtLjE2MyA3LjM5MSA1Ljc3MSAxMC4zNDEgMTMuMTY1IDE0Ljc5NCAxNi41OTkgMTAuMDE0IDE5LjYxIDE4Ljg1OCAxOS4yOTEgMzAuNjI0LS40MjcgMTIuODk1LTguOTk5IDI3LjA4LTI4Ljc3OCAyNy4yOTctNy45MjUuMDgxLTE1Ljc5NS0yLjM2Ny0yMi4xMTktNi4xMDcuMDI2LTYuMjQ4LjA0Ny0xMi41MDYuMDU1LTE4Ljc4NSA1LjE3OSA0LjY1MiAxMi44ODEgOC4yMDMgMTkuMjcyIDguMjAzIDcuMzM0LS4wMDIgMTIuMTQtNC4zMDkgMTEuOTgyLTExLjM1N20tODIuMzU1LTUyLjcwM2MxLjY1My0uODAyIDQuNDg2LTEuNDYxIDcuMjQyLTEuNDYxIDExLjg3NyAwIDE2LjgxMSA5LjQ3OSAxNi44MjkgMzIuNDM1LS4wMTEgMjIuMzgxLTUuNjUyIDMzLjE3LTE3LjQzNSAzMy4xNy0yLjc1MiAwLTUuMTY2LS42ODgtNi42MzktMS4yMzgtLjAwMi0yMC45MjUgMC00MS45ODQuMDAzLTYyLjkwNnptLjA0IDEyMS45OTNjLS4wMDktMTMuOTc5LS4wMjQtMjguMTQzLS4wMjYtNDIuNDA5IDIuMDI3LjU5NyA1LjAyIDEuMTQgOS4yMDcgMS4xMzQgMjIuNjQ1LS4wMjEgMzUuNjk0LTIwLjQxIDM1LjY5NC01MC4yODctLjAxNC0yOS43OTUtMTMuNDMyLTQ4LjI3Mi0zNy44MjMtNDguMjg4LTExLjExOCAwLTIwLjExNiAyLjQ3Mi0yNy40OTMgNy4yODMtLjEwMiA0NC4yMDMtLjA0MSA4OS4yNDYuMTc2IDEzMi41MDggNi43NS4wMzggMTMuNTA5LjA1NCAyMC4yNjUuMDU5em0tNjAuMDAzLTU4LjQzYzQuMDg2LjAyNiA3LjM0Ni0uODk1IDkuNTI4LTIuNDAyLS4wNzItMjUuNTYyLS4wNS01MS4yODIuMDc1LTc2Ljc0NyA2LjcxMS0uMDU3IDEzLjQ1OC0uMTAzIDIwLjIyMi0uMTMxLS4wOTkgMjkuMzYzLS4xMDYgNTkuMTE2LS4wMTggODguNTQyLTcuNzYyIDUuMjctMTguMTQ2IDguMDY4LTMwLjQzIDcuOTU1LTE5LjgzNi0uMjAyLTI5LjU2Ny0xMS4xODItMjkuNjA1LTMyLjUyMiAwLTIxLjE0NS4wMDItNDIuMzE5LjAwMi02My40MTkgNi41MzUtLjA5MyAxMy4xNDMtLjE2NSAxOS43OTEtLjIzOS0uMTAyIDIxLjQ2OS0uMTM4IDQzLjA4Ni0uMTAyIDY0LjY0OC4wMTcgNS43MjggMS4zNzIgMTQuMjUzIDEwLjUzNyAxNC4zMTV6Ii8+PHBhdGggZD0ibTIwNi44MjYgMjgyLjg1OGMwIDYuNjk3LTUuMjU4IDExLjk1My0xMi4wOTggMTEuOTUzLTYuNzcgMC0xMi4xNy01LjI1Ni0xMi4xNy0xMS45NTMgMC02LjU1MyA1LjQtMTEuODEgMTIuMTctMTEuODEgNi44NC4wMDEgMTIuMDk4IDUuMjU4IDEyLjA5OCAxMS44MXptLTIxLjI0MiAwYzAgNS4yNTcgMy44ODkgOS40MzQgOS4yMTcgOS40MzQgNS4xODYgMCA5LjAwMS00LjE3NyA5LjAwMS05LjM2MSAwLTUuMjU2LTMuODE1LTkuNTA1LTkuMDczLTkuNTA1LTUuMjU2LS4wMDEtOS4xNDUgNC4yNDgtOS4xNDUgOS40MzJ6bTcuMjcxIDYuMTkzaC0yLjczNXYtMTEuODFjMS4wOC0uMjE3IDIuNTkzLS4zNiA0LjUzNi0uMzYgMi4yMzIgMCAzLjI0LjM2IDQuMTA0Ljg2NC42NDguNTA1IDEuMTUyIDEuNDM5IDEuMTUyIDIuNTkzIDAgMS4yOTYtMS4wMDggMi4zMDQtMi40NDggMi43MzZ2LjE0NGMxLjE1Mi40MzQgMS44IDEuMjk3IDIuMTYgMi44ODEuMzYgMS44MDEuNTc2IDIuNTIxLjg2NCAyLjk1MmgtMi45NTJjLS4zNi0uNDMzLS41NzYtMS41MTMtLjkzNy0yLjg4MS0uMjE3LTEuMjk2LS45MzctMS44NzItMi40NDktMS44NzJoLTEuMjk1em0uMDc1LTYuNjk3aDEuMjk1YzEuNTEyIDAgMi43MzYtLjUwNCAyLjczNi0xLjcyOSAwLTEuMDgtLjc5Mi0xLjc5OS0yLjUyMS0xLjc5OS0uNzE5IDAtMS4yMjQuMDcxLTEuNTEyLjE0M3YzLjM4NmguMDAyeiIvPjwvZz48L3N2Zz4="); - $info->setCarrierAttributionText("UPS, the UPS brand mark, and the Color Brown are " - . "trademarks of United Parcel Service of America, Inc. All Rights Reserved."); - + $info->setCarrierAttributionText(CarrierAssets::getAttribution(Carriers::getCarrierCode($info->getCarrier()))); + $info->setCarrierLogo(CarrierAssets::getLogo(Carriers::getCarrierCode($info->getCarrier()))); if (count($trackinfo["Package"]["Activity"]) > 0) { $current = $trackinfo["Package"]["Activity"][0]; diff --git a/lib/Tracking_USPS.lib.php b/lib/Tracking_USPS.lib.php index eea0815..cf26e89 100644 --- a/lib/Tracking_USPS.lib.php +++ b/lib/Tracking_USPS.lib.php @@ -51,8 +51,8 @@ class Tracking_USPS { $info->setCarrier("usps"); $info->setService(new Service((string) $trackinfo->ClassofMailCode, (string) $trackinfo->Class)); - $info->setCarrierLogo("data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2NTkuMDU1IDExMC4wMzYiIGhlaWdodD0iMTEwLjAzNiIgdmlld0JveD0iMCAwIDY1OS4wNTUgMTEwLjAzNiIgd2lkdGg9IjY1OS4wNTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxnIGZpbGw9IiMwMDRjODIiPjxwYXRoIGQ9Im0yMy4zODIuNTU1aC44MjZsMS4zNzkuMjY5IDEuNjQ4LjI3NiA0LjQwMiAxLjEwMyA2LjA1IDEuMDk2IDMuMzA1LjgzIDMuNTc1LjgyNiAzLjg1LjU0OSAzLjg1MiAxLjEgNC4xMjcuNTQ4IDQuMTI1IDEuMTAyIDEzLjIwNSAyLjQ3NCA0LjEyOCAxLjEwMyA0LjQwMi44MjMgMy44NDguODI2IDQuMTI4LjgyNiAzLjg0Ny44MjQgMy44NTMuNTUzIDMuMzAxLjgyNiAzLjMwNS41NDcgMi43NTEuODI0IDIuNDczLjU1MyAyLjE5OS4yNzMgMS45MjcuMjc2IDEuMzc5LjI3Ny44MjUuMjczaC41NDZsMy41NzguODI1IDMuMzAzLjU1MiAyLjc1Mi44MjUgMi4xOTcuNTUgMi4yMDMuODI0IDEuNjUyLjU1MSAyLjE5NyAxLjEwMi44MjQuNTUyIDEuMzc5IDEuMzcxdi4yNzZsLjI3OC4yNzd2LjI2OWgxMS44MjNsMS4xMDQuMjc4aDEuMTAxbC44MjQuMjc3aC44MjRsLjgyNC4yNzYgMi4yMDQgMS4wOTUuMjczLjU1NSAxLjkyNiAzLjAyNS41NTIgMy41NzQtLjU1MiA0LjQwMi0xLjM3NSA0LjEyOS0xLjY1IDQuMTI0LTEuNjU1IDMuMzA0LTEuMzcxIDIuMi0uNTQ5LjgyNi0uNTUyLjI3Ni0xLjM3NS41NDctMS45MjYuODI1LTIuNzUgMS4xLTMuMDI5IDEuMDk4LTMuODQ3IDEuNjU2LTQuMTMxIDEuNjQ4LTQuNjc2IDEuNjQ4LTUuMjI4IDIuMjA1LTUuNSAxLjkyNi01LjQ5OSAyLjE5Ny0xMi4xMDUgNC45NTktNi4zMjkgMi40NzUtNi4zMjggMi4xOTgtNi4zMjYgMi43NDYtNi41OTkgMi40ODMtNi4zMjggMi4xOTctNi4wNTUgMi43NTQtNi4zMjUgMi4xOTgtNS43NzkgMi4xOTctMTEuMDA0IDQuNDA5LTQuOTUxIDEuOTE5LTQuNjc3IDEuNjU1LTQuMTI0IDEuNjQ4LTMuNTc1IDEuMzc3LTMuMDI5IDEuMzc3LTIuNDcyLjgyOC0xLjkyOC44MjctMS4xMDEuMjY0LS4yNzguMjc4aDE0Mi4yMjdsMjMuMTA1LTEwOS40ODZoLTE1NS40Mjh6Ii8+PHBhdGggZD0ibTEyOS44NDcgMzYuMDM5LS44MjkuMjc2LTUuNDk5IDEuMDk1aC0xLjM3N2wtMS4xMDIuMjc4aC0xLjA5NWwtMS42NTUuMjc3LS44MjQuMjc1LS41NS4yNzItLjI3OC41NTV2LjU0OGwuNTU1LjU0OWgxLjA5N2wxLjEwMi4yNzVoMi43NWwxLjY0OC0uMjc1aDEuNjVsMy44NTQtLjU0OWgxLjkyN2wyLjItLjI3OSAxLjkyMy0uMjY5IDEuNjU3LS4yNzYgMS45MjEtLjI3OWg3LjQyOWwuODIyLjI3OS41NTYuMjc2LjU0Ni44MjR2MS4wOTdsLS4yNzUgMS4xLS4yNzEgMS4zNzktLjU1NiAxLjY1LS44MjIgMS45MjgtLjU1IDEuOTI2LS4yNzcgMS4wOTcuNTUuNTUyLjU1My0uMjc5IDEuMTAyLTEuMS41NDYtLjgyNC44MjgtMS4zNzIuODI1LTEuNjUxLjgyNC0xLjkyNy44MjItMS42NS41NTMtMS42NTMuMjczLTEuMzczdi0xLjY1bC0uNTQ3LTEuMzc5LS44MjQtLjgyNS0xLjEwMS0uODIzLTEuMzc3LS41NTEtMS42NTEtLjI3NC0xLjkyMy0uMjc3aC0xMS41NTZsLS4yNzUuMjc3aC0uMjc2bC0uNTQ3LjI3NC0uNTU1IDEuMTAzLS41NDcuMjcxLS41NS41NTJ6Ii8+PHBhdGggZD0ibTE4LjE1NiAyNS4zMTMtMTguMTU2IDg0LjE3My44MjktLjI3OCAxLjY0OC0xLjA5MSAyLjc1Mi0xLjEwNyAzLjU3OC0xLjkyNiA0LjEyMi0xLjkyNiA0LjY4LTIuNDY4IDUuNTAyLTIuNDc2IDUuMjI2LTIuNzU0IDUuNTAxLTIuNDgzIDUuMjI3LTIuNzQ2IDUuMjI2LTIuNDc2IDQuOTQ5LTIuNDc1IDQuMTMtMi4yMDUgMy41NzUtMS42NDggMi43NTEtMS4zNzcgMS45MjYtLjgyIDIuNzUyLTEuMzc3IDIuNDc2LTEuMzc3IDMuMDI1LTEuMzc3IDMuMDI2LTEuNjQ4IDIuNzUtMS4zNzcgMy4zMDItMS4zNzcgMy4wMjYtMS42NDggMy4zLTEuMzcgMy4zMDQtMS42NjIgMTYuNTAzLTYuODcgNy40My0yLjQ3NiAxLjA5OS0uMjc3IDEuMDk3LS41NDcgMS4zOC0uMjc2IDQuOTQ4LTEuNjUgNS43NzgtMS42NTQgMS45MjctLjI3NiA1Ljc3NS0xLjY1IDMuMzA1LS41NDYgMS4wOTctLjI3Ni44MjQtLjI3OGguODI5bC44MjQtLjI3LjU1MS0uNTU0aC4yNzd2LS4yNzdsLS41NTUtMS4wOTUtLjgyNC0uMjc2LTEuMTAyLS4yNzloLTEuMDk3bC0xLjY0OC0uMjcxaC0xLjY1N2wtMS45MjMuMjcxLTMuMzAzLjI3OS0zLjU3Ni41NDUtMy44NDkuODI2LTQuMTI5LjgzMS00LjEyMiAxLjA5Ny00LjQwMyAxLjM3Ny00LjEyOSAxLjM3My00LjQgMS4zNzctNC4xMjQgMS42NTItNC4xMzEgMS4zNzItMy44NDkgMS4zNzgtMy41NzQgMS4zNzctMy4zMDUgMS42NDktMi43NSAxLjA5OC0yLjQ3NiAxLjEwNi0xLjkyNiAxLjA5OC0xMC40NTItMzIuNDY0aDY2LjU3NGwuMjcxLTEuMzcyLTEuMDk3LTEuMzc5LTEuNjUzLS44MjUtMi40NzYtLjgyNC0yLjc1Mi0uODI0LTcuMTUyLTEuMTAzLTExLjU1Mi0uODIxeiIvPjwvZz48cGF0aCBkPSJtNjU4LjM4NSA1Ny4yOTloLTQ2Ni4wOTNsLjY2OC03LjAwNGg0NjYuMDk1eiIgZmlsbD0iI2VhNDE1NiIvPjxwYXRoIGQ9Im0yMTMuNDcyIDQxLjgxNy0zLjU3NC0uMjc2LTMuNTc2LS44MjQtMi43NTItLjgyNi0yLjQ3Ni0xLjY1MS0xLjY0OC0xLjkyNS0xLjEwMi0yLjQ3OS0uMjc2LTIuNzQ3LjI3Ni0zLjMwNSAxLjM3Ny02LjA1IDEuMDk3LTUuNTAyIDEuMTAzLTQuNjguODIyLTMuODQ3LjU1Ny0zLjMwMy41NDgtMi40NzYuMjc2LTEuMzcyLjI2OS0uNTU0aDkuMDc5bC0uMjc1IDEuMS0uNTQ5IDIuNzUyLTEuMTAzIDQuMTI1LS44MjQgNC42NzYtMS4xMDIgNC42OC0xLjM3MiA2Ljg3NS0uMjc4LjgyNC0uMjczIDIuMjAzdjMuODUzbC41NTEgMS4zNzIgMS4wOTkgMS4xMDIgMS4zNzUuODI0IDEuOTI2LjU0OSAyLjIwMy4yNzYgMi40NzQtLjI3NiAxLjkyNi0uMjcxIDEuOTI3LS44MyAxLjM3My0xLjM3NSAxLjEwMy0xLjM3MiAxLjEwMi0xLjY1NyAxLjY1LTQuMzk4LjI3MS0yLjE5OS44MjQtMy4zMDMuODMyLTQuMTI1LjgyMi00LjQwMiAxLjA5OS00LjEyOS41NTUtMy41NzYuNTQ3LTIuNDc2LjI3NS0uODIyaDkuMDhsLTEuNjUzIDcuOTc4LS44MjQgNC4xMjktLjU1MSAxLjM3M3YuNTQ4bC0uMjc4IDEuNjU1LS44MjQgNC4xMjMtMS45MjIgNy45NzgtLjI3NiAxLjY0OC0uODI0IDEuNjU3LS41NTUgMS4zNzItLjgyNCAxLjM3NS0xLjA5OSAxLjM3Ny0yLjIwMSAyLjE5Ny0xLjM3OS44My0xLjY0OC44MjgtMS4zNzUuODI0LTEuNjQ4LjU0OC0xLjY1MS4yNzgtMS42NTUuNTQ1LTMuODQ3LjU1NWgtMi4yMDR6bTQyMy4wOTMtMzUuMjEzaC0xMi45MzFsLTIuMTk3LjU0Ny0xLjY1MSAxLjEwMy0uMjc4LjU0Ny0uMjc0LjgyOHYxLjA5OWwuMjc0IDEuMTAzLjgyNCAxLjEwMi44MjcgMS4zNzQgMi40NzYgMi40NzQgMS42NDggMS4xMDEgMS4zNzcgMS4xMDIgMS42NTEgMS4zNzUgMi43NSAyLjc1IDEuMTAzIDEuMzc1IDEuNjQ3IDMuMzAxLjI3OSAxLjY0OC0uMjc5IDEuOTI4LS41NDUgMS45MjgtLjgzMiAxLjkyNC0xLjM3MyAxLjY1LTEuOTI2IDEuMzc3LTIuMTk3IDEuMDk3LTIuNzU0LjgyOC0zLjU3NC41NTMtMy44NTMuMjcxaC0xNC4wM2wxLjY1Mi02LjYwMWgxNC44NTRsMS4zNzctLjI3MyAxLjA5OS0uMjc4LjgyNy0uNTQ3LjgyOC0xLjEwMS41NDUtMS4wOTktLjI3NC0yLjIwNS0xLjY1MS0yLjIwMS0yLjc1LTIuMjAxLTIuNzUtMi40NzQtMy4wMjUtMi43NS0yLjQ3OS0zLjAyNy0xLjY0Ny0zLjAyOC0uMjc1LTMuNTc0LjU1LTEuOTI0IDEuMTAzLTIuMjAxIDEuMTAyLTEuNjUxIDEuOTItMS4zNzcgMi40NzktMS4wOTcgMi40NzYtLjgyNCAzLjMtLjU1NWgxNS45NTZ6bS0zMS45MTUgMGgtMjAuNjI1bC0yLjQ4MiAxMC43M2gxOC4xNmwtMS4zNzMgNS43NzNoLTE4LjE1N2wtMi4yMDQgMTEuMjc5aDIwLjYzMmwtMS4zNzcgNi42MDFoLTI5LjcwN2w4LjgwMy00MC45ODdoMjkuNzExem0tMzUuNzYgMGgtMTIuNjQ4bC03LjQzMSAzNC4zODNoLTkuMDc4bDcuNDI3LTM0LjM4M2gtMTIuOTMxbDEuNjUxLTYuNjA0aDM0LjM4N3ptLTYzLjI3IDM0LjM4NCAzLjU3OC02LjYwMWgxMi45MzFsLTMuNTc4LTI2LjEzMy0xOC4xNTcgMzIuNzMzaC05LjA3OGwyMy42NjEtNDAuOTg3aDEwLjcyN2w2LjMzMSA0MC45ODh6bS0xLjY0OC0zNC4zODRoLTEyLjY1NmwtNy40MyAzNC4zODNoLTkuMDc5bDcuNDMxLTM0LjM4M2gtMTIuOTI4bDEuNjQ4LTYuNjA0aDM0LjM4N3ptLTM5LjMzOCAwaC0xMi42NTZsLTEuMzc3LjI3MS0xLjA5OS4yNzYtLjgyNC41NTMtMS4xMDMgMS4wOTd2MS45MjZsLjI3OCAxLjEwMy41NDYgMS4xMDIgMS4xMDMgMS4zNzQgMi40NzYgMi40NzQgMS4zNzMgMS4xMDEgMS42NTUgMS4xMDIgNC4xMjQgNC4xMjUgMS4xMDIgMS4zNzUgMS4wOTYgMS42NTEuNTU3IDEuNjUuMjc0IDEuNjQ4djEuOTI4bC0uNTU0IDEuOTI4LS44MjMgMS45MjQtMS42NTEgMS42NS0xLjY0OCAxLjM3Ny0yLjQ3NiAxLjA5Ny0yLjc1NC44MjgtMy4zLjU1My00LjEyNy4yNzFoLTEzLjc1NmwxLjM3Ny02LjYwMWgxNS4xMjhsMS4zNzctLjI3MyAxLjA5OS0uMjc4LjgyNC0uNTQ3LjgyNy0xLjEwMS4yNzUtMS4wOTktLjI3NS0yLjIwNS0xLjY1MS0yLjIwMS0yLjQ3Ni0yLjIwMS0yLjc1LTIuNDc0LTMuMDI4LTIuNzUtMi40NzYtMy4wMjctMS42NDgtMy4wMjgtLjI3OC0zLjU3NC41NTctMS45MjQuODItMi4yMDEgMS4zNzctMS42NTEgMS45MjctMS4zNzcgMi4yMDEtMS4wOTcgMi43NS0uODI0IDMuMzAyLS41NTVoMTUuOTUyem0tODMuMDc5IDEzLjc1My00LjEyNyAyMC42M2gxOC40MzJsMi4yLS4yNzFoMi4yMDFsMy44NS0xLjEwMyAyLjItLjgyNCAxLjkzMS0xLjEwMiAzLjI5OS0yLjE5OSAzLjI5Ni0zLjMwMSAyLjc1NC0zLjg1MSAxLjA5OS0yLjIwMy44MjQtMi4xOTkuNTU3LTIuNDc5LjI3NC0xLjA5OS4yNzEtMS42NTEuNTQ5LTMuODQ5LS4yNzEtMy41NzQtLjgyNC0zLjAyOC0xLjM4MS0yLjc1LTIuMTk3LTIuNDc2LTIuNzUtMS42NS0zLjU3NC0xLjEwMi00LjEzMi0uMjc2aC0yMC4wNzl6bTI5Ljk4NSAwLS4yNzggMS4zNzctLjgyMyAxLjY1LS41NSAxLjM3Ny0uNTQ2IDEuNjUxLS44MzEgMS4wOTMtMS4wOTUgMS4zNzktMi4yMDUgMi4yMDUtMi43NSAxLjY1LTEuMzczLjU0OS0xLjY1Mi41NDctMy4zMDMuNTUxaC04LjI1NGwyLjc1NC0xNC4wMyAzLjAyNC0xMy43NTNoMTEuODI5bDIuMTk3LjgyNiAxLjY1OCAxLjEwMSAxLjM3IDEuNjUuODI3IDEuNjUuNTQ2IDIuMTk3djQuNDA1bC0uNTQ2IDEuNjUxdi4yNzR6bS0zMy41Ni0xMy43NTNoLTIwLjM2MWwtMi40NzIgMTAuNzNoMTcuODc5bC0xLjEwMyA1Ljc3M2gtMTguMTUzbC0yLjIwMSAxMS4yNzloMjAuMzU0bC0xLjA5NSA2LjYwMWgtMjkuNzExbDguODAxLTQwLjk4N2gyOS40Mzd6bS0zNS40ODkgMGgtMTIuOTI3bC03LjQzIDM0LjM4M2gtOC44bDcuNDI1LTM0LjM4M2gtMTIuOTI3bDEuMzcxLTYuNjA0aDM0LjM4N3ptLTQ4LjE0IDM0LjM4NGgtOC44MDRsOC41MjctNDAuOTg4aDkuMDc3em0tMTcuNjA2IDBoLTExLjI3OWwtMTAuMTgxLTMwLjUzMWgtLjI3MmwtNi4zMjYgMzAuNTMxaC03Ljk3N2w4LjgtNDAuOTg4aDExLjU1Mmw5LjkwNCAzMC44MTMgNi4zMjktMzAuODEzaDguMjUyeiIvPjxwYXRoIGQ9Im0yMDEuMzcyIDkzLjgwNWgtMS4xMDNsLS41NDktLjI3MWgtMS42NTNsLS41NDktLjI3OGgtLjU0OGwtLjU1My01Ljc3MWgyLjIwMWwuMjcyLjI3MWgxLjY1M2wyLjE5Ny0uMjcxIDMuMzAyLTEuMTA1IDEuMTAyLTEuMDk5IDEuNjUtMi4yMDUuNTUxLTEuMDk5di0xLjA5OWwuMjczLTEuMzc3di0xLjM2OWwtLjI3My0xLjEwNi0uNTUxLS44Mi0xLjY1LTEuMTA1aC0xLjEwMmwtMS4wOTUtLjI3MWgtNy40M2wtNy40MjkgMzQuMzhoLTkuMDc4bDguODA1LTQwLjk4NmgxOS41M2wzLjAyMy4yNzggMi4yMDUgMS4xMDYgMS45MjQgMS4zNjkgMS4xMDMgMS45MjcuNTQ5IDEuOTI2LjI3NiAyLjE5N3YyLjIwNWwtLjI3NiAxLjkyNi0uODI2IDIuNzQ3LTEuMzc3IDIuNDc2LTEuNjUyIDIuMTk3LTIuMTk1IDEuOTM0LTIuMjAzIDEuMzc3LTUuNTA0IDEuNjQ3em00NTIuNzk4LTE4Ljk3N2gtMjAuOTAzbC0yLjIwNSAxMC43M2gxOC4xNmwtMS4zOCA2LjA1aC0xOC4xNTNsLTIuMjAxIDExLjI3OWgyMC42MzNsLTEuMzc3IDYuMzJoLTI5LjcxMWw4LjgwNC00MC45ODZoMjkuNzExem0tMzYuNTg1LjU0OS0xLjEwMi0uMjc4aC0uODI4bC0yLjE5Ny0uNTUtMS4zNzctLjI3MWgtMS4zNzNsLTEuMTAzLS4yNzhoLTEuNjQ3bC0zLjAyOS4yNzgtMi43NTQuODItMi43NSAxLjEwNS0yLjQ3MiAxLjkyNy0xLjkyNyAxLjkxOS0xLjkyNiAyLjQ4Mi0xLjA5OSAzLjAyNS0xLjEwMyAzLjI5Ni0uNTUzIDMuMzAzLjI3OCAzLjAyNS44MiAyLjQ3NiAxLjEwMyAxLjkyNiAxLjY1MSAxLjY0OCAyLjIgMS4zNzcgMi40NzcuODI3IDIuNzU0LjI3MWgxLjY0N2wxLjY1MS0uMjcxaDEuMzc3bDIuNzUtLjU0OWgxLjFsMS4zNzctLjI3OCAxLjEwMi0uMjcxLTIuMjA0IDYuODctMS4wOTkuMjc4aC0xLjM3M2wtMS4xMDMuMjc4aC0xLjM3NGwtMS4xMDIuMjcxaC02LjMyOGwtNC40MDItLjU1LTEuOTI2LS41NDItMS45MjctLjgyNy0xLjY0Ny0uODI4LTEuNjUyLTEuMDk5LTEuMzc3LTEuMTA1LTEuMzczLTEuMzc3LS44MjQtMS42NDgtLjgyMy0xLjkyNi0uODI4LTEuNjQ4LS4yNzQtMi4xOTd2LTIuMjA0bC4yNzQtMi40NzYuMjcxLTIuNzU0LjgyNy0yLjQ3Ni44MjQtMi43NDcgMi4yMDEtNC40MDEgMS4zNzMtMS45MjcgMy4zMDktMy4zMDEgMS45MjctMS4zNzcgMy44NDktMi4xOTcgNC4zOTgtMS42NTUgMi4yMDQtLjU1IDIuMTk3LS4yNzggMi40NzktLjI2NGg1Ljc3NWwxLjA5OS4yNjRoMS4xMDVsMS4wOTkuMjc4aDEuMDk5bDEuMTAzLjI3OHptLTQ1LjM5MiAzMy44MzFoLTkuMDc4bDguODA0LTQwLjk4Nmg5LjA3OHptLTI5LjE2MSAwaC0xMC43MjdsLTYuMDU0LTQwLjk4Nmg5LjA3OWw0LjEyNyAzMy4wMTEgMTguMTU2LTMzLjAxMWg4LjgwMXptLTMzLjI4OS0xNy42IDYuNjA2IDE3LjZoLTkuOTA1bC03LjQyOC0yMi4yOGg1LjIzbDEuNjUxLS4yNzEgMS42NDctLjU1IDEuMzczLS44MjcgMS4xMDMtLjgyIDEuMTAzLTEuMTA2LjU0Ni0xLjM3Ny41NTctMS42NDcuMjY3LTEuMDk5di0xLjA5OWwtLjU0NS0xLjY1NS0uNTUtLjU1LTEuMDk5LS41NDktMi43NTQtLjU1aC04LjI1NGwtNy40MzEgMzQuMzhoLTkuMDcxbDguODA0LTQwLjk4NmgxOC45ODFsMi43NDIuMjc4IDIuNDgzLjU1IDEuOTI2LjgyNyAxLjM3NCAxLjA5OSAxLjA5OCAxLjM3LjgyOCAxLjkzNC4yNzQgMi4xOTd2Mi4xOTdsLS4yNzQgMi43NTQtLjgyOCAyLjQ3Ni0xLjA5OCAyLjIwNC0xLjM3NCAxLjY0OC0xLjY1NSAxLjY0Ny0yLjE5NyAxLjEwNi0xLjkyNi44MnptLTI2LjEyOS0xNi43OGgtMjAuNjMzbC0yLjIgMTAuNzNoMTcuODc4bC0xLjA5OSA2LjA1aC0xOC4xNTNsLTIuMjA0IDExLjI3OWgyMC42MzJsLTEuMzczIDYuMzJoLTI5Ljk4NWw4LjgtNDAuOTg2aDI5LjcxMXptLTM3LjQxNiAwaC0xMS41NTRsLTIuNzUuNTUtMS4wOTkuMjc4LS41NS41NDktLjgyNy41NS0uNTQ2IDEuMDk5djEuMzc3bC4yNzEgMS4wOTkuNTU0IDEuMDk5IDEuMDk5IDEuMTA1IDEuMDk5IDEuMzcgMS4zNzcgMS4wOTkgMS4zNzMgMS4zNzcgMS42NDcgMS4xMDUgMS4zODEgMS4zNyAxLjY0OCAxLjEwNSAxLjEwMiAxLjY0OCAxLjEwMyAxLjM2OSAxLjA5OSAxLjY1NS41NTMgMS4zNzcuMjcxIDEuOTI3djEuNjQ3bC0uNTQ5IDIuMjA1LS44MjQgMS42NDctMy4zMDQgMy4zMDQtMi4yIDEuMDk5LTMuMDI5LjgyNy0zLjI5Ni41NDJoLTE3Ljg4MmwxLjM3Ny02LjMyaDE1LjEzMmwxLjM3My0uMjc4IDEuMTAzLS41NS44MjQtLjU0OS44MjQtLjgyLjU0NS0xLjEwNi0uNTQ1LTIuMjA0LTEuNjQ4LTIuMTk3LTIuNDc2LTIuNDc2LTIuNzU0LTIuNDc2LTMuMDI4LTIuNDc2LTIuNDc2LTMuMDI1LTEuNjQ4LTMuMzAzLS4yNzgtMy4yOTYuNTUzLTIuMjA1LjgyNi0xLjkyNiAxLjM3My0xLjY1NSAxLjkyNy0xLjM3IDIuMTk3LTEuMDk5IDIuNzU0LS44MjcgMy4zMDMtLjU1IDMuODQ2LS4yNzhoMTIuMTA2em0tNDguOTY2IDM0LjM4aC0yNy43ODRsOC41MzItNDAuOTg2aDkuMzVsLTcuNDI3IDM0LjY2NmgxOC43MDZ6bS01OC44NjQgMCAzLjU3NC02LjMyaDEyLjkyN2wtMy44NDktMjYuNDExLTE3Ljg4MSAzMi43MzFoLTkuMDhsMjMuMzg3LTQwLjk4NmgxMC45OTdsNi4zMjggNDAuOTg2em0tMS42NTItMzQuMzhoLTEyLjkzMWwtNy40MzEgMzQuMzhoLTkuMDc4bDcuNDMxLTM0LjM4aC0xMi42NTZsMS4zNzgtNi42MDZoMzQuMzgyem0tMzkuMzM4IDBoLTExLjU1OGwtMi43NS41NS0uODI2LjI3OC0uODI2LjU0OS0xLjA5NSAxLjA5OS0uMjc2LjU1djEuMzc3bC4yNzYgMS4wOTkgMS42NSAyLjIwNCAxLjA5NyAxLjM3IDEuMzc3IDEuMDk5IDEuMzc0IDEuMzc3IDEuNjUzIDEuMTA1IDEuNjUxIDEuMzcgMS4zNzIgMS4xMDUgMS4xMDIgMS42NDggMS4zNzUgMS4zNjkuODI0IDEuNjU1LjU1MyAxLjM3Ny41NDcgMS45MjctLjI3MyAxLjY0Ny0uNTUxIDIuMjA1LS44MjcgMS42NDctMS4zNzIgMS42NDgtMS42NTQgMS42NTUtMi40NzYgMS4wOTktMy4wMjMuODI3LTMuMzA1LjU0MmgtMTcuNjA0bDEuMTAzLTYuMzJoMTUuNDA2bDEuMDk1LS4yNzggMi4yMDMtMS4wOTkuNTQ5LS44Mi41NTMtMS4xMDYtLjI3Ni0yLjIwNC0xLjY1LTIuMTk3LTIuNDc0LTIuNDc2LTMuMDI4LTIuNDc2LTIuNzUyLTIuNDc2LTIuNDc0LTMuMDI1LTEuNjUtMy4zMDMtLjU1NS0zLjI5Ni41NTUtMi4yMDUgMS4wOTgtMS45MjUgMS4zNzctMS42NTUgMS42NS0xLjM3IDIuMjAzLTEuMDk5IDMuMDIzLS44MjcgMy4zMDEtLjU1IDMuNTc0LS4yNzhoMTIuMTA3em0tNzYuNDc2IDE0LjAyNi0uNTU1IDQuNDAxLjgzIDUuNzc5IDEuNjUxIDMuMzAzIDEuMDk3IDEuNjQ4IDIuNDc5IDIuNDc2IDEuNjQ4IDEuMDk5IDEuNjUxLjgyNyAxLjkyNi44MiAyLjE5OS41NTcgMi4yMDEuMjcxaDQuNjhsNC4zOTgtLjU1IDIuMTk5LS41NDIgMi4yMDMtLjgyNyAxLjkyNi0uODI4IDEuNjUtMS4wOTkgMS45MjYtMS4xMDUgMS42NTEtMS4zNzcgMS4zNzItMS42NDggMS42NTMtMS42NDcgMS4wOTctMS45MjcgMi4yMDQtNC40MDEuODI0LTIuNDc2LjU0OS0yLjc1NC41NTMtMi4xOTd2LTQuMTI0bC0uMjc4LTIuMjA0LS4yNzUtMS45MjctMS42NTItMy4zMDMtMi4xOTUtMi43NTQtMS4zNzktMS4wOTItMS42NDktMS4xMDUtMS42NTItLjgyLTIuMjAxLS44MjgtMS45MjgtLjU1Ny0yLjE5Ny0uMjY0aC00LjY3OGwtNC40LjU0Mi0yLjE5OS41NS0yLjIwMy44MzUtMS45MjcuODItMS42NDkgMS4wOTktMS45MjYgMS4zNzctMS42NDggMS4wOTgtMS42NSAxLjY1NS0xLjM3NyAxLjkyNi0xLjM3NSAxLjY0OC0xLjEwMSAyLjE5Ny0uODI2IDIuMjA0LS44MjQgMi43NDd6bTM0LjM4MyAwLS44MjYgMy4zMDMtMS4zNzMgMy4wMjUtMS4zNzkgMi40NzYtMS45MTkgMS45MjYtMi4yMDUgMS42NDgtMi40NzYgMS4zNzctMi40NzQuODI3LTMuMDI3LjI3MS0zLjAyOS0uMjcxLTIuMTk5LTEuMDk5LTEuOTI2LTEuMzc3LTEuMzc1LTEuOTI2LS44MjgtMS45MjctLjU0Ny0yLjc0NnYtMi43NTRsLjU0Ny0yLjc1NC44MjgtMy4yOTYgMS4zNzUtMy4wMjUgMS4zNzUtMi40ODIgMS45MjYtMS45MTkgMi4xOTktMS45MjcgMi40NzctMS4xMDUgMi40NzItLjgyIDMuMDMyLS4yNzkgMi43NTQuNTQ5IDIuNDc0LjU1IDEuOTI2IDEuNjU1IDEuMzczIDEuNjQ3LjgyNiAyLjIwNS41NTEgMi40Njh2Mi43NTR6Ii8+PC9nPjwvc3ZnPg=="); - $info->setCarrierAttributionText("Information provided by www.usps.com."); + $info->setCarrierAttributionText(CarrierAssets::getAttribution(Carriers::getCarrierCode($info->getCarrier()))); + $info->setCarrierLogo(CarrierAssets::getLogo(Carriers::getCarrierCode($info->getCarrier()))); $current_status = new TrackingEntry( TrackingStatus::USPSEventCodeToStatus($trackinfo->TrackSummary->EventCode),