function system_path_alias_presave in Drupal 8
Implements hook_ENTITY_TYPE_presave().
File
- core/
modules/ system/ system.module, line 1459 - Configuration system that lets administrators modify the workings of the site.
Code
function system_path_alias_presave(PathAliasInterface $path_alias) {
// Prevent path aliases from being saved if the "url_alias" migration was not
// performed yet. This avoids the risk of introducing duplicate aliases or get
// the new path alias schema in an inconsistent state.
if (Settings::get('system.path_alias_schema_check', TRUE) && drupal_get_installed_schema_version('system') < 8804) {
/** @var \Drupal\system\Access\DbUpdateAccessCheck $db_update_access */
$db_update_access = \Drupal::service('access_check.db_update');
if ($db_update_access
->access(\Drupal::currentUser())
->isAllowed()) {
$args = [
':url' => Url::fromUri('base://update.php')
->toString(),
];
\Drupal::messenger()
->addError(t('Path aliases cannot be saved until <a href=":url">database updates</a> are performed.', $args));
}
else {
\Drupal::messenger()
->addError(t('Path aliases cannot be saved until <em>database updates</em> are performed.'));
}
$message = 'Path alias "@alias" ("@path") could not be saved because the "system_update_8804" database update was not applied yet.';
$args = [
'@path' => $path_alias
->getPath(),
'@alias' => $path_alias
->getAlias(),
];
throw new \LogicException(new FormattableMarkup($message, $args));
}
}