Files
2026-09-15 10:35:56 +08:00

62 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace Esun\SeventeenTrack\Block\Order;
use Esun\SeventeenTrack\Model\Config;
use Magento\Framework\Locale\ResolverInterface;
use Magento\Framework\Registry;
use Magento\Framework\View\Element\Template;
use Magento\Sales\Model\Order;
class Tracking extends Template
{
public function __construct(
Template\Context $context,
private readonly Registry $registry,
private readonly Config $config,
private readonly ResolverInterface $localeResolver,
array $data = []
) {
parent::__construct($context, $data);
}
public function canDisplay(): bool
{
return $this->config->isWidgetEnabled() && $this->getTracks() !== [];
}
public function getTracks(): array
{
$order = $this->registry->registry('current_order');
if (!$order instanceof Order) {
return [];
}
$tracks = [];
foreach ($order->getShipmentsCollection() as $shipment) {
foreach ($shipment->getAllTracks() as $track) {
$number = trim((string)$track->getTrackNumber());
if ($number !== '') {
$tracks[$number] = [
'number' => $number,
'title' => (string)($track->getTitle() ?: __('Shipment')),
];
}
}
}
return array_values($tracks);
}
public function getWidgetHeight(): int
{
return $this->config->getWidgetHeight();
}
public function getWidgetLanguage(): string
{
$locale = str_replace('_', '-', $this->localeResolver->getLocale());
$map = ['zh-CN' => 'zh-cn', 'zh-HK' => 'zh-hk', 'zh-TW' => 'zh-tw', 'pt-BR' => 'pt'];
return $map[$locale] ?? strtolower(substr($locale, 0, 2));
}
}