Skip to content

Commit e4c966a

Browse files
committed
Merge branch 'release/1.4.34' into v1
2 parents 09ea9e6 + 19c5b52 commit e4c966a

File tree

4 files changed

+60
-8
lines changed

4 files changed

+60
-8
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# ImageOptimize Changelog
22

3+
## 1.4.34 - 2018.07.12
4+
### Changed
5+
* Smarter appending of variant creator suffixes, to handle URLs that have query strings
6+
37
## 1.4.33 - 2018.05.24
48
### Changed
59
* Handle JPEGs coming in as both `jpg` & `jpeg` for the detected file format

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "nystudio107/craft-imageoptimize",
33
"description": "Automatically create & optimize responsive image transforms, using either native Craft transforms or a service like Imgix, with zero template changes.",
44
"type": "craft-plugin",
5-
"version": "1.4.33",
5+
"version": "1.4.34",
66
"keywords": [
77
"craft",
88
"cms",

src/imagetransforms/CraftImageTransform.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ class CraftImageTransform extends ImageTransform implements ImageTransformInterf
3636
*/
3737
public static function getTransformUrl(Asset $asset, $transform, array $params = [])
3838
{
39-
$generateTransformsBeforePageLoad = isset($params['generateTransformsBeforePageLoad'])
40-
? $params['generateTransformsBeforePageLoad']
41-
: true;
39+
$generateTransformsBeforePageLoad = $params['generateTransformsBeforePageLoad'] ?? true;
4240
// Generate the URLs to the optimized images
4341
$assets = Craft::$app->getAssets();
4442
$url = $assets->getAssetUrl($asset, $transform, $generateTransformsBeforePageLoad);
@@ -53,7 +51,7 @@ public static function getTransformUrl(Asset $asset, $transform, array $params =
5351
*/
5452
public static function getWebPUrl(string $url): string
5553
{
56-
$url = $url.".webp";
54+
$url = self::appendExtension($url, '.webp');
5755

5856
return $url;
5957
}
@@ -65,9 +63,7 @@ public static function getTransformParams(): array
6563
{
6664
$settings = ImageOptimize::$plugin->getSettings();
6765
// Get our $generateTransformsBeforePageLoad setting
68-
$generateTransformsBeforePageLoad = isset($settings->generateTransformsBeforePageLoad)
69-
? $settings->generateTransformsBeforePageLoad
70-
: true;
66+
$generateTransformsBeforePageLoad = $settings->generateTransformsBeforePageLoad ?? true;
7167
$params = [
7268
'generateTransformsBeforePageLoad' => $generateTransformsBeforePageLoad,
7369
];

src/imagetransforms/ImageTransform.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,56 @@ public static function prefetchRemoteFile($url)
117117
curl_exec($ch);
118118
curl_close($ch);
119119
}
120+
121+
/**
122+
* Append an extension a passed url or path
123+
*
124+
* @param $pathOrUrl
125+
* @param $extension
126+
*
127+
* @return string
128+
*/
129+
public static function appendExtension($pathOrUrl, $extension): string
130+
{
131+
$path = self::decomposeUrl($pathOrUrl);
132+
$path_parts = pathinfo($path['path']);
133+
$new_path = $path_parts['filename'] . '.' . $path_parts['extension'] . $extension;
134+
if (!empty($path_parts['dirname']) && $path_parts['dirname'] !== '.') {
135+
$new_path = $path_parts['dirname'] . DIRECTORY_SEPARATOR . $new_path;
136+
$new_path = preg_replace('#/+#', '/', $new_path);
137+
}
138+
$output = $path['prefix'] . $new_path . $path['suffix'];
139+
140+
return $output;
141+
}
142+
143+
// Protected Methods
144+
// =========================================================================
145+
146+
/**
147+
* Decompose a url into a prefix, path, and suffix
148+
*
149+
* @param $pathOrUrl
150+
*
151+
* @return array
152+
*/
153+
protected static function decomposeUrl($pathOrUrl): array
154+
{
155+
$result = array();
156+
157+
if (filter_var($pathOrUrl, FILTER_VALIDATE_URL)) {
158+
$url_parts = parse_url($pathOrUrl);
159+
$result['prefix'] = $url_parts['scheme'] . '://' . $url_parts['host'];
160+
$result['path'] = $url_parts['path'];
161+
$result['suffix'] = '';
162+
$result['suffix'] .= empty($url_parts['query']) ? '' : '?' . $url_parts['query'];
163+
$result['suffix'] .= empty($url_parts['fragment']) ? '' : '#' . $url_parts['fragment'];
164+
} else {
165+
$result['prefix'] = '';
166+
$result['path'] = $pathOrUrl;
167+
$result['suffix'] = '';
168+
}
169+
170+
return $result;
171+
}
120172
}

0 commit comments

Comments
 (0)