dcat-8.x-1.x-dev/dcat_import/src/Plugin/migrate/source/TermDcatFeedSource.php
dcat_import/src/Plugin/migrate/source/TermDcatFeedSource.php
<?php
namespace Drupal\dcat_import\Plugin\migrate\source;
use Drupal\Component\Utility\Unicode;
use EasyRdf_Resource;
use EasyRdf_Graph;
use Drupal\migrate\Row;
/**
* DCAT Term feed source.
*/
abstract class TermDcatFeedSource extends DcatFeedSource {
/**
* Returns the DCAT term field to extract from the feed.
*
* E.g. dcat:keyword.
*
* @return string
* The DCAT term field to extract.
*/
public abstract function getTermField();
/**
* {@inheritdoc}
*/
public function fields() {
return array(
'name' => t('Name'),
);
}
/**
* {@inheritdoc}
*/
public function getDcatData(EasyRdf_Graph $graph) {
$data = array();
$datasets = $graph->allOfType('dcat:Dataset');
/** @var EasyRdf_Resource $dataset */
foreach ($datasets as $dataset) {
$keywords = $this->getValue($dataset, $this->getTermField());
if ($keywords) {
$keywords = is_array($keywords) ? $keywords : array($keywords);
$data += array_combine($keywords, $keywords);
}
}
foreach ($data as &$keyword) {
$keyword = Unicode::truncate($keyword, 255);
}
if (!empty($this->configuration['lowercase_taxonomy_terms'])) {
$data = array_map('strtolower', $data);
$data = array_unique($data);
}
array_filter($data);
return $data;
}
/**
* {@inheritdoc}
*/
public function initializeIterator() {
$data = array();
foreach ($this->getSourceData() as $term) {
$data[] = array(
'name' => $term,
);
}
return new \ArrayIterator($data);
}
/**
* {@inheritdoc}
*/
public function getIds() {
$ids['name']['type'] = 'string';
return $ids;
}
}
