Skip to content

Instantly share code, notes, and snippets.

@purplespider
Last active January 15, 2019 09:18
Show Gist options
  • Save purplespider/1bd8580c7dde10a22a226fd5f7ab5791 to your computer and use it in GitHub Desktop.
Save purplespider/1bd8580c7dde10a22a226fd5f7ab5791 to your computer and use it in GitHub Desktop.
SilverStripe 4 Generate CMS Thumbs Task - Use with legacy_filenames
<?php
namespace PurpleSpider\Tasks;
use SilverStripe\Dev\BuildTask;
use SilverStripe\Control\Director;
use SilverStripe\Assets\File;
use SilverStripe\AssetAdmin\Controller\AssetAdmin;
use SilverStripe\ORM\DB;
class GenerateCMSThumbs extends BuildTask
{
protected $title = 'Generate CMS Thumbs';
private static $segment = 'GenerateCMSThumbs';
public function run($request)
{
set_time_limit(0);
$admin = self::singleton(AssetAdmin::class);
$files = File::get();
$total = $files->count();
$count = 0;
foreach ($files as $file) {
$count++;
$name = $file->getFilename();
$originalDir = BASE_PATH . '/'.Director::publicDir().'/assets/';
$admin->generateThumbnails($file);
if(Director::is_cli()) {
echo "Generated {$count}/{$total}: ".$name."\r\n";
} else {
echo '<b style="color:green">Generated: '.$name.'</b><br>';
}
}
echo "\r\nComplete!\r\n\r\n";
}
}
@purplespider
Copy link
Author

purplespider commented Jan 15, 2019

Add to config.yml:

SilverStripe\Assets\Flysystem\FlysystemAssetStore:
  legacy_filenames: true

dev/build
php vendor/silverstripe/framework/cli-script.php dev/build

Run migration script:
php vendor/silverstripe/framework/cli-script.php dev/tasks/MigrateFileTask

Run above script:
Visit example.com/dev/tasks/GenerateCMSThumbs

Note: Doesn't appear to work correctly when ran from command line.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment