You are here

function uc_discounts_admin_discount_edit_form_validate in Ubercart Discounts (Alternative) 7.2

Validate handler for uc_discounts_admin_discount_edit_form().

See also

uc_discounts_admin_discount_edit_form()

uc_discounts_admin_discount_edit_form_submit()

File

uc_discounts/uc_discounts.admin.inc, line 737
Admin forms and functions for uc_discounts module.

Code

function uc_discounts_admin_discount_edit_form_validate($form, &$form_state) {
  $values = $form_state['values'];
  $has_errors = FALSE;
  if ($values['requires_code'] && empty($values['codes'])) {
    form_set_error('codes', t('Discounts codes are required because %requires_code is checked', array(
      '%requires_code' => t('Require(s) code'),
    )));
    $has_errors = TRUE;
  }

  // Check qualifying_amount_max if necessary.
  if ($values['has_qualifying_amount_max']) {
    if (($index = strpos($values['qualifying_amount_max'], '%')) !== FALSE) {
      $value = substr($values['qualifying_amount_max'], 0, $index);
    }
    else {
      $value = $values['qualifying_amount_max'];
    }
    if (!is_numeric($value)) {
      form_set_error('qualifying_amount_max', t('Max qualifying amount is required because %has_max_qual_amount is checked.', array(
        '%has_max_qual_amount' => t('Has max qualifying amount'),
      )));
      $has_errors = TRUE;
    }
  }

  // Check discount_amount.
  if (($index = strpos($values['discount_amount'], '%')) !== FALSE) {
    $value = substr($values['discount_amount'], 0, $index);
  }
  else {
    $value = $values['discount_amount'];
  }
  if (!is_numeric($value)) {
    form_set_error('discount_amount', t('Discount amount must be integer, decimal or percentage.'));
    $has_errors = TRUE;
  }
  $ids = $form_state['values'][UC_DISCOUNTS_GROUPING_APPLICATION . '-filter-select-' . $values['filter_type']];
  if (empty($ids)) {
    form_set_error('filter_type', t('At least one product must be selected.'));
    $has_errors = TRUE;
  }
  if ($values['has_role_filter'] && empty($values['role_ids'])) {
    form_set_error('roles', t('Roles are required because %filter_on_roles is checked', array(
      '%filter_on_roles' => t('Filter based on roles'),
    )));
    $has_errors = TRUE;
  }

  /*
   if ($values['has_expiration'] && !date_is_valid($values['expiration'])) {
   form_set_error('expiration', t('Expiration required because %discount_expires is checked', array('%discount_expires' => t('Discount expires'))));
   $has_errors = TRUE;
   }
  */

  // Form requires rebuilding so codes and expiration blocks display correctly.
  if ($has_errors) {
    $form_state['rebuild'] = TRUE;
  }
}