You are here

function uc_object_options_form_submit in Ubercart 7.3

Same name and namespace in other branches
  1. 5 uc_attribute/uc_attribute.module \uc_object_options_form_submit()
  2. 6.2 uc_attribute/uc_attribute.admin.inc \uc_object_options_form_submit()

Form submission handler for uc_object_options_form().

See also

uc_object_options_form()

uc_object_options_form_validate()

File

uc_attribute/uc_attribute.admin.inc, line 1154
Attribute administration menu items.

Code

function uc_object_options_form_submit($form, &$form_state) {
  if ($form_state['values']['type'] == 'product') {
    $attr_table = 'uc_product_attributes';
    $opt_table = 'uc_product_options';
    $id = 'nid';
  }
  elseif ($form_state['values']['type'] == 'class') {
    $attr_table = 'uc_class_attributes';
    $opt_table = 'uc_class_attribute_options';
    $id = 'pcid';
  }
  foreach ($form_state['values']['attributes'] as $attribute) {
    if (isset($attribute['default'])) {
      db_update($attr_table)
        ->fields(array(
        'default_option' => $attribute['default'],
      ))
        ->condition($id, $form_state['values']['id'])
        ->condition('aid', $attribute['aid'])
        ->execute();
    }
    if (isset($attribute['options'])) {
      db_delete($opt_table)
        ->condition($id, $form_state['values']['id'])
        ->condition('oid', array_keys($attribute['options']), 'IN')
        ->execute();
      foreach ($attribute['options'] as $oid => $option) {
        if ($option['select']) {
          $option[$id] = $form_state['values']['id'];
          $option['oid'] = $oid;
          drupal_write_record($opt_table, $option);
        }
        elseif ($form_state['values']['type'] == 'product') {
          $aid = $attribute['aid'];
          $match = 'i:' . $aid . ';s:' . strlen($oid) . ':"' . $oid . '";';
          db_delete('uc_product_adjustments')
            ->condition('nid', $form_state['values']['id'])
            ->condition('combination', '%' . db_like($match) . '%', 'LIKE')
            ->execute();
        }
      }
    }
  }
  drupal_set_message(t('The @type options have been saved.', array(
    '@type' => $form_state['values']['type'] == 'product' ? t('product') : t('product class'),
  )));
  if ($form_state['values']['type'] == 'product') {

    // Clear the page and block caches.
    cache_clear_all();
  }
}