diff --git a/src/FileMigrationHelper.php b/src/FileMigrationHelper.php index b02104b9..48309ba5 100644 --- a/src/FileMigrationHelper.php +++ b/src/FileMigrationHelper.php @@ -2,12 +2,14 @@ namespace SilverStripe\Assets; +use Psr\Log\LoggerInterface; use SilverStripe\Assets\Flysystem\FlysystemAssetStore; use SilverStripe\Assets\Storage\AssetStore; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Configurable; use SilverStripe\Core\Environment; use SilverStripe\Core\Injector\Injectable; +use SilverStripe\Core\Injector\Injector; use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataQuery; @@ -34,6 +36,9 @@ class FileMigrationHelper */ private static $delete_invalid_files = true; + /** @var LoggerInterface */ + private $logger; + /** * Perform migration * @@ -56,27 +61,40 @@ public function run($base = null) Environment::increaseTimeLimitTo(); Environment::increaseMemoryLimitTo(); + $this->logger = Injector::inst()->get(LoggerInterface::class); + // Loop over all files - $count = 0; + $i = $migrated = 0; $originalState = null; if (class_exists(Versioned::class)) { $originalState = Versioned::get_reading_mode(); Versioned::set_stage(Versioned::DRAFT); } - foreach ($this->getFileQuery() as $file) { + $query = $this->getFileQuery(); + $total = $query->count(); + foreach ($query as $file) { // Bypass the accessor and the filename from the column $filename = $file->getField('Filename'); $success = $this->migrateFile($base, $file, $filename); + + if ($i % 100 == 0) { + /** @var LoggerInterface $logger */ + if ($this->logger != null) { + $this->logger->info("Iterated $i out of $total files. Migrated $migrated files."); + } + } + + $i++; if ($success) { - $count++; + $migrated++; } } if (class_exists(Versioned::class)) { Versioned::set_reading_mode($originalState); } - return $count; + return $migrated; } /**