diff --git a/src/MultiversionManager.php b/src/MultiversionManager.php index 1acffb8..c9f8c08 100644 --- a/src/MultiversionManager.php +++ b/src/MultiversionManager.php @@ -380,6 +380,21 @@ class MultiversionManager implements MultiversionManagerInterface, ContainerAwar } /** + * @param unknown $normalized_entity + */ + protected function filterNormalizedEntity(&$normalized_entity){ + foreach ($normalized_entity as $key => &$value) { + if ($key{0} == '_') { + unset($normalized_entity[$key]); + }else{ + if(is_array($value)){ + $this->filterNormalizedEntity($value); + } + } + } + } + + /** * {@inheritdoc} */ public function newRevisionId(ContentEntityInterface $entity, $index = 0) { @@ -389,11 +404,7 @@ class MultiversionManager implements MultiversionManagerInterface, ContainerAwar // necessary) to identify in which format to return the normalized entity. $normalized_entity = $this->serializer->normalize($entity, NULL, ['new_revision_id' => TRUE]); // Remove fields internal to the multiversion system. - foreach ($normalized_entity as $key => $value) { - if ($key{0} == '_') { - unset($normalized_entity[$key]); - } - } + $this->filterNormalizedEntity($normalized_entity); // The terms being serialized are: // - deleted // - old sequence ID (@todo: {@link https://www.drupal.org/node/2597341