/
FallbackTransformer.php
55 lines (50 loc) · 1.7 KB
/
FallbackTransformer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
/**
* @link https://craftcms.com/
* @copyright Copyright (c) Pixel & Tonic, Inc.
* @license https://craftcms.github.io/license/
*/
namespace craft\imagetransforms;
use Craft;
use craft\base\Component;
use craft\base\imagetransforms\ImageTransformerInterface;
use craft\elements\Asset;
use craft\helpers\Assets;
use craft\helpers\ImageTransforms;
use craft\helpers\UrlHelper;
use craft\models\ImageTransform;
/**
* FallbackTransformer transforms image assets using GD or ImageMagick, and stores them in the storage folder.
*
* @author Pixel & Tonic, Inc. <support@pixelandtonic.com>
* @since 4.4.0
*/
class FallbackTransformer extends Component implements ImageTransformerInterface
{
/**
* @inheritdoc
*/
public function getTransformUrl(Asset $asset, ImageTransform $imageTransform, bool $immediately): string
{
if (match ($asset->getMimeType()) {
'image/gif' => Craft::$app->getConfig()->getGeneral()->transformGifs,
'image/svg+xml' => Craft::$app->getConfig()->getGeneral()->transformSvgs,
default => true,
}) {
$transformString = ltrim(ImageTransforms::getTransformString($imageTransform, true), '_');
} else {
$transformString = 'original';
}
$security = Craft::$app->getSecurity();
return UrlHelper::actionUrl('assets/generate-fallback-transform', [
'transform' => $security->hashData(sprintf('%s,%s', $asset->id, $transformString)),
] + Assets::revParams($asset), showScriptName: false);
}
/**
* @inheritdoc
*/
public function invalidateAssetTransforms(Asset $asset): void
{
// No reliable way to do this, so not worth trying
}
}