archivesspace-8.x-1.x-dev/src/Plugin/migrate/process/ArchivesSpaceInstances.php

src/Plugin/migrate/process/ArchivesSpaceInstances.php
<?php

namespace Drupal\archivesspace\Plugin\migrate\process;

use Drupal\migrate\MigrateException;
use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\Plugin\migrate\process\MigrationLookup;
use Drupal\migrate\Row;

/**
 * Transforms ArchivesSpace instances into field_archival_container objects.
 *
 * @MigrateProcessPlugin(
 *   id = "archivesspace_instances",
 *   handle_multiples = TRUE
 * )
 */
class ArchivesSpaceInstances extends MigrationLookup {

  /**
   * Flattens the source value to an array of keys.
   */
  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    if (!is_array($value)) {
      throw new MigrateException('Input should be an array.');
    }
    $instances = [];
    foreach ($value as $pos => $item) {
      if ($item['instance_type'] === 'digital_object') {
        // Skipping digital objects for now.
        continue;
      }
      $subcontainer = $item['sub_container'];

      $target_id = parent::transform($subcontainer['top_container']['ref'], $migrate_executable, $row, $destination_property);

      $indicator = '';
      if (isset($subcontainer['type_2']) && isset($subcontainer['indicator_2'])) {
        $indicator = $subcontainer['type_2'] . ' ' . $subcontainer['indicator_2'];
      }
      if (isset($subcontainer['type_3']) && isset($subcontainer['indicator_3'])) {
        $indicator .= $subcontainer['type_3'] . ' ' . $subcontainer['indicator_3'];
      }

      $instances[] = [
        'target_id' => $target_id,
        'subcontainer_indicator' => $indicator,
      ];
    }
    return $instances;
  }

  /**
   * {@inheritdoc}
   */
  public function multiple() {
    return TRUE;
  }

}

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

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