function uc_shipping_package_load in Ubercart 7.3
Same name and namespace in other branches
- 5 shipping/uc_shipping/uc_shipping.module \uc_shipping_package_load()
- 6.2 shipping/uc_shipping/uc_shipping.module \uc_shipping_package_load()
Loads a package and its products.
9 calls to uc_shipping_package_load()
- uc_shipping_handler_field_package_weight::render in shipping/
uc_shipping/ views/ uc_shipping_handler_field_package_weight.inc - Overrides uc_product_handler_field_weight::render().
- 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_delete in shipping/
uc_shipping/ uc_shipping.module - Deletes a package.
- uc_shipping_package_edit_submit in shipping/
uc_shipping/ uc_shipping.admin.inc - Submit handler for uc_shipping_package_edit().
File
- shipping/
uc_shipping/ uc_shipping.module, line 395 - Organizes ordered products into packages and sets them up for shipment. Shipping method modules may add functionality to generate shipping labels and tracking numbers.
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 = :id", array(
':id' => $package_id,
));
if ($package = $result
->fetchObject()) {
$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, op.weight_units, op.nid, op.title, op.model, op.price, op.data FROM {uc_packaged_products} pp LEFT JOIN {uc_order_products} op ON op.order_product_id = pp.order_product_id WHERE pp.package_id = :id ORDER BY op.order_product_id", array(
':id' => $package_id,
));
foreach ($result as $product) {
$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;
if ($package->label_image && ($image = file_load($package->label_image))) {
$package->label_image = $image;
}
else {
unset($package->label_image);
}
$packages[$package_id] = $package;
}
else {
return FALSE;
}
}
return $packages[$package_id];
}