content_sync-8.x-2.x-dev/src/Plugin/SyncNormalizerDecoratorTrait.php
src/Plugin/SyncNormalizerDecoratorTrait.php
<?php
namespace Drupal\content_sync\Plugin;
use Drupal\Core\Entity\ContentEntityInterface;
trait SyncNormalizerDecoratorTrait {
protected function decorateNormalization(array &$normalized_entity, ContentEntityInterface $entity, $format, array $context = []) {
$plugins = $this->getDecoratorManager()->getDefinitions();
// Make sure ID cleaner is the last plugin.
$v = $plugins['id_cleaner'];
unset($plugins['id_cleaner']);
$plugins['id_cleaner'] = $v;
foreach ($plugins as $decorator) {
/* @var $instance SyncNormalizerDecoratorInterface */
$instance = $this->getDecoratorManager()->createInstance($decorator['id']);
$instance->decorateNormalization($normalized_entity, $entity, $format, $context);
}
}
protected function decorateDenormalization(array &$normalized_entity, $type, $format, array $context = []) {
$plugins = $this->getDecoratorManager()->getDefinitions();
foreach ($plugins as $decorator) {
/* @var $instance SyncNormalizerDecoratorInterface */
$instance = $this->getDecoratorManager()->createInstance($decorator['id']);
$instance->decorateDenormalization($normalized_entity, $type, $format, $context);
}
}
protected function decorateDenormalizedEntity(ContentEntityInterface $entity, array $normalized_entity, $format, array $context = []) {
$plugins = $this->getDecoratorManager()->getDefinitions();
foreach ($plugins as $decorator) {
/* @var $instance SyncNormalizerDecoratorInterface */
$instance = $this->getDecoratorManager()->createInstance($decorator['id']);
$instance->decorateDenormalizedEntity($entity, $normalized_entity, $format, $context);
}
}
/**
* @return SyncNormalizerDecoratorManager
*/
protected abstract function getDecoratorManager();
}