function uc_product_kit_uc_order_product_alter in Ubercart 8.4
Same name and namespace in other branches
- 7.3 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
\Drupal\uc_order\OrderProductInterface $product: The order product being saved.
\Drupal\uc_order\OrderInterface $order: The order being edited.
File
- uc_product_kit/
uc_product_kit.module, line 882 - The product kit module for Ubercart.
Code
function uc_product_kit_uc_order_product_alter(OrderProductInterface &$product, OrderInterface $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 : [];
$data += \Drupal::moduleHandler()
->invokeAll('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::moduleHandler()
->alter('uc_order_product', $kit_product, $order);
// Save the individual item to the order.
uc_order_product_save($order
->id(), $kit_product);
}
// Don't save the base kit node, though.
$product->skip_save = TRUE;
}