dcat-8.x-1.x-dev/dcat_import/src/Plugin/migrate/source/ThemeDcatFeedSource.php

dcat_import/src/Plugin/migrate/source/ThemeDcatFeedSource.php
<?php

namespace Drupal\dcat_import\Plugin\migrate\source;

use EasyRdf_Resource;
use EasyRdf_Graph;

/**
 * Theme feed source.
 *
 * @MigrateSource(
 *   id = "dcat.theme"
 * )
 */
class ThemeDcatFeedSource extends DcatFeedSource {

  /**
   * Not in use.
   *
   * @see getDcatData()
   */
  public function getDcatType() {
    return '';
  }

  /**
   * {@inheritdoc}
   */
  public function getDcatData(EasyRdf_Graph $graph) {
    $data = array();
    $datasets = $graph->allOfType('dcat:Dataset');

    /** @var EasyRdf_Resource $dataset */
    foreach ($datasets as $dataset) {
      $themes = $this->getValue($dataset, 'dcat:theme');
      if ($themes) {
        $themes = is_array($themes) ? $themes : array($themes);
        $data += array_combine($themes, $themes);
      }
    }

    return $data;
  }

  /**
   * {@inheritdoc}
   */
  public function fields() {
    return array(
      'uri' => t('URI / ID'),
      'name' => t('Name'),
    );
  }

  /**
   * {@inheritdoc}
   */
  public function initializeIterator() {
    $data = array();

    /** @var EasyRdf_Resource $theme */
    foreach ($this->getSourceData() as $theme) {
      // Until we have a better solution, we'll use the URI as name.
      $data[] = array(
        'uri' => $theme,
        'name' => $theme,
      );
    }

    return new \ArrayIterator($data);
  }

  /**
   * {@inheritdoc}
   */
  public function getIds() {
    $ids['uri']['type'] = 'string';
    return $ids;
  }

}

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

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