You are here

function uc_product_kit_uc_order_product_alter in Ubercart 7.3

Same name and namespace in other branches
  1. 8.4 uc_product_kit/uc_product_kit.module \uc_product_kit_uc_order_product_alter()

Implements hook_uc_order_product_alter().

The hookups for making product kits work on the order edit admin screen.

Parameters

$product: The order product being saved.

$order: The order being edited.

File

uc_product_kit/uc_product_kit.module, line 1023
The product kit module for Ubercart.

Code

function uc_product_kit_uc_order_product_alter(&$product, $order) {
  if (empty($product->type) || $product->type !== 'product_kit') {
    return;
  }

  // Have to save each individual product if this is a kit.
  foreach ($product->products as $kit_product) {
    $qty = $kit_product->qty * $product->qty;
    $data = isset($kit_product->data) ? $kit_product->data : array();
    $data += module_invoke_all('uc_add_to_cart_data', $_POST['product_controls']['sub_products'][$kit_product->nid]);
    $data['shippable'] = $product->shippable;
    $kit_product = uc_product_load_variant($kit_product->nid, $data);
    $kit_product->qty = $qty;
    drupal_alter('uc_order_product', $kit_product, $order);

    // Save the individual item to the order.
    uc_order_product_save($order->order_id, $kit_product);
  }

  // Don't save the base kit node, though.
  $product->skip_save = TRUE;
}