function uc_discounts_form_submit in Ubercart Discounts (Alternative) 6.2
Submit handler for uc_discounts_form().
File
- uc_discounts/
uc_discounts.admin.inc, line 622
Code
function uc_discounts_form_submit($form, &$form_state) {
$codes = explode("\n", $form_state["values"]["codes"]);
//Set expiration to a valid value because it is not nullable
$expiration = isset($form_state["values"]["expiration"]) ? date_convert(date_make_date($form_state["values"]["expiration"]), DATE_OBJECT, DATE_UNIX) : 0;
$activates_on = isset($form_state["values"]["activates_on"]) ? date_convert(date_make_date($form_state["values"]["activates_on"]), DATE_OBJECT, DATE_UNIX) : 0;
//Set discount_amount
if (($index = strpos($form_state["values"]["discount_amount"], "%")) !== FALSE) {
$discount_amount = floatval(substr($form_state["values"]["discount_amount"], 0, $index)) / 100;
}
else {
$discount_amount = floatval($form_state["values"]["discount_amount"]);
}
$discount = new stdClass();
$discount->name = $form_state['values']['name'];
$discount->short_description = $form_state['values']['short_description'];
$discount->description = $form_state['values']['description'];
$discount->qualifying_type = $form_state['values']['qualifying_type'];
$discount->qualifying_amount = $form_state['values']['qualifying_amount'];
$discount->has_qualifying_amount_max = $form_state['values']['has_qualifying_amount_max'];
$discount->qualifying_amount_max = $form_state['values']['qualifying_amount_max'];
$discount->discount_type = $form_state['values']['discount_type'];
$discount->discount_amount = $discount_amount;
$discount->requires_code = $form_state['values']['requires_code'];
$discount->filter_type = $form_state['values']['filter_type'];
$discount->has_role_filter = $form_state['values']['has_role_filter'];
$discount->use_only_discounted_products_to_qualify = $form_state['values']['use_only_discounted_products_to_qualify'];
$discount->requires_single_product_to_qualify = $form_state['values']['requires_single_product_to_qualify'];
$discount->required_product_type = $form_state['values']['required_product_type'];
$discount->add_to_cart = $form_state['values']['add_to_cart'];
$discount->max_times_applied = $form_state['values']['max_times_applied'];
$discount->limit_max_times_applied = $form_state['values']['limit_max_times_applied'];
$discount->can_be_combined_with_other_discounts = $form_state['values']['can_be_combined_with_other_discounts'];
$discount->max_uses = $form_state['values']['max_uses'];
$discount->max_uses_per_user = $form_state['values']['max_uses_per_user'];
$discount->max_uses_per_code = $form_state['values']['max_uses_per_code'];
$discount->has_expiration = $form_state['values']['has_expiration'];
$discount->expiration = $expiration;
$discount->has_activation = $form_state['values']['has_activation'];
$discount->activates_on = $activates_on;
$discount->is_active = $form_state['values']['is_active'];
$discount->weight = $form_state['values']['weight'];
if (empty($form_state['values']['discount_id'])) {
$discount->insert_timestamp = time();
drupal_write_record('uc_discounts', $discount);
}
else {
$discount->discount_id = $form_state["values"]["discount_id"];
drupal_write_record('uc_discounts', $discount, 'discount_id');
//Delete existing related fields
uc_discounts_codes_delete($discount->discount_id);
uc_discounts_products_delete($discount->discount_id);
uc_discounts_terms_delete($discount->discount_id);
uc_discounts_skus_delete($discount->discount_id);
uc_discounts_classes_delete($discount->discount_id);
uc_discounts_authors_delete($discount->discount_id);
uc_discounts_roles_delete($discount->discount_id);
}
//Insert codes (if necessary)
if ($form_state["values"]["requires_code"]) {
foreach ($codes as $code) {
$code = trim($code);
if (empty($code)) {
continue;
}
$new_code = array(
'discount_id' => $discount->discount_id,
'code' => $code,
);
drupal_write_record('uc_discounts_codes', $new_code);
}
}
// Insert required products
foreach (array(
DISCOUNT_FILTER_GROUPING_APPLICATION,
DISCOUNT_FILTER_GROUPING_QUALIFICATION,
) as $grouping) {
$name = $grouping == DISCOUNT_FILTER_GROUPING_APPLICATION ? 'filter_type' : 'required_product_type';
if ($form_state["values"][$name] == FILTER_TYPE_PRODUCTS) {
$ids = $form_state["values"]["{$grouping}-filter-select-" . FILTER_TYPE_PRODUCTS];
$ids = in_array(ALL_PRODUCTS, $ids) ? array(
ALL_PRODUCTS,
) : array_filter($ids);
foreach ($ids as $id) {
$new_product = array(
'discount_id' => $discount->discount_id,
'product_id' => $id,
'grouping' => $grouping,
);
drupal_write_record('uc_discounts_products', $new_product);
}
}
elseif ($form_state["values"][$name] == FILTER_TYPE_TERMS) {
$ids = $form_state["values"]["{$grouping}-filter-select-" . FILTER_TYPE_TERMS];
$ids = in_array(ALL_TERMS, $ids) ? array(
ALL_TERMS,
) : array_filter($ids);
foreach ($ids as $id) {
$new_term = array(
'discount_id' => $discount->discount_id,
'term_id' => $id,
'grouping' => $grouping,
);
drupal_write_record('uc_discounts_terms', $new_term);
}
}
elseif ($form_state["values"][$name] == FILTER_TYPE_SKUS) {
$ids = $form_state["values"]["{$grouping}-filter-select-" . FILTER_TYPE_SKUS];
//Empty SKU is ALL_SKUS
$ids = in_array(ALL_SKUS, $ids) ? array() : array_filter($ids);
foreach ($ids as $id) {
$new_sku = array(
'discount_id' => $discount->discount_id,
'sku' => $id,
'grouping',
$grouping,
);
drupal_write_record('uc_discounts_skus', $new_sku);
}
}
elseif ($form_state["values"][$name] == FILTER_TYPE_CLASS) {
$ids = $form_state["values"]["{$grouping}-filter-select-" . FILTER_TYPE_CLASS];
//Empty Class is ALL_CLASSES
$ids = in_array(ALL_CLASSES, $ids) ? array() : array_filter($ids);
foreach ($ids as $id) {
$new_class = array(
'discount_id' => $discount->discount_id,
'class' => $id,
'grouping' => $grouping,
);
drupal_write_record('uc_discounts_classes', $new_class);
}
}
if ($form_state["values"][$name] == FILTER_TYPE_AUTHORS) {
$ids = $form_state["values"]["{$grouping}-filter-select-" . FILTER_TYPE_AUTHORS];
$ids = in_array(ALL_AUTHORS, $ids) ? array(
ALL_AUTHORS,
) : array_filter($ids);
foreach ($ids as $id) {
$new_author = array(
'discount_id' => $discount->discount_id,
'author_id' => $id,
'grouping' => $grouping,
);
drupal_write_record('uc_discounts_authors', $new_author);
}
}
}
//Insert roles
if ($form_state["values"]["has_role_filter"]) {
$role_ids = $form_state["values"]["has_role_filter"] ? $form_state["values"]["role_ids"] : array();
$role_ids = in_array(ALL_ROLES, $role_ids) ? array(
ALL_ROLES,
) : array_filter($role_ids);
foreach ($role_ids as $role_id) {
$new_role = array(
'discount_id' => $discount->discount_id,
'role_id' => $role_id,
);
drupal_write_record('uc_discounts_roles', $new_role);
}
}
foreach (module_implements('uc_discount') as $module) {
$function = $module . '_uc_discount';
$function('save', $discount);
}
drupal_set_message(t("%name settings have been saved.", array(
"%name" => $form_state["values"]["name"],
)));
$form_state['redirect'] = "admin/store/uc_discounts/edit/{$discount->discount_id}";
}