function uc_object_options_form_submit in Ubercart 6.2
Same name and namespace in other branches
- 5 uc_attribute/uc_attribute.module \uc_object_options_form_submit()
- 7.3 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_validate()
File
- uc_attribute/
uc_attribute.admin.inc, line 1226 - 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';
$sql_type = '%d';
}
elseif ($form_state['values']['type'] == 'class') {
$attr_table = '{uc_class_attributes}';
$opt_table = '{uc_class_attribute_options}';
$id = 'pcid';
$sql_type = "'%s'";
}
foreach ($form_state['values']['attributes'] as $attribute) {
if (isset($attribute['default'])) {
db_query("UPDATE {$attr_table} SET default_option = %d WHERE {$id} = {$sql_type} AND aid = %d", $attribute['default'], $form_state['values']['id'], $attribute['aid']);
}
if (isset($attribute['options'])) {
foreach ($attribute['options'] as $oid => $option) {
db_query("DELETE FROM {$opt_table} WHERE {$id} = {$sql_type} AND oid = %d", $form_state['values']['id'], $oid);
if ($option['select']) {
db_query("INSERT INTO {$opt_table} ({$id}, oid, cost, price, weight, ordering) VALUES ({$sql_type}, %d, %f, %f, %f, %d)", $form_state['values']['id'], $oid, $option['cost'], $option['price'], $option['weight'], $option['ordering']);
}
elseif ($form_state['values']['type'] == 'product') {
$aid = $attribute['aid'];
$match = 'i:' . $aid . ';s:' . strlen($oid) . ':"' . $oid . '";';
db_query("DELETE FROM {uc_product_adjustments} WHERE nid = %d AND combination LIKE '%%%s%%'", $form_state['values']['id'], $match);
}
}
}
}
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();
}
}