diff --git a/core/modules/hal/src/Normalizer/EntityReferenceItemImageNormalizer.php b/core/modules/hal/src/Normalizer/EntityReferenceItemImageNormalizer.php index ba81c42..41b0756 100644 --- a/core/modules/hal/src/Normalizer/EntityReferenceItemImageNormalizer.php +++ b/core/modules/hal/src/Normalizer/EntityReferenceItemImageNormalizer.php @@ -8,6 +8,7 @@ namespace Drupal\hal\Normalizer; use Drupal\hal\Normalizer\EntityReferenceItemNormalizer; +use Drupal\Core\Language\LanguageInterface; /** * Converts the Drupal entity reference image item object to HAL array structure. @@ -21,10 +22,21 @@ protected function constructValue($data, $context) { if (!empty($data['filename']) && !empty($data['value'])) { // Create the file entity and add it as a reference to the parent entity. $image = base64_decode($data['value']); - $filename = rand(1, 500) . $data['filename']; - $image = file_save_data($image, 'public://' . $filename); - if ($image) { - return array('target_id' => $image->id()); + // Transliterate the filename. + $filename = $data['filename']; + $transliteration_service = \Drupal::transliteration(); + $filename = $transliteration_service->transliterate($filename, LanguageInterface::LANGCODE_DEFAULT, '_'); + + // Build the file scheme to save the file. + $settings = $context['target_instance']->getFieldDefinition()->getSettings(); + $file_scheme = $settings['uri_scheme'] . '://' . $settings['file_directory']; + + // Save the image. + if (file_prepare_directory($file_scheme, FILE_CREATE_DIRECTORY)) { + $image = file_save_data($image, $file_scheme . '/' . $filename); + if (!empty($image)) { + return array('target_id' => $image->id()); + } } } return NULL;