function uc_feeds_node_insert in Ubercart Feed Mappers 7
Implements hook_feeds_node_insert().
1 call to uc_feeds_node_insert()
- uc_feeds_node_update in ./
uc_feeds.module - Implements hook_feeds_node_update().
File
- ./
uc_feeds.module, line 172
Code
function uc_feeds_node_insert($node) {
if (uc_product_is_product($node) && module_exists("uc_stock")) {
if (!empty($node->uc_feeds_stock_sku)) {
$sku = $node->uc_feeds_stock_sku;
}
else {
$sku = $node->model;
}
$fields = array();
if (isset($node->uc_feeds_stock_stock)) {
$fields['stock'] = $node->uc_feeds_stock_stock;
}
if (isset($node->uc_feeds_stock_active)) {
$fields['active'] = $node->uc_feeds_stock_active;
}
if (isset($node->uc_feeds_stock_active)) {
$fields['threshold'] = $node->uc_feeds_stock_threshold;
}
if (!empty($fields)) {
db_merge('uc_product_stock')
->fields(array(
'nid' => $node->nid,
) + $fields)
->key(array(
'sku' => $sku,
))
->execute();
}
}
if (uc_product_is_product($node) && module_exists("uc_attribute")) {
if (isset($node->uc_feeds['combinations'])) {
foreach ($node->uc_feeds['combinations'] as $combination) {
db_merge('uc_product_adjustments')
->fields(array(
'model' => $combination['model'],
))
->key(array(
'nid' => $node->nid,
'combination' => serialize($combination['combination']),
))
->execute();
}
}
if (isset($node->uc_feeds['attributes'])) {
foreach ($node->uc_feeds['attributes'] as $aid => $feedattrib) {
// Load all options for added attributes. (Will only enable the ones set in the import)
$attribute = uc_attribute_load($aid);
foreach ($attribute->options as $option) {
// some part of the option is set, default all empty parts to 0 or ''
if (isset($feedattrib->options[$option->oid])) {
$updating_fields = array();
if (isset($feedattrib->options[$option->oid]->price)) {
$updating_fields['price'] = $feedattrib->options[$option->oid]->price;
}
if (isset($feedattrib->options[$option->oid]->cost)) {
$updating_fields['cost'] = $feedattrib->options[$option->oid]->cost;
}
if (isset($feedattrib->options[$option->oid]->weight)) {
$updating_fields['weight'] = $feedattrib->options[$option->oid]->weight;
}
db_merge('uc_product_options')
->insertFields(array(
'ordering' => $option->ordering,
) + $updating_fields)
->updateFields(array(
'ordering' => $option->ordering,
) + $updating_fields)
->key(array(
'nid' => $node->nid,
'oid' => $option->oid,
))
->execute();
}
}
// Make the first option (if any) the default.
$option = reset($attribute->options);
if ($option) {
$oid = $option->oid;
}
else {
$oid = 0;
}
$res = db_select('uc_attributes', 'c')
->fields('c')
->condition('aid', $aid)
->execute()
->fetchAssoc();
db_merge('uc_product_attributes')
->insertFields(array(
'default_option' => $oid,
'label' => $res['label'],
'ordering' => $res['ordering'],
'required' => $res['required'],
'display' => $res['display'],
))
->key(array(
'nid' => $node->nid,
'aid' => $aid,
))
->execute();
}
}
}
}