Quantcast
Channel: Issues for Drupal core
Viewing all articles
Browse latest Browse all 295991

EntityRepository::getActive does not return a translations most recent revision

$
0
0

Problem/Motivation

When using content moderation and translations, EntityRepository::getActive does not return the most recent translated revision.

To set this up, create a node with 2 pending draft translation revisions. I've been using lightning with paragraphs_demo to quickly set this up.

$nid = 1;
$latest_revisions = [];
$storage = \Drupal::service('entity_type.manager')->getStorage('node');
$entity = $storage->load($nid);
$language_manager = \Drupal::service('language_manager');
$context_definition= new ContextDefinition('language');
/* @var \Drupal\Core\Entity\EntityRepository $entity_repository */
$entity_repository = \Drupal::service('entity.repository');
if ($entity instanceof TranslatableInterface) {
  foreach ($entity->getTranslationLanguages() as $language) {
    $new_context =  new Context($context_definition, $language_manager->getLanguage($language->getId()));
    $contexts = [
      '@language.current_language_context:' . LanguageInterface::TYPE_CONTENT => $new_context,
      '@language.current_language_context:' . LanguageInterface::TYPE_INTERFACE => $new_context
    ];
    $latest_revisions[$language->getId()] = $entity_repository->getActive($entity->getEntityTypeId(), $entity->id(), $contexts);
  }
}

With the above,
$latest_revisions['en']->label(); returns the expected title of the pending English translation revision.
$latest_revisions['de']->label(); returns the unexpected title of the current English translation revision.

Proposed resolution

TBD

Remaining tasks

TBD

User interface changes

TBD

API changes

TBD

Data model changes

TBD

Release notes snippet

TBD


Viewing all articles
Browse latest Browse all 295991

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>