You are here

function _calendar_systems_views_exposed_form_validate in Calendar Systems 7.2

Same name and namespace in other branches
  1. 8 calendar_systems.module \_calendar_systems_views_exposed_form_validate()
  2. 7 calendar_systems.module \_calendar_systems_views_exposed_form_validate()

@todo supporting month and day only filters and contextual filters

Parameters

$element:

$form_state:

1 string reference to '_calendar_systems_views_exposed_form_validate'
calendar_systems_form_alter in ./calendar_systems.module
Implements hook_form_alter().

File

./calendar_systems.module, line 369
Contains Calendar Systems hook implementations and helpers.

Code

function _calendar_systems_views_exposed_form_validate($element, &$form_state) {
  $position = -1;
  foreach ($form_state['view']->display_handler->handlers['argument'] as $filter_name => $filter) {
    $position++;
    $filter_class = get_class($filter);
    if ($filter_class == 'date_views_argument_handler' || $filter_class == 'date_views_argument_handler_simple' || $filter_class == 'views_handler_filter_date' || $filter_class == 'views_handler_argument_node_created_fulldate' || $filter_class == 'views_handler_argument_node_created_year' || $filter_class == 'views_handler_argument_node_created_year_month') {
      $value =& $form_state['view']->args[$position];
      if (!empty($value)) {
        if ($filter_class == 'views_handler_argument_node_created_fulldate') {
          $convert_option['iso_fixed_position'] = TRUE;
        }
        $date_format = $filter->arg_format;
        $options = array();
        if ($filter_class == 'views_handler_argument_node_created_fulldate' || $filter_class == 'views_handler_argument_node_created_year' || $filter_class == 'views_handler_argument_node_created_year_month') {
          $options['iso_fixed_size_position'] = TRUE;
        }
        $value = _calendar_systems_date_convert($value, $date_format, NULL, $options);
      }
    }
  }
  foreach ($form_state['view']->display_handler->handlers['filter'] as $filter_name => $filter) {
    $filter_class = get_class($filter);
    if ($filter_class == 'date_views_filter_handler' || $filter_class == 'date_views_filter_handler_simple' || $filter_class == 'views_handler_filter_date') {
      if (!empty($form_state['view']->exposed_input[$filter_name]['value'])) {
        foreach (array(
          'value',
          'value2',
          'min',
          'max',
        ) as $index) {
          if (isset($form_state['view']->exposed_input[$filter_name][$index])) {
            if (isset($form_state['view']->exposed_input[$filter_name][$index]['date'])) {
              $orig_date =& $form_state['view']->exposed_input[$filter_name][$index]['date'];
            }
            else {
              $orig_date =& $form_state['view']->exposed_input[$filter_name][$index];
            }
            $value = _calendar_systems_date_convert($orig_date, $element[$filter_name][$index]['#date_format']);
            $is_empty = TRUE;
            if (is_array($value) && class_exists('DateObject')) {
              if (@(!empty($value['year']))) {
                $is_empty = FALSE;
              }
              $date = new DateObject($value);
              $value = $date
                ->format($element[$filter_name][$index]['#date_format']);
            }
            else {
              if (!empty($value)) {
                $is_empty = FALSE;
              }
            }
            $form_state['view']->exposed_input[$filter_name][$index] = $value;
          }
        }
      }
    }
  }
}