You are here

public function AliasStorage::lookupPathSource in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Path/AliasStorage.php \Drupal\Core\Path\AliasStorage::lookupPathSource()

Returns Drupal system URL of an alias.

The default implementation performs case-insensitive matching on the 'source' and 'alias' strings.

Parameters

string $path: The path to investigate for corresponding system URLs.

string $langcode: Language code to search the path with. If there's no path defined for that language it will search paths without language.

Return value

string|false A Drupal system path, or FALSE if no path was found.

Overrides AliasStorageInterface::lookupPathSource

File

core/lib/Drupal/Core/Path/AliasStorage.php, line 210
Contains \Drupal\Core\Path\AliasStorage.

Class

AliasStorage
Provides a class for CRUD operations on path aliases.

Namespace

Drupal\Core\Path

Code

public function lookupPathSource($path, $langcode) {
  $alias = $this->connection
    ->escapeLike($path);
  $langcode_list = [
    $langcode,
    LanguageInterface::LANGCODE_NOT_SPECIFIED,
  ];

  // See the queries above. Use LIKE for case-insensitive matching.
  $select = $this->connection
    ->select('url_alias')
    ->fields('url_alias', [
    'source',
  ])
    ->condition('alias', $alias, 'LIKE');
  if ($langcode == LanguageInterface::LANGCODE_NOT_SPECIFIED) {
    array_pop($langcode_list);
  }
  elseif ($langcode > LanguageInterface::LANGCODE_NOT_SPECIFIED) {
    $select
      ->orderBy('langcode', 'DESC');
  }
  else {
    $select
      ->orderBy('langcode', 'ASC');
  }
  $select
    ->orderBy('pid', 'DESC');
  $select
    ->condition('langcode', $langcode_list, 'IN');
  return $select
    ->execute()
    ->fetchField();
}