multiversion-8.x-1.0-beta34/src/Plugin/migrate/source/EntityContentBase.php

src/Plugin/migrate/source/EntityContentBase.php
<?php

namespace Drupal\multiversion\Plugin\migrate\source;

/**
 * Migration source class for content entities.
 *
 * @MigrateSource(
 *   id = "multiversion"
 * )
 */
class EntityContentBase extends SourcePluginBase {

  /**
   * {@inheritdoc}
   */
  protected function initializeIterator() {
    // At this point Multiversion is obviously installed and the new storage
    // handler is already active. But since the new schema isn't applied yet
    // and the new handler doesn't know how to load from the old schema, we have
    // to initialize the previously installed storage handler and use that to
    // load the entities.
    $last_definition = $this->entityManager->getLastInstalledDefinition($this->entityTypeId);
    $storage_class = $last_definition->getStorageClass();
    $last_storage = $this->entityManager->createHandlerInstance($storage_class, $last_definition);
    $entities = $last_storage->loadMultiple();

    $results = [];
    foreach ($entities as $entity_id => $entity) {
      if (isset($entity->_deleted->value) && $entity->_deleted->value) {
        continue;
      }
      foreach($entity->getTranslationLanguages(TRUE) as $language) {
        $result = [];
        foreach ($entity->getTranslation($language->getId()) as $field_name => $field) {
          if (!$field->isEmpty()) {
            /** @var \Drupal\Core\Field\FieldItemListInterface $field */
            $value = $field->getValue();
            // If there is only one value in the field, unwrap it.
            if (count($value) == 1) {
              $value = reset($value);
              // If there's only one property in the field value, unwrap it.
              if (count($value) == 1 && empty($value['langcode'])) {
                $value = reset($value);
              }
            }
            $result[$field_name] = $value;
          }
        }
        $results[] = $result;
      }
    }

    return new \ArrayIterator(array_values($results));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc