private function ContentEntityCdfNormalizer::processPassAlias in Acquia Content Hub 8
Processes path alias entities.
For imported entity replaces 'path' value by the local path. Removes some extra attributes like: title, path_uuid, target_entity_type.
Parameters
string $entity_type: Type of entity to process.
\Acquia\ContentHubClient\Entity $contenthub_entity: Content Hub entity for processing.
array $langcodes: Langcodes for processing.
Throws
\Drupal\Core\Entity\EntityMalformedException
\Drupal\Core\Entity\EntityStorageException
1 call to ContentEntityCdfNormalizer::processPassAlias()
- ContentEntityCdfNormalizer::denormalize in src/
Normalizer/ ContentEntityCdfNormalizer.php - Denormalizes data back into an object of the given class.
File
- src/
Normalizer/ ContentEntityCdfNormalizer.php, line 1547
Class
- ContentEntityCdfNormalizer
- Converts the Drupal entity object to a Acquia Content Hub CDF array.
Namespace
Drupal\acquia_contenthub\NormalizerCode
private function processPassAlias(string $entity_type, ContentHubEntity $contenthub_entity, array $langcodes) {
if ($entity_type !== 'path_alias') {
return;
}
$path_uuid = $contenthub_entity
->getAttribute('path_uuid');
$target_entity_type = $contenthub_entity
->getAttribute('target_entity_type');
$path_attribute = new Attribute(Attribute::TYPE_ARRAY_STRING);
foreach ($langcodes as $langcode) {
if (empty($path_uuid['value'][$langcode])) {
continue;
}
$local_target_entity = $this->entityRepository
->loadEntityByUuid($target_entity_type['value'][$langcode], $path_uuid['value'][$langcode]);
if (empty($local_target_entity)) {
continue;
}
$local_path = '/' . ltrim($local_target_entity
->toUrl()
->getInternalPath(), '/');
$path_attribute
->setValue($local_path, $langcode);
}
// Replace path attribute by local path.
$attributes = $contenthub_entity
->getAttributes();
$attributes['path'] = (array) $path_attribute;
$contenthub_entity
->setAttributes($attributes);
$contenthub_entity
->removeAttribute('title');
$contenthub_entity
->removeAttribute('path_uuid');
$contenthub_entity
->removeAttribute('target_entity_type');
}