dcat-8.x-1.x-dev/dcat_import/src/Plugin/migrate/source/AgentDcatFeedSource.php
dcat_import/src/Plugin/migrate/source/AgentDcatFeedSource.php
<?php
namespace Drupal\dcat_import\Plugin\migrate\source;
use EasyRdf_Resource;
use EasyRdf_Graph;
/**
* Agent feed source.
*
* @MigrateSource(
* id = "dcat.agent"
* )
*/
class AgentDcatFeedSource extends DcatFeedSource {
/**
* Not in use.
*
* @see getDcatData()
*/
public function getDcatType() {
return '';
}
/**
* {@inheritdoc}
*/
public function getDcatData(EasyRdf_Graph $graph) {
$publishers = array();
$datasets = $graph->allOfType('dcat:Dataset');
/** @var EasyRdf_Resource $dataset */
foreach ($datasets as $dataset) {
$publishers = array_merge($publishers, $dataset->allResources('dc:publisher'));
}
// Remove duplicates.
$uris = array();
/** @var EasyRdf_Resource $publisher */
foreach ($publishers as $key => $publisher) {
$uri = $publisher->getUri();
if (isset($uris[$uri])) {
unset($publishers[$key]);
}
else {
$uris[$uri] = $uri;
}
}
return $publishers;
}
/**
* {@inheritdoc}
*/
public function fields() {
return array(
'uri' => t('URI / ID'),
'name' => t('Name'),
'type' => t('Type'),
);
}
/**
* {@inheritdoc}
*/
public function initializeIterator() {
$data = array();
/** @var EasyRdf_Resource $agent */
foreach ($this->getSourceData() as $agent) {
$data[] = array(
'uri' => $agent->getUri(),
'name' => $this->getValue($agent, 'foaf:name'),
'agent_type' => $this->getValue($agent, 'dc:type'),
);
}
return new \ArrayIterator($data);
}
/**
* {@inheritdoc}
*/
public function getIds() {
$ids['uri']['type'] = 'string';
return $ids;
}
}
