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

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

namespace Drupal\dcat_import\Plugin\migrate\source;

use EasyRdf_Resource;
use EasyRdf_Graph;

/**
 * External theme feed source.
 *
 * @MigrateSource(
 *   id = "dcat.global_theme"
 * )
 */
class ThemeGlobalDcatFeedSource extends DcatFeedSource {

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

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

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

    /** @var EasyRdf_Resource $theme */
    foreach ($this->getSourceData() as $theme) {

      $data[] = array(
        'uri' => $theme->getUri(),
        'name' => $this->getValue($theme, 'skos:prefLabel'),
        'description' => $this->getValue($theme, 'rdfs:comment'),
        'mapping' => $this->getMappingValues($theme),
      );
    }

    return new \ArrayIterator($data);
  }

  /**
   * Returns list of matching tags.
   *
   * @return array
   *   The list of matching tags.
   */
  public static function mappingTags() {
    return [
      'skos:exactMatch',
      'skos:closeMatch',
      'skos:relatedMatch',
      'skos:broadMatch',
      'skos:narrowMatch',
    ];
  }

  /**
   * Returns the mapping field values for the given $theme.
   *
   * @param EasyRdf_Resource $theme
   *   The resource to get the mapping values from.
   *
   * @return array|null|string
   *   The mapping values.
   */
  public function getMappingValues(EasyRdf_Resource $theme) {
    $mapping = [];
    foreach (self::mappingTags() as $tag) {
      $mapping = array_merge($mapping, $this->getValueArray($theme, $tag));
    }

    return $mapping;
  }

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

}

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

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