name.views.inc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * @file
  4. */
  5. /**
  6. * Implements hook_views_data_alter().
  7. *
  8. * Adds new fulltext name filter handler for every name field.
  9. */
  10. function name_views_data_alter(&$data) {
  11. $name_fields = array();
  12. foreach (field_info_field_map() as $field_name => $field) {
  13. if ($field['type'] == 'name') {
  14. $name_fields[$field_name] = field_info_field($field_name);
  15. }
  16. }
  17. foreach ($data as $field_name => $field_data) {
  18. foreach (array_keys($name_fields) as $name) {
  19. // Check on field storage type prevents warnings on non-sql field storage.
  20. if (isset($field_data[$name]) && $name_fields[$name]['storage']['type'] == 'field_sql_storage') {
  21. $data[$field_name][$name]['filter'] = array(
  22. 'field' => $name,
  23. 'table' => key($name_fields[$name]['storage']['details']['sql'][FIELD_LOAD_CURRENT]),
  24. 'handler' => 'name_handler_filter_name_fulltext',
  25. 'field_name' => $name,
  26. 'allow_empty' => TRUE,
  27. );
  28. $components = array_filter($name_fields[$name]['settings']['components']);
  29. foreach (_name_translations() as $key => $title) {
  30. if (in_array($key, $components)) {
  31. $component_key = $name . '_' . $key;
  32. $data[$field_name][$component_key] = array(
  33. 'title' => $title,
  34. 'help' => t('@component component of the @label field.', array('@component' => $title, '@label' => $data[$field_name][$name]['title'])),
  35. 'field' => array(
  36. 'handler' => 'views_handler_field',
  37. 'type' => 'text',
  38. ),
  39. 'field' => array(
  40. 'group' => t('Name Components'),
  41. 'handler' => 'views_handler_field',
  42. 'click sortable' => TRUE,
  43. 'link_to_node default' => TRUE,
  44. ),
  45. 'sort' => array(
  46. 'group' => t('Name Components'),
  47. 'handler' => 'views_handler_sort',
  48. ),
  49. 'filter' => array(
  50. 'group' => t('Name Components'),
  51. 'handler' => 'views_handler_filter_string',
  52. ),
  53. 'argument' => array(
  54. 'group' => t('Name Components'),
  55. 'handler' => 'views_handler_argument_string',
  56. ),
  57. );
  58. }
  59. }
  60. }
  61. }
  62. }
  63. }