You are here

public function ConfigEntityRevisionsRevisionStorageHandler::getConfigEntity in Config Entity Revisions 8.2

Get a Config Entity instance from Content Entity Revision.

Parameters

\Drupal\config_entity_revisions\Entity\ConfigEntityRevisions $content_entity: The ConfigEntityRevisions entity instance.

Return value

\Drupal\config_entity_revisions\Entity\ConfigEntityRevisions The deserialised config entity.

Overrides ConfigEntityRevisionsRevisionStorageHandlerInterface::getConfigEntity

File

src/Entity/Handler/ConfigEntityRevisionsRevisionStorageHandler.php, line 252

Class

ConfigEntityRevisionsRevisionStorageHandler
Class ConfigEntityRevisionsRevisionStorageHandler.

Namespace

Drupal\config_entity_revisions\Entity\Handler

Code

public function getConfigEntity(ConfigEntityRevisions $content_entity, $class = '') {
  if ($class == '') {
    if (!$this->configEntity) {
      throw new Exception('No class name or instance suppled to ConfigEntityRevisionsRevisionStorageHandler::getConfigEntity');
    }
    $class = get_class($this->configEntity);
  }
  $config_entity = $this->serialiser
    ->deserialize($content_entity
    ->get('configuration')->value, $class, 'json');

  // The result of serialising and then deserialising is not an exact
  // copy of the original. This causes problems downstream if we don't fix
  // a few attributes here.
  $config_entity
    ->set('settingsOriginal', $config_entity
    ->get('settings'));
  $config_entity
    ->set('enforceIsNew', FALSE);
  $config_entity->loadedRevisionId = $content_entity
    ->getRevisionId();
  if ($config_entity->moderation_state) {
    $config_entity->moderation_state->value = $content_entity->moderation_state->value;
  }
  return $config_entity;
}