You are here

views_age_filter.module in Views age filter 7

File

views_age_filter.module
View source
<?php

/**
 * Implements hook_views_api().
 */
function views_age_filter_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'views_age_filter') . '/views',
  );
}

/**
 * Implements hook_module_implements_alter().
 */
function views_age_filter_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'field_views_data_alter') {

    // Move my_module_rdf_mapping() to the end of the list. module_implements()
    // iterates through $implementations with a foreach loop which PHP iterates
    // in the order that the items were added, so to move an item to the end of
    // the array, we remove it and then add it.
    $group = $implementations['views_age_filter'];
    unset($implementations['views_age_filter']);
    $implementations['views_age_filter'] = $group;
  }
}

/**
 * Implements hook_field_views_data_alter().
 */
function views_age_filter_field_views_data_alter(&$result, $field, $module) {
  if ($module == 'date') {
    $has_end_date = !empty($field['settings']['todate']);
    foreach ($result as $table => $data) {
      $column_names = array(
        _field_sql_storage_columnname($field['field_name'], 'value'),
        _field_sql_storage_columnname($field['field_name'], 'value2'),
      );
      foreach ($column_names as $column) {
        if (isset($result[$table][$column]) && array_key_exists('filter', $result[$table][$column])) {
          $result[$table][$column . '_age_filter'] = array(
            'group' => $result[$table][$column]['group'],
            'title' => t('Age filter:') . ' ' . $result[$table][$column]['title'],
            'title short' => t('Age filter:') . ' ' . $result[$table][$column]['title short'],
            'help' => $result[$table][$column]['help'],
            'filter' => $result[$table][$column]['filter'],
          );
          $result[$table][$column . '_age_filter']['filter']['handler'] = 'views_age_filter_handler';
        }
      }
    }
  }
}