Open Data Catalog v2.0.0
ResourceImporter.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use Drupal\Core\Site\Settings;
6 use Harvest\ETL\Transform\Transform;
7 use Drupal\dkan_harvest\Load\FileHelperTrait;
8 
14 class ResourceImporter extends Transform {
15 
16  use FileHelperTrait;
17 
23  public function run($dataset) {
24  $this->testEnvironment();
25  return $this->updateDistributions($dataset);
26  }
27 
33  protected function testEnvironment() {
34  $setting = Settings::get('file_public_base_url');
35  if (!isset($setting) || empty($setting)) {
36  throw new \Exception("file_public_base_url should be set.");
37  }
38  return TRUE;
39  }
40 
50  protected function updateDistributions($dataset) {
51  // Abort if there's no distributions.
52  if (empty($dataset->distribution)) {
53  return $dataset;
54  }
55 
56  $distributions = [];
57 
58  // Loop through distributions.
59  foreach ($dataset->distribution as $dist) {
60  $distributions[] = $this->updateDownloadUrl($dataset, $dist);
61  }
62 
63  // Update distributions.
64  $dataset->distribution = $distributions;
65 
66  return $dataset;
67  }
68 
80  protected function updateDownloadUrl($dataset, $dist) {
81  // Abort if there's no downloadURL property.
82  if (empty($dist->downloadURL)) {
83  return $dist;
84  }
85 
86  // Import distribution file.
87  $newUrl = $this->saveFile($dist->downloadURL, $dataset->identifier);
88 
89  // If successful, update downloadURL.
90  if ($newUrl) {
91  $dist->downloadURL = $newUrl;
92  }
93 
94  return $dist;
95 
96  }
97 
113  public function saveFile($url, $dataset_id) {
114 
115  $targetDir = 'public://distribution/' . $dataset_id;
116 
117  $fileHelper = $this->getFileHelper();
118 
119  $fileHelper->prepareDir($targetDir);
120 
121  // Abort if file can't be saved locally.
122  if (!($path = $fileHelper->retrieveFile($url, $targetDir))) {
123  return FALSE;
124  }
125 
126  if (is_object($path)) {
127  return file_create_url($path->uri->value);
128  }
129  else {
130  return $fileHelper->fileCreate($path);
131  }
132  }
133 
134 }
Drupal\dkan_harvest\Transform\ResourceImporter\updateDownloadUrl
updateDownloadUrl($dataset, $dist)
Definition: ResourceImporter.php:80
Drupal\dkan_harvest\Transform\ResourceImporter
Definition: ResourceImporter.php:14
Drupal\dkan_harvest\Transform\ResourceImporter\updateDistributions
updateDistributions($dataset)
Definition: ResourceImporter.php:50
Drupal\dkan_harvest\Transform\ResourceImporter\run
run($dataset)
Definition: ResourceImporter.php:23
Drupal\dkan_harvest\Transform
Definition: ResourceImporter.php:3
Drupal\dkan_harvest\Transform\ResourceImporter\testEnvironment
testEnvironment()
Definition: ResourceImporter.php:33
Drupal\dkan_harvest\Transform\ResourceImporter\saveFile
saveFile($url, $dataset_id)
Definition: ResourceImporter.php:113