diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php index 25f8f9a..871a4a1 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php @@ -818,6 +818,7 @@ protected function initializeTranslation($langcode) { $translation->translatableEntityKeys = &$this->translatableEntityKeys; $translation->translationInitialize = FALSE; $translation->typedData = NULL; + $translation->originalRevisionId = NULL; return $translation; } @@ -1065,6 +1066,10 @@ public function __clone() { // original reference with one pointing to a copy of it. $enforce_is_new = $this->enforceIsNew; $this->enforceIsNew = &$enforce_is_new; + + if ($this->getEntityType()->isRevisionable()) { + $this->originalRevisionId = NULL; + } } } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php index 33fc951..151bad9 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php @@ -3,6 +3,7 @@ namespace Drupal\KernelTests\Core\Entity; use Drupal\entity_test\Entity\EntityTestMulRev; +use Drupal\language\Entity\ConfigurableLanguage; /** * Tests the original revision of an entity. @@ -16,7 +17,12 @@ class EntityOriginalRevisionTest extends EntityKernelTestBase { * * @var array */ - public static $modules = ['system', 'entity_test']; + public static $modules = [ + 'system', + 'entity_test', + 'language', + 'content_translation', + ]; /** * {@inheritdoc} @@ -32,6 +38,8 @@ protected function setUp() { * Test getOriginalRevisionId() returns the correct ID throughout the process. */ public function testOriginalRevisionId() { + ConfigurableLanguage::createFromLangcode('fr')->save(); + // Create a basic EntityTestMulRev entity and save it. $entity = EntityTestMulRev::create(); $entity->save(); @@ -81,5 +89,11 @@ public function testOriginalRevisionId() { $duplicate = $loaded->createDuplicate(); $this->assertSame(NULL, $duplicate->getOriginalRevisionId()); + + $clone = clone $loaded; + $this->assertSame(NULL, $clone->getOriginalRevisionId()); + + $french = $loaded->addTranslation('fr'); + $this->assertSame(NULL, $french->getOriginalRevisionId()); } }