Newer
Older
<?php
namespace Drupal\migrate_plus\Plugin\migrate\source;
use Drupal\migrate\Plugin\MigrationInterface;
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* Source plugin for retrieving data via URLs.
*
* @MigrateSource(
* id = "url"
* )
*/
class Url extends SourcePluginExtension {
/**
* The source URLs to retrieve.
*
* @var array
*/
protected $sourceUrls = [];
/**
* The data parser plugin.
*
* @var \Drupal\migrate_plus\DataParserPluginInterface
*/
protected $dataParserPlugin;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration) {
if (!is_array($configuration['urls'])) {
$configuration['urls'] = [$configuration['urls']];
}
parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
$this->sourceUrls = $configuration['urls'];
}
/**
* Return a string representing the source URLs.
*
* @return string
* Comma-separated list of URLs being imported.
*/
public function __toString() {
// This could cause a problem when using a lot of urls, may need to hash.
$urls = implode(', ', $this->sourceUrls);
return $urls;
}
/**
* Returns the initialized data parser plugin.
*
* @return \Drupal\migrate_plus\DataParserPluginInterface
* The data parser plugin.
*/
public function getDataParserPlugin() {
if (!isset($this->dataParserPlugin)) {
$this->dataParserPlugin = \Drupal::service('plugin.manager.migrate_plus.data_parser')->createInstance($this->configuration['data_parser_plugin'], $this->configuration);
}
return $this->dataParserPlugin;
}
/**
* Creates and returns a filtered Iterator over the documents.
*
* @return \Iterator
* An iterator over the documents providing source rows that match the
* configured item_selector.
*/
protected function initializeIterator() {
return $this->getDataParserPlugin();
}
}