Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix getImageOptimization PHP 8.1 #570

Merged
merged 3 commits into from
Sep 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions Block/System/Config/Form/Field/Checkbox.php
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,12 @@ public function getIsChecked($name)
/**
* Get checked values
*
* @return array|null
* @return array
*/
public function getCheckedValues()
{
if ($this->values === null) {
$data = $this->config->getImageOptimizationRatios();
if (!isset($data)) {
$data = '';
}
$this->values = explode(',', $data);
$this->values = $this->config->getImageOptimizationRatios();
}
return $this->values;
}
Expand Down
15 changes: 10 additions & 5 deletions Model/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -843,11 +843,16 @@ public function isImageOptimizationBgColorEnabled()
/**
* Return image optimization pixel ratios
*
* @return mixed
* @return array
*/
public function getImageOptimizationRatios()
{
return $this->_scopeConfig->getvalue(self::XML_FASTLY_IMAGE_OPTIMIZATIONS_RATIOS);
$result = [];
$data = (string)$this->_scopeConfig->getValue(self::XML_FASTLY_IMAGE_OPTIMIZATIONS_RATIOS);
if ($data) {
$result = \explode(',', $data);
}
return $result;
}

/**
Expand Down Expand Up @@ -1392,12 +1397,12 @@ public function validateCustomSnippet($name, $type, $priority)
* Process blocked items depending on blocking type
*
* @param $strippedBlockedItems
* @param null $blockingType
* @return string
* @param null|string $blockingType
* @return mixed|string
*/
public function processBlockedItems($strippedBlockedItems, $blockingType = null)
{
if (is_null($blockingType)) {
if ($blockingType === null) {
$blockingType = $this->_scopeConfig->getValue(self::XML_FASTLY_BLOCKING_TYPE);
}
if ($blockingType == '1') {
Expand Down
6 changes: 2 additions & 4 deletions Plugin/AdaptivePixelRatioPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,8 @@
use Magento\Framework\App\ProductMetadataInterface;

/**
* Class AdaptivePixelRatioPlugin
* Class AdaptivePixelRatioPlugin for image ration
*
* @package Fastly\Cdn\Plugin
*/
class AdaptivePixelRatioPlugin
{
Expand Down Expand Up @@ -68,8 +67,7 @@ public function beforeToHtml(Image $subject)

$srcSet = [];
$imageUrl = $subject->getData('image_url');
$pixelRatios = $this->config->getImageOptimizationRatios();
$pixelRatiosArray = explode(',', $pixelRatios);
$pixelRatiosArray = $this->config->getImageOptimizationRatios();
$glue = (strpos($imageUrl, '?') !== false) ? '&' : '?';

# Pixel ratios defaults are based on the table from https://mydevice.io/devices/
Expand Down
21 changes: 14 additions & 7 deletions Plugin/Block/Product/View/Type/ConfigurablePlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
use Magento\Framework\Serialize\SerializerInterface;

/**
* Class ConfigurablePlugin
* @package Fastly\Cdn\Plugin\Block\Product\View\Type
* Class ConfigurablePlugin After Get JsonConfig
*/
class ConfigurablePlugin
{
Expand Down Expand Up @@ -45,28 +44,36 @@ public function __construct(
}

/**
* After Get JsonConfig
*
* @param Configurable $subject
* @param string $result
* @return bool|string
*/
public function afterGetJsonConfig(Configurable $subject, string $result)
{
if (!$this->config->isImageOptimizationPixelRatioEnabled() || !$result)
if (!$this->config->isImageOptimizationPixelRatioEnabled() || !$result) {
return $result;
}

if (!$config = $this->serializer->unserialize($result))
if (!$config = $this->serializer->unserialize($result)) {
return $result;
}

if (!isset($config['images']))
if (!isset($config['images'])) {
return $result;
}

if (!$pixelRatios = explode(',', $this->config->getImageOptimizationRatios()))
$pixelRatios = $this->config->getImageOptimizationRatios();
if (empty($pixelRatios)) {
return $result;
}

foreach ($config['images'] as &$images) {
foreach ($images as &$image) {
if (!isset($image['img']))
if (!isset($image['img'])) {
continue;
}

$image['fastly_srcset'] = $this->adaptivePixelRatio->generateSrcSet($image['img'], $pixelRatios);
}
Expand Down
41 changes: 24 additions & 17 deletions Plugin/GalleryPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
use Magento\Framework\Serialize\SerializerInterface;

/**
* Class GalleryPlugin
* @package Fastly\Cdn\Plugin
* Class GalleryPlugin for applying image optimization
*/
class GalleryPlugin
{
Expand All @@ -30,6 +29,7 @@ class GalleryPlugin

/**
* GalleryPlugin constructor.
*
* @param SerializerInterface $serializer
* @param AdaptivePixelRatio $adaptivePixelRatio
* @param Config $config
Expand All @@ -45,28 +45,35 @@ public function __construct(
}

/**
* After Get Gallery Images Json
*
* @param Gallery $subject
* @param string|false $result
* @return false|string
*/
public function afterGetGalleryImagesJson(Gallery $subject, $result)
{
if (!$this->config->isImageOptimizationPixelRatioEnabled() || !$result)
return $result;
public function afterGetGalleryImagesJson(Gallery $subject, $result)
{
if (!$this->config->isImageOptimizationPixelRatioEnabled() || !$result) {
return $result;
}

if (!$images = $this->serializer->unserialize($result))
return $result;
if (!$images = $this->serializer->unserialize($result)) {
return $result;
}

if (!$pixelRatios = explode(',', $this->config->getImageOptimizationRatios()))
return $result;
$pixelRatios = $this->config->getImageOptimizationRatios();
if (empty($pixelRatios)) {
return $result;
}

foreach ($images as &$image) {
if (!isset($image['img']))
continue;
foreach ($images as &$image) {
if (!isset($image['img'])) {
continue;
}

$image['fastly_srcset'] = $this->adaptivePixelRatio->generateSrcSet($image['img'], $pixelRatios);
}
$image['fastly_srcset'] = $this->adaptivePixelRatio->generateSrcSet($image['img'], $pixelRatios);
}

return $this->serializer->serialize($images);
}
return $this->serializer->serialize($images);
}
}