You are here

function language_hierarchy_query_path_alias_language_fallback_alter in Language Hierarchy 2.x

Same name and namespace in other branches
  1. 8 language_hierarchy.module \language_hierarchy_query_path_alias_language_fallback_alter()

Implements hook_query_TAG_alter().

Order the fallback candidates to be used when querying path aliases.

See also

\Drupal\path_alias\AliasRepository::addLanguageFallback()

File

./language_hierarchy.module, line 71
Add sublanguage handling functionality to Drupal.

Code

function language_hierarchy_query_path_alias_language_fallback_alter(AlterableInterface $query) {
  if (!$query instanceof SelectInterface) {
    return;
  }
  $alias = $query
    ->leftJoin('language_hierarchy_priority', 'lhp', "base_table.langcode = %alias.langcode");

  // Replace the existing language code ordering.
  $fields =& $query
    ->getOrderBy();
  unset($fields['base_table.langcode']);
  $fields = [
    $alias . '.priority' => 'DESC',
  ] + $fields;

  // Limit the query as only the first result will be used anyway.
  $query
    ->range(0, 1);
}