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

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

namespace Drupal\archivesspace\Plugin\migrate\process;

use Drupal\Component\Utility\UrlHelper;
use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\MigrateSkipProcessException;
use Drupal\migrate\ProcessPluginBase;
use Drupal\migrate\Row;

/**
 * Transforms an ArchivesSpace External Document object into a Link.
 *
 * We use this plugin so we can skip un-published external documents
 * without attempting to monkey a solution using the sub_process plugin.
 *
 * Currently only allows URIs using http and https; all others are skipped.
 *
 * @MigrateProcessPlugin(
 *   id = "external_document_link"
 * )
 */
class ExternalDocumentLink extends ProcessPluginBase {

  /**
   * {@inheritdoc}
   */
  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    if (empty($value) or
      !is_array($value) or
      empty($value['publish']) or
      !in_array(parse_url($value['location'], PHP_URL_SCHEME), UrlHelper::getAllowedProtocols())) {
      throw new MigrateSkipProcessException();
    }
    return [
      'title' => $value['title'],
      'uri' => $value['location'],
    ];
  }

}

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

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