handler_filter_language.inc 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * @file
  4. * Contains the SearchApiViewsHandlerFilterLanguage class.
  5. */
  6. /**
  7. * Views filter handler class for handling the special "Item language" field.
  8. *
  9. * Definition items:
  10. * - options: An array of possible values for this field.
  11. */
  12. class SearchApiViewsHandlerFilterLanguage extends SearchApiViewsHandlerFilterOptions {
  13. /**
  14. * {@inheritdoc}
  15. */
  16. protected function get_value_options() {
  17. parent::get_value_options();
  18. $options = array();
  19. if (module_exists('language_hierarchy')) {
  20. $options['fallback'] = t("Current user's language with fallback");
  21. }
  22. $options['current'] = t("Current user's language");
  23. $options['default'] = t('Default site language');
  24. $this->value_options = $options + $this->value_options;
  25. }
  26. /**
  27. * Add this filter to the query.
  28. */
  29. public function query() {
  30. global $language_content;
  31. if (!is_array($this->value)) {
  32. $this->value = $this->value ? array($this->value) : array();
  33. }
  34. foreach ($this->value as $i => $v) {
  35. if ($v == 'current') {
  36. $this->value[$i] = $language_content->language;
  37. }
  38. elseif ($v == 'default') {
  39. $this->value[$i] = language_default('language');
  40. }
  41. elseif ($v == 'fallback' && module_exists('language_hierarchy')) {
  42. $fallbacks = array($language_content->language => $language_content->language);
  43. $fallbacks += array_keys(language_hierarchy_get_ancestors($language_content->language));
  44. $this->value[$i] = drupal_map_assoc($fallbacks);
  45. }
  46. }
  47. parent::query();
  48. }
  49. }