Merge pull request #62 from open-sausages/pulls/4/file-maker-thumbs

NEW Generate thumbs in FTFileMakerTask
This commit is contained in:
Ingo Schommer 2019-06-21 10:51:04 +12:00 committed by GitHub
commit 120c3155df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 37 additions and 3 deletions

View File

@ -2,6 +2,7 @@
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Assets\Image;
use SilverStripe\Dev\BuildTask;
use SilverStripe\ORM\DB;
use GuzzleHttp\Client;
@ -31,6 +32,8 @@ class FTFileMakerTask extends BuildTask
protected $fixtureFileBaseUrl = "https://s3-ap-southeast-2.amazonaws.com/silverstripe-frameworktest-assets/";
protected $defaultImageFileName = 'image-huge-tall.jpg';
protected $fixtureFileNames = [
'archive.zip',
'animated.gif',
@ -90,13 +93,17 @@ class FTFileMakerTask extends BuildTask
public function run($request)
{
echo "Making files\n";
if ($request->getVar('reset')) {
$this->reset();
}
echo "Downloading fixtures\n";
$fixtureFilePaths = $this->downloadFixtureFiles();
echo "Generate thumbnails\n";
$this->generateThumbnails($fixtureFilePaths);
echo "Generate files\n";
$this->generateFiles($fixtureFilePaths);
}
@ -106,7 +113,7 @@ class FTFileMakerTask extends BuildTask
DB::query('TRUNCATE "File"');
DB::query('TRUNCATE "File_Live"');
DB::query('TRUNCATE "File_versions"');
DB::query('TRUNCATE "File_Versions"');
if (file_exists(ASSETS_PATH) && ASSETS_PATH && ASSETS_PATH !== '/') {
exec("rm -rf " . ASSETS_PATH);
@ -139,6 +146,33 @@ class FTFileMakerTask extends BuildTask
return $paths;
}
/**
* Creates thumbnails of sample images
*
* @param array $fixtureFilePaths
*/
protected function generateThumbnails($fixtureFilePaths)
{
$folder = Folder::find_or_make('testfolder-thumbnail');
$fileName = $this->defaultImageFileName;
foreach(['draft', 'published'] as $state) {
$file = new Image([
'ParentID' => $folder->ID,
'Title' => "{$fileName} {$state}",
'Name' => $fileName,
]);
$file->File->setFromLocalFile($fixtureFilePaths[$fileName], $folder->getFilename() . $fileName);
$file->write();
if ($state === 'published') {
$file->publishFile();
}
$file->Pad(60,60)->CropHeight(30);
}
}
protected function generateFiles($fixtureFilePaths, $depth = 0, $prefix = "0", $parentID = 0)
{
$folderCount = $this->folderCountByDepth[$depth];