You are here

function better_exposed_filters_element_validate_slider_step in Better Exposed Filters 7.3

Form element validation handler for BEF jQuery slider step setting.

The full specified value range of the slider (range maximum - range minimum) should be evenly divisible by the step.

1 string reference to 'better_exposed_filters_element_validate_slider_step'
better_exposed_filters_exposed_form_plugin::options_form in ./better_exposed_filters_exposed_form_plugin.inc
Provide a form to edit options for this plugin.

File

./better_exposed_filters.module, line 148
Allows the use of checkboxes, radio buttons or hidden fields for exposed Views filters.

Code

function better_exposed_filters_element_validate_slider_step($element, &$form_state) {
  $value = $element['#value'];
  if ($value !== '' && _better_exposed_filters_slider_selected($element, $form_state)) {
    $slider_min = $form_state['values']['exposed_form_options']['bef'][$element['#bef_filter_id']]['slider_options']['bef_slider_min'];
    $slider_max = $form_state['values']['exposed_form_options']['bef'][$element['#bef_filter_id']]['slider_options']['bef_slider_max'];

    // Must be positive.
    if ($value < 0) {
      form_error($element, t('%name must be a positive number.', array(
        '%name' => $element['#title'],
      )));
    }

    // Must not have more than 5 decimal places.
    if (_better_exposed_filters_get_num_decimal_places($value) > 5) {
      form_error($element, t('%name must not have more than 5 decimal places.', array(
        '%name' => $element['#title'],
      )));
    }

    // The slider range must be evenly divisible by the step.
    // We check like this because of the issues PHP has with inaccurate floats,
    // where 2 might actually be 1.9999999999.
    // Because of this we can't reliably use fmod().
    if (is_numeric($slider_min) && is_numeric($slider_max) && !ctype_digit((string) abs(($slider_max - $slider_min) / $value))) {
      form_error($element, t('The range of the slider (Range maximum - Range minimum) should be evenly divisible by the step.'));
    }
  }
}