mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #7412 from open-sausages/pulls/4.0/fun-times-in-thumbnails
Enhancement add notice for MigrateFileTask if FileMigrationHelper doesn't exist
This commit is contained in:
commit
b4910e133c
57
docs/en/02_Developer_Guides/14_Files/04_File_Migration.md
Normal file
57
docs/en/02_Developer_Guides/14_Files/04_File_Migration.md
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
summary: Manage migration of legacy files to the new database structure
|
||||||
|
|
||||||
|
# File migration
|
||||||
|
|
||||||
|
Since the structure of `File` dataobjects has changed between 3.0 and 4.0, a new task `MigrateFileTask`
|
||||||
|
has been added to assist in migration of legacy files.
|
||||||
|
|
||||||
|
You can run this task on the command line:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ./framework/sake dev/tasks/MigrateFileTask
|
||||||
|
```
|
||||||
|
|
||||||
|
This task will also support migration of existing File DataObjects to file versioning. Any
|
||||||
|
pre-existing File DataObjects will be automatically published to the live stage, to ensure
|
||||||
|
that previously visible assets remain visible to the public site.
|
||||||
|
|
||||||
|
If additional security or visibility rules should be applied to File dataobjects, then
|
||||||
|
make sure to correctly extend `canView` via extensions.
|
||||||
|
|
||||||
|
## Automatic migration
|
||||||
|
|
||||||
|
Migration can be invoked by either this task, or can be configured to automatically run during dev build
|
||||||
|
by setting the `File.migrate_legacy_file` config to true. However, it's recommended that this task is
|
||||||
|
run manually during an explicit migration process, as this process could potentially consume large
|
||||||
|
amounts of memory and run for an extended time.
|
||||||
|
|
||||||
|
```yml
|
||||||
|
SilverStripe\Assets\File:
|
||||||
|
migrate_legacy_file: true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Migration of thumbnails
|
||||||
|
|
||||||
|
If you have the [asset admin](https://github.com/silverstripe/silverstripe-asset-admin) module installed
|
||||||
|
this will also ensure that thumbnails for these images are generated when running 'MigrateFileTask'.
|
||||||
|
Existing thumbnails will not be migrated however, and must be re-generated for use in the CMS.
|
||||||
|
|
||||||
|
Note: Thumbnails can be regenerated on a one-by-one basis within the CMS by re-saving it
|
||||||
|
within the file edit details form.
|
||||||
|
|
||||||
|
## Discarded files during migration
|
||||||
|
|
||||||
|
Note that any File dataobject which is not in the `File.allowed_extensions` config will be deleted
|
||||||
|
from the database during migration. Any invalid file on the filesystem will not be deleted,
|
||||||
|
but will no longer be attached to a dataobject anymore, and should be cleaned up manually.
|
||||||
|
|
||||||
|
To disable this, set the following config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
SilverStripe\Assets\FileMigrationHelper:
|
||||||
|
delete_invalid_files: false
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that pre-existing security solutions for 3.x (such as
|
||||||
|
[secure assets module](https://github.com/silverstripe/silverstripe-secureassets))
|
||||||
|
are incompatible with core file security.
|
@ -829,24 +829,16 @@ guide for configuration instruction.
|
|||||||
|
|
||||||
#### Migrating File DataObject from 3.x to 4.0
|
#### Migrating File DataObject from 3.x to 4.0
|
||||||
|
|
||||||
Since the structure of `File` dataobjects has changed, a new task `MigrateFileTask` has been added to assist
|
Since the structure of `File` dataobjects has changed between 3.0 and 4.0, a new task `MigrateFileTask`
|
||||||
in migration of legacy files. Migration can be invoked by either this task, or can be configured to automatically
|
has been added to assist in migration of legacy files.
|
||||||
run during dev build by setting the `File.migrate_legacy_file` config to true. However, it's recommended that
|
|
||||||
this task is run manually during an explicit migration process, as this process could potentially consume
|
|
||||||
large amounts of memory and run for an extended time.
|
|
||||||
|
|
||||||
|
You can run this task on the command line:
|
||||||
|
|
||||||
```yml
|
```
|
||||||
SilverStripe\Assets\File:
|
$ ./framework/sake dev/tasks/MigrateFileTask
|
||||||
migrate_legacy_file: true
|
|
||||||
```
|
```
|
||||||
|
|
||||||
This task will also support migration of existing File DataObjects to file versioning. Any
|
For more information on this task please consult the [file migration documentation](/developer_guides/files/file_migration).
|
||||||
pre-existing File DataObjects will be automatically published to the live stage, to ensure
|
|
||||||
that previously visible assets remain visible to the public site.
|
|
||||||
|
|
||||||
If additional security or visibility rules should be applied to File dataobjects, then
|
|
||||||
make sure to correctly extend `canView` via extensions.
|
|
||||||
|
|
||||||
Note that any File dataobject which is not in the `File.allowed_extensions` config will be deleted
|
Note that any File dataobject which is not in the `File.allowed_extensions` config will be deleted
|
||||||
from the database during migration. Any invalid file on the filesystem will not be deleted,
|
from the database during migration. Any invalid file on the filesystem will not be deleted,
|
||||||
@ -859,10 +851,6 @@ SilverStripe\Assets\FileMigrationHelper:
|
|||||||
delete_invalid_files: false
|
delete_invalid_files: false
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that pre-existing security solutions for 3.x (such as
|
|
||||||
[secure assets module](https://github.com/silverstripe/silverstripe-secureassets))
|
|
||||||
are incompatible with core file security.
|
|
||||||
|
|
||||||
#### Upgrade code which acts on `Image`
|
#### Upgrade code which acts on `Image`
|
||||||
|
|
||||||
As all image-specific manipulations has been refactored from `Image` into an `ImageManipulations` trait, which
|
As all image-specific manipulations has been refactored from `Image` into an `ImageManipulations` trait, which
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace SilverStripe\Dev\Tasks;
|
namespace SilverStripe\Dev\Tasks;
|
||||||
|
|
||||||
|
use SilverStripe\AssetAdmin\Helper\ImageThumbnailHelper;
|
||||||
use SilverStripe\ORM\DB;
|
use SilverStripe\ORM\DB;
|
||||||
use SilverStripe\Assets\FileMigrationHelper;
|
use SilverStripe\Assets\FileMigrationHelper;
|
||||||
use SilverStripe\Dev\BuildTask;
|
use SilverStripe\Dev\BuildTask;
|
||||||
@ -21,11 +22,23 @@ class MigrateFileTask extends BuildTask
|
|||||||
|
|
||||||
public function run($request)
|
public function run($request)
|
||||||
{
|
{
|
||||||
|
if (!class_exists(FileMigrationHelper::class)) {
|
||||||
|
DB::alteration_message("No file migration helper detected", "notice");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$migrated = FileMigrationHelper::singleton()->run();
|
$migrated = FileMigrationHelper::singleton()->run();
|
||||||
if ($migrated) {
|
if ($migrated) {
|
||||||
DB::alteration_message("{$migrated} File DataObjects upgraded", "changed");
|
DB::alteration_message("{$migrated} File DataObjects upgraded", "changed");
|
||||||
} else {
|
} else {
|
||||||
DB::alteration_message("No File DataObjects need upgrading", "notice");
|
DB::alteration_message("No File DataObjects need upgrading", "notice");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!class_exists(ImageThumbnailHelper::class)) {
|
||||||
|
DB::alteration_message("No image thumbnail helper detected", "notice");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageThumbnailHelper::singleton()->run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user