function uc_product_kit_node_load in Ubercart 8.4
Implements hook_node_load().
File
- uc_product_kit/
uc_product_kit.module, line 453 - The product kit module for Ubercart.
Code
function uc_product_kit_node_load($nodes) {
$vids = [];
foreach ($nodes as $nid => $node) {
if ($node
->getType() == 'product_kit') {
$vids[$nid] = $node
->getRevisionId();
}
}
$connection = \Drupal::database();
if (!empty($vids)) {
$result = $connection
->query('SELECT nid, product_id, mutable, qty, discount, ordering, synchronized FROM {uc_product_kits} WHERE vid IN (:vids[]) ORDER BY nid, ordering', [
':vids[]' => $vids,
]);
while ($prod = $result
->fetchObject()) {
$nodes[$prod->nid]->mutable = $prod->mutable;
$nodes[$prod->nid]->synchronized = $prod->synchronized;
// Add the component information.
$data = [];
if ($prod->mutable != UC_PRODUCT_KIT_MUTABLE) {
$data = [
'kit_id' => $prod->nid,
'kit_discount' => $prod->discount,
];
}
$product = uc_product_load_variant($prod->product_id, $data);
$product->qty = $prod->qty;
$product->discount = $prod->discount;
$product->ordering = $prod->ordering;
// Add product to the kit.
$nodes[$prod->nid]->products[$product
->id()] = $product;
}
// Add product data to kits.
$result = $connection
->query('SELECT nid, model, cost, price, weight, weight_units, length, width, height, length_units, pkg_qty, default_qty, shippable FROM {uc_products} WHERE vid IN (:vids[])', [
':vids[]' => $vids,
]);
foreach ($result as $node) {
foreach ($node as $field => $value) {
if (is_object($nodes[$node->nid]->{$field})) {
$nodes[$node->nid]->{$field}->value = $value;
}
else {
// @todo remove when all properties are converted to base fields
$nodes[$node->nid]->{$field} = $value;
}
}
}
}
}