You are here

function contextual_range_filter_views_data_alter in Views Contextual Range Filter 7

Same name and namespace in other branches
  1. 8 contextual_range_filter.views.inc \contextual_range_filter_views_data_alter()

Implements hook_views_data_alter().

Changes argument handlers to corresponding range argument handlers.

This function finds all field and property argument handlers.

File

views/contextual_range_filter.views.inc, line 16
contextual_range_filter_views.inc

Code

function contextual_range_filter_views_data_alter(&$data) {
  $numeric_field_names = array_filter(variable_get('contextual_range_filter_numeric_field_names', array()));
  $string_field_names = array_filter(variable_get('contextual_range_filter_string_field_names', array()));
  $list_field_names = array_filter(variable_get('contextual_range_filter_list_field_names', array()));
  $date_field_names = array_filter(variable_get('contextual_range_filter_date_field_names', array()));
  foreach ($data as $table_name => $table_data) {
    foreach ($table_data as $field_name => $field_data) {
      if (isset($field_data['argument']['handler'])) {

        // If listed on the configuration page, switch this argument handler
        // to its corresponding argument RANGE handler.
        $full_name = "{$table_name}:{$field_name}";
        if (in_array($full_name, $numeric_field_names)) {
          $data[$table_name][$field_name]['argument']['handler'] = 'contextual_range_filter_handler_argument_numeric_range';
        }
        elseif (in_array($full_name, $string_field_names)) {
          $data[$table_name][$field_name]['argument']['handler'] = 'contextual_range_filter_handler_argument_string_range';
        }
        elseif (in_array($full_name, $list_field_names)) {
          $data[$table_name][$field_name]['argument']['handler'] = 'contextual_range_filter_handler_argument_list_range';
        }
        elseif (in_array($full_name, $date_field_names)) {
          $data[$table_name][$field_name]['argument']['handler'] = 'contextual_range_filter_handler_argument_date_range';
        }
      }
    }
  }
}