You are here

function uc_shipping_package_load in Ubercart 6.2

Same name and namespace in other branches
  1. 5 shipping/uc_shipping/uc_shipping.module \uc_shipping_package_load()
  2. 7.3 shipping/uc_shipping/uc_shipping.module \uc_shipping_package_load()

Load a package and its products.

7 calls to uc_shipping_package_load()
uc_shipping_make_shipment in shipping/uc_shipping/uc_shipping.admin.inc
Default method to send packages on a shipment.
uc_shipping_package_cancel_confirm_submit in shipping/uc_shipping/uc_shipping.admin.inc
Form submission handler for uc_shipping_package_cancel_confirm().
uc_shipping_package_edit_submit in shipping/uc_shipping/uc_shipping.admin.inc
Submit handler for uc_shipping_package_edit().
uc_shipping_shipment_edit_submit in shipping/uc_shipping/uc_shipping.admin.inc
Submit handler for uc_shipping_shipment_edit().
uc_shipping_shipment_load in shipping/uc_shipping/uc_shipping.module
Load a shipment and its packages.

... See full list

File

shipping/uc_shipping/uc_shipping.module, line 394

Code

function uc_shipping_package_load($package_id) {
  static $packages = array();
  if (!isset($packages[$package_id])) {
    $result = db_query("SELECT * FROM {uc_packages} WHERE package_id = %d", $package_id);
    if ($package = db_fetch_object($result)) {
      $products = array();
      $description = '';
      $weight = 0;
      $units = variable_get('uc_weight_unit', 'lb');
      $addresses = array();
      $result = db_query("SELECT op.order_product_id, pp.qty, pp.qty * op.weight AS weight, p.weight_units, op.nid, op.title, op.model, op.price, op.data FROM {uc_packaged_products} AS pp LEFT JOIN {uc_order_products} AS op ON op.order_product_id = pp.order_product_id LEFT JOIN {uc_products} AS p ON op.nid = p.nid WHERE pp.package_id = %d ORDER BY op.order_product_id", $package_id);
      while ($product = db_fetch_object($result)) {
        $address = uc_quote_get_default_shipping_address($product->nid);

        // TODO: Lodge complaint that array_unique() compares as strings.
        if (!in_array($address, $addresses)) {
          $addresses[] = $address;
        }
        $description .= ', ' . $product->qty . ' x ' . $product->model;

        // Normalize all weights to default units.
        $weight += $product->weight * uc_weight_conversion($product->weight_units, $units);
        $product->data = unserialize($product->data);
        $products[$product->order_product_id] = $product;
      }
      $package->addresses = $addresses;
      $package->description = substr($description, 2);
      $package->weight = $weight;
      $package->weight_units = $units;
      $package->products = $products;
      $packages[$package_id] = $package;
    }
    else {
      return FALSE;
    }
  }
  return $packages[$package_id];
}