: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
namespace Nextend\SmartSlider3\Slider\Feature;
use Nextend\Framework\FastImageSize\FastImageSize;
use Nextend\Framework\Image\ImageEdit;
use Nextend\Framework\ResourceTranslator\ResourceTranslator;
private $playWhenVisible = 1;
private $playWhenVisibleAt = 0.5;
private $backgroundImageWidthNormal = 1920, $quality = 70, $thumbnailWidth = 100, $thumbnailHeight = 60, $thumbnailQuality = 70;
public function __construct($slider) {
$this->playWhenVisible = intval($slider->params->get('playWhenVisible', 1));
$this->playWhenVisibleAt = max(0, min(100, intval($slider->params->get('playWhenVisibleAt', 50)))) / 100;
$this->backgroundImageWidthNormal = intval($slider->params->get('optimize-slide-width-normal', 1920));
$this->quality = intval($slider->params->get('optimize-quality', 70));
$this->thumbnailWidth = $slider->params->get('optimizeThumbnailWidth', 100);
$this->thumbnailHeight = $slider->params->get('optimizeThumbnailHeight', 60);
$this->thumbnailQuality = $slider->params->get('optimize-thumbnail-quality', 70);
public function makeJavaScriptProperties(&$properties) {
$properties['playWhenVisible'] = $this->playWhenVisible;
$properties['playWhenVisibleAt'] = $this->playWhenVisibleAt;
public function optimizeBackground($image, $x = 50, $y = 50) {
$imageSize = FastImageSize::getSize($image);
$optimizeScale = $this->slider->params->get('optimize-scale', 0);
$targetWidth = $imageSize['width'];
$targetHeight = $imageSize['height'];
if ($optimizeScale && $targetWidth > $this->backgroundImageWidthNormal) {
$targetHeight = ceil($this->backgroundImageWidthNormal / $targetWidth * $targetHeight);
$targetWidth = $this->backgroundImageWidthNormal;
return ImageEdit::resizeImage('slider/cache', ResourceTranslator::toPath($image), $targetWidth, $targetHeight, false, 'normal', 'ffffff', true, $this->quality, true, $x, $y);
public function optimizeThumbnail($image) {
if ($this->slider->params->get('optimize-thumbnail-scale', 0)) {
return ImageEdit::resizeImage('slider/cache', ResourceTranslator::toPath($image), $this->thumbnailWidth, $this->thumbnailHeight, false, 'normal', 'ffffff', true, $this->thumbnailQuality, true);
return ResourceTranslator::toUrl($image);
return ResourceTranslator::toUrl($image);
public function adminOptimizeThumbnail($image) {
if ($this->slider->params->get('optimize-thumbnail-scale', 0)) {
return ImageEdit::resizeImage('slider/cache', ResourceTranslator::toPath($image), $this->thumbnailWidth, $this->thumbnailHeight, true, 'normal', 'ffffff', true, $this->thumbnailQuality, true);
return ResourceTranslator::toUrl($image);
return ResourceTranslator::toUrl($image);
public function optimizeImageWebP($src, $options) {
$options = array_merge(array(
'compressOriginal' => false