You are here

function language_hierarchy_views_data_alter in Language Hierarchy 2.x

Same name and namespace in other branches
  1. 8 language_hierarchy.views.inc \language_hierarchy_views_data_alter()

Implements hook_views_data_alter().

File

./language_hierarchy.views.inc, line 10
Views hooks for the Language Hierarchy module.

Code

function language_hierarchy_views_data_alter(&$data) {

  // Add filters for language with fallback, for content translations.
  foreach (\Drupal::entityTypeManager()
    ->getDefinitions() as $entity_type_id => $entity_type) {
    if ($entity_type
      ->hasHandlerClass('views_data')) {
      if ($lang_key = $entity_type
        ->getKey('langcode')) {
        $tables = [];
        if ($current_data_table = $entity_type
          ->getDataTable()) {
          $tables[] = $current_data_table;
        }
        if ($revision_data_table = $entity_type
          ->getRevisionDataTable()) {
          $tables[] = $revision_data_table;
        }
        foreach ($tables as $table) {
          if (!empty($data[$table][$lang_key]['filter']['id']) && $data[$table][$lang_key]['filter']['id'] === 'language') {
            $data[$table]['language_hierarchy_content_language_fallback_limited_' . $lang_key] = [
              'title' => t('Most relevant translation (using fallback)'),
              'help' => t('Shows only the translation that is most specific to the content language.'),
              'filter' => array(
                'id' => 'language_hierarchy_content_language_fallback_limited',
              ),
              'real field' => $lang_key,
              'entity field' => $lang_key,
            ];
          }

          // Add sort handler for language relevancy.
          $data[$table]['language_hierarchy_sort'] = [
            'title' => t('Content language relevance'),
            'help' => t('Sort content by relevance to the content language within the configured language hierarchy.'),
            'sort' => [
              'id' => 'language_hierarchy_sort',
            ],
            'real field' => $lang_key,
            'entity field' => $lang_key,
          ];
        }
      }
    }
  }
}