public function AliasManager::getAliasByPath in Drupal 10
Same name and namespace in other branches
- 9 core/modules/path_alias/src/AliasManager.php \Drupal\path_alias\AliasManager::getAliasByPath()
File
- core/modules/path_alias/src/AliasManager.php, line 183
Class
- AliasManager
- The default alias manager implementation.
Namespace
Drupal\path_alias
Code
public function getAliasByPath($path, $langcode = NULL) {
if ($path[0] !== '/') {
throw new \InvalidArgumentException(sprintf('Source path %s has to start with a slash.', $path));
}
$langcode = $langcode ?: $this->languageManager
->getCurrentLanguage(LanguageInterface::TYPE_URL)
->getId();
if ($path === '/' || !$this->whitelist
->get(strtok(trim($path, '/'), '/'))) {
return $path;
}
if (empty($this->langcodePreloaded[$langcode])) {
$this->langcodePreloaded[$langcode] = TRUE;
$this->lookupMap[$langcode] = [];
if ($this->preloadedPathLookups === FALSE) {
$this->preloadedPathLookups = [];
if ($this->cacheKey) {
if ($cached = $this->cache
->get($this->cacheKey)) {
$this->preloadedPathLookups = $cached->data;
}
else {
$this->cacheNeedsWriting = TRUE;
}
}
}
if (!empty($this->preloadedPathLookups[$langcode])) {
$this->lookupMap[$langcode] = $this->pathAliasRepository
->preloadPathAlias($this->preloadedPathLookups[$langcode], $langcode);
$this->noAlias[$langcode] = array_flip(array_diff_key($this->preloadedPathLookups[$langcode], array_keys($this->lookupMap[$langcode])));
}
}
if (!empty($this->noAlias[$langcode][$path])) {
return $path;
}
if (isset($this->lookupMap[$langcode][$path])) {
return $this->lookupMap[$langcode][$path];
}
if ($path_alias = $this->pathAliasRepository
->lookupBySystemPath($path, $langcode)) {
$this->lookupMap[$langcode][$path] = $path_alias['alias'];
return $path_alias['alias'];
}
$this->noAlias[$langcode][$path] = TRUE;
return $path;
}