You are here

function composite_views_filter_views_pre_build in Composite Views Filter 7

Implements hook_views_pre_build().

File

./composite_views_filter.module, line 166

Code

function composite_views_filter_views_pre_build(&$view) {
  $view
    ->init_handlers();
  if ($composite_views_filters = _composite_views_filter_view_has_composite_filters($view)) {
    foreach ($composite_views_filters as $filter_handler) {
      $identifier = $filter_handler->options['expose']['identifier'];
      $classification = $filter_handler
        ->get_classification();
      $default_group = $filter_handler->options['composite_views_filter']['default_group'];
      $exposed_input = $view
        ->get_exposed_input();
      if (!isset($exposed_input[$identifier])) {
        $exposed_input[$identifier] = $default_group ?: 'All';
        $view
          ->set_exposed_input($exposed_input);
      }
      $selected_group = isset($exposed_input[$identifier]) ? $exposed_input[$identifier] : FALSE;
      $selected_groups = $selected_group != 'All' ? (array) $selected_group : array();
      foreach ($view->filter as $field_name => $filter) {
        if (isset($classification[$field_name]) && !in_array($classification[$field_name], $selected_groups)) {
          unset($view->filter[$field_name]);
        }
      }
    }
  }
}