You are here

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();
      }
    }
  }
}