26 $this->datasetPresave();
30 $this->distributionPresave();
38 private function datasetPresave() {
44 $title = isset($metadata->title) ? $metadata->title : $metadata->name;
46 $entity->setTitle($title);
49 if (!isset($metadata->identifier)) {
50 $metadata->identifier = $entity->uuid();
54 $entity->set(
'uuid', $metadata->identifier);
57 $referencer = \Drupal::service(
"dkan_data.referencer");
58 $metadata = $referencer->reference($this->
getMetaData());
62 if (isset($entity->original)) {
63 $orphanChecker = \Drupal::service(
"dkan_data.orphan_checker");
64 $orphanChecker->processReferencesInUpdatedDataset(
65 json_decode($entity->referenced_metadata),
74 private function distributionPresave() {
76 $host = \Drupal::request()->getHost();
77 if (isset($metadata->data->downloadURL)) {
78 $newUrl = $metadata->data->downloadURL;
79 $parsedUrl = parse_url($newUrl);
80 if ($parsedUrl[
'host'] == $host) {
82 $metadata->data->downloadURL = $this->unparseUrl($parsedUrl);
92 private function unparseUrl($parsedUrl) {
105 foreach ($urlParts as $part) {
106 if (!isset($parsedUrl[$part])) {
109 $url .= ($part ==
"port") ?
':' :
'';
110 $url .= ($part ==
"query") ?
'?' :
'';
111 $url .= ($part ==
"fragment") ?
'#' :
'';
112 $url .= $parsedUrl[$part];
113 $url .= ($part ==
"scheme") ?
'://' :
'';