You are here

public function Tracking::view in Ubercart 8.4

Returns the contents of an order pane as a store administrator.

Parameters

\Drupal\uc_order\OrderInterface $order: The order that is being viewed.

string $view_mode: The view mode that is being used to render the order.

Return value

array A render array showing order data.

Overrides OrderPanePluginInterface::view

File

shipping/uc_fulfillment/src/Plugin/Ubercart/OrderPane/Tracking.php, line 30

Class

Tracking
Display tracking numbers of shipped packages.

Namespace

Drupal\uc_fulfillment\Plugin\Ubercart\OrderPane

Code

public function view(OrderInterface $uc_order, $view_mode) {
  if ($view_mode == 'customer' || $view_mode == 'view') {
    $tracking = [];
    $shipments = Shipment::loadByOrder($uc_order
      ->id());
    foreach ($shipments as $shipment) {
      if ($shipment
        ->getTrackingNumber()) {
        $tracking[$shipment
          ->getCarrier()][] = $shipment
          ->getTrackingNumber();
      }
      else {
        foreach ($shipment
          ->getPackages() as $package) {
          if ($package
            ->getTrackingNumber()) {
            $tracking[$shipment
              ->getCarrier()][] = $package
              ->getTrackingNumber();
          }
        }
      }
    }

    // Do not show an empty pane to customers.
    if ($view_mode == 'view' || !empty($tracking)) {
      $build = [];
      foreach ($tracking as $title => $list) {
        $build[$title] = [
          '#theme' => 'item_list',
          '#title' => $title,
          '#items' => $list,
        ];
      }
      if (empty($tracking)) {
        $build = [
          '#markup' => $this
            ->t('No tracking numbers have been entered.'),
        ];
      }
      return $build;
    }
  }
}