public function FileEntityNormalizer::normalize in Content Synchronization 3.0.x
Same name and namespace in other branches
- 8.2 src/Normalizer/FileEntityNormalizer.php \Drupal\content_sync\Normalizer\FileEntityNormalizer::normalize()
Overrides ContentEntityNormalizer::normalize
File
- src/
Normalizer/ FileEntityNormalizer.php, line 128
Class
- FileEntityNormalizer
- Adds the file URI to embedded file entities.
Namespace
Drupal\content_sync\NormalizerCode
public function normalize($object, $format = NULL, array $serializer_context = array()) {
$data = parent::normalize($object, $format, $serializer_context);
// The image will be saved in the export directory.
if (!empty($serializer_context['content_sync_directory_files'])) {
$uri = $object
->getFileUri();
$scheme = \Drupal::service('stream_wrapper_manager')
->getScheme($uri);
$destination = "{$serializer_context['content_sync_directory_files']}/{$scheme}/";
$destination = str_replace($scheme . '://', $destination, $uri);
$prep_dir = $this->fileSystem
->dirname($destination);
$this->fileSystem
->prepareDirectory($prep_dir, FileSystemInterface::CREATE_DIRECTORY);
$this->fileSystem
->copy($uri, $destination, FileSystemInterface::EXISTS_REPLACE);
}
// Set base64-encoded file contents to the "data" property.
if (!empty($serializer_context['content_sync_file_base_64'])) {
$file_data = base64_encode(file_get_contents($object
->getFileUri()));
$data['data'] = [
[
'value' => $file_data,
],
];
}
return $data;
}