public function PublishOnlyRendered::onPrunePublishCdfEntities in Acquia Lift Connector 8.4
Removes cdfs that are not part of the personalized content scheme.
Parameters
\Drupal\acquia_contenthub\Event\PrunePublishCdfEntitiesEvent $event: The current publishing event.
File
- modules/
acquia_lift_publisher/ src/ EventSubscriber/ Publish/ PublishOnlyRendered.php, line 105
Class
- PublishOnlyRendered
- Responsible for filtering contents based on publishing configurations.
Namespace
Drupal\acquia_lift_publisher\EventSubscriber\PublishCode
public function onPrunePublishCdfEntities(PrunePublishCdfEntitiesEvent $event) : void {
if (!$this
->personalizedContentPushIsActive()) {
return;
}
$cdf_document = $event
->getDocument();
$cdfs_to_remove = $cdf_document
->getEntities();
$rendered_entity = NULL;
foreach ($cdfs_to_remove as $uuid => $cdf_entity) {
if ($cdf_entity
->getType() === 'rendered_entity') {
$rendered_entity = $cdf_entity;
unset($cdfs_to_remove[$uuid]);
}
}
// Extra sanity check. The personalized content push was set to true,
// therefore, if for some reason the rendered entity is missing, stop the
// execution.
if (!$rendered_entity) {
return;
}
$se_uuid = $this
->getCdfEntityAttributeValue($rendered_entity, 'source_entity');
if (!$se_uuid) {
return;
}
$cdfs_to_keep = [
$se_uuid,
];
$source_entity = $cdfs_to_remove[$se_uuid];
$tags = $this
->getCdfEntityAttributeValue($source_entity, 'tags');
if (is_array($tags)) {
array_push($cdfs_to_keep, ...$tags);
}
$cdfs_to_remove = array_diff(array_keys($cdfs_to_remove), $cdfs_to_keep);
foreach ($cdfs_to_remove as $uuid) {
$cdf_document
->removeCdfEntity($uuid);
}
}