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

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

namespace Drupal\archivesspace\Plugin\migrate\process;

use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\MigrateSkipRowException;
use Drupal\migrate\Plugin\migrate\process\SubProcess;
use Drupal\migrate\Row;

/**
 * Runs an array of arrays through its own process pipeline.
 *
 * The sub_process plugin accepts an array of associative arrays and runs each
 * one through its own process pipeline, producing a newly keyed associative
 * array of transformed values.
 *
 * Available configuration keys:
 *   - process: the plugin(s) that will process each element of the source.
 *   - key: runs the process pipeline for the key to determine a new dynamic
 *     name.
 *
 * @see \Drupal\migrate\Plugin\migrate\process\SubProcess
 *
 * @MigrateProcessPlugin(
 *   id = "sub_process_ext",
 *   handle_multiples = TRUE
 * )
 */
class SubProcessExt extends SubProcess {

  /**
   * {@inheritdoc}
   */
  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    // print("Extracting from: ".print_r($value,true)."\n");.
    $return = [];
    if (is_array($value) || $value instanceof \Traversable) {
      foreach ($value as $key => $new_value) {
        try {
          $new_row = new Row($new_value, []);
          $migrate_executable->processRow($new_row, $this->configuration['process']);
          $destination = $new_row->getDestination();
          if (array_key_exists('key', $this->configuration)) {
            $key = $this->transformKey($key, $migrate_executable, $new_row);
          }
          $return[$key] = $destination;
        }
        catch (MigrateSkipRowException $e) {
          // Do nothing, we want to keep processing the next sub-row.
          // We may re-throw it in the future based on a yet-to-be-determined
          // flag.
        }
      }
    }
    return $return;
  }

}

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

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