public static function ImporterService::save in Path redirect import 8
Save an individual redirect entity, if no redirect already exists.
Parameters
str[] $redirect_array: Keyed array of redirects, in the format [source, redirect, status_code, language].
bool $override: A 1 indicates that existing redirects should be updated.
1 call to ImporterService::save()
- ImporterService::import in src/
ImporterService.php - Main method: execute parsing and saving of redirects.
File
- src/
ImporterService.php, line 221
Class
- ImporterService
- Class ImporterService.
Namespace
Drupal\path_redirect_importCode
public static function save(array $redirect_array, $override) {
if ($redirects = self::redirectExists($redirect_array)) {
if ($override == 1) {
$redirect = reset($redirects);
$message_type = 'Updated';
}
else {
return;
}
}
else {
$message_type = 'Added';
$parsed_url = UrlHelper::parse(trim($redirect_array['source']));
$path = isset($parsed_url['path']) ? $parsed_url['path'] : NULL;
$query = isset($parsed_url['query']) ? $parsed_url['query'] : NULL;
/** @var \Drupal\redirect\Entity\Redirect $redirect */
$redirectEntityManager = \Drupal::service('entity.manager')
->getStorage('redirect');
$redirect = $redirectEntityManager
->create();
$redirect
->setSource($path, $query);
}
// Currently, the Redirect module's setRedirect function assumes
// all paths are internal. If external, we will use redirect_redirect->set.
if (parse_url($redirect_array['redirect'], PHP_URL_SCHEME)) {
$redirect->redirect_redirect
->set(0, [
'uri' => $redirect_array['redirect'],
]);
}
else {
$redirect
->setRedirect($redirect_array['redirect']);
}
$redirect
->setStatusCode($redirect_array['status_code']);
$redirect
->setLanguage($redirect_array['language']);
$redirect
->save();
\Drupal::messenger()
->addStatus(t('@message_type redirect from @source to @redirect', [
'@message_type' => $message_type,
'@source' => $redirect_array['source'],
'@redirect' => $redirect_array['redirect'],
]));
}