=== modified file 'uc_product_kit/uc_product_kit.module' --- uc_product_kit/uc_product_kit.module 2009-04-18 06:12:51 +0000 +++ uc_product_kit/uc_product_kit.module 2009-04-27 21:09:40 +0000 @@ -137,7 +137,9 @@ $values = array(); $placeholders = array(); foreach ($node->products as $product) { - $product = node_load($product); + if (is_numeric($product)) { + $product = node_load($product); + } $values[] = $node->vid; $values[] = $node->nid; @@ -199,9 +201,20 @@ if ($override_discounts) { $base_price = 0; foreach ($node->products as $nid) { - $product = node_load($nid, NULL, TRUE); - if (is_null($node->items[$nid]['qty']) || $node->items[$nid]['qty'] === '') { - $node->items[$nid]['qty'] = 1; + // Usually, $node is $form_state['values'] cast as an object. + // However, there could be times where node_save() is called with an + // actual product kit node. $node->products is an array of objects and + // $node->items doesn't exist then. + if (is_numeric($nid)) { + $product = node_load($nid, NULL, TRUE); + if (is_null($node->items[$nid]['qty']) || $node->items[$nid]['qty'] === '') { + $node->items[$nid]['qty'] = 1; + } + } + else { + $product = $nid; + $nid = $product->nid; + $node->items[$nid] = (array)$product; } $base_price += $product->sell_price * $node->items[$nid]['qty']; } @@ -210,11 +223,18 @@ $values = array(); $placeholders = array(); foreach ($node->products as $nid) { + if (is_numeric($nid)) { + $product = node_load($nid); + } + else { + $product = $nid; + $nid = $product->nid; + } + $values[] = $node->vid; $values[] = $node->nid; $values[] = $nid; $values[] = $node->mutable; - $product = node_load($nid); // When a total kit price is specified, calculate the individual product // discounts needed to reach it, taking into account the product quantities