The EntityFile currently does:
$file = $row->getSourceProperty($this->configuration['source_path_property']);
This is wrong, the destinations should never look at the source directly. Its also a complicated and opinionated destination, if you already have the files in the right place for example, its quite tricky to use. Also, it is the only destination plugin which contains a
preg_replace clearly showing it's more process than destination.
- Create a FileCopy process plugin to handle most of the move/copy logic in the destination.
- Remove the urlencode feature, this can be done in the source if you need it.
- Remove destination_path_property from EntityFile, it doesn't need to be configurable, if you need that, write a new destination.
- Remove source_path_property from EntityFile, no longer needed.
- Remove source_base_path from EntityFile, no longer needed.
- Fix file_umanaged_copy() to support remote file, new issue?
We can now use the process plugin like so:
source_full_path: plugin: concat delimiter: / source: - constants/source_base_path - source_relative_path uri: plugin: file_copy source: @source_full_path
User interface changes
Yes, if you were using the destination in a custom migration, you may need to now use the process plugin in your migration yml.
Data model changes