: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
namespace Nextend\SmartSlider3\Renderable\Item;
use Nextend\Framework\Data\Data;
use Nextend\Framework\Font\FontParser;
use Nextend\Framework\Form\ContainerInterface;
use Nextend\Framework\Model\Section;
use Nextend\Framework\Pattern\GetAssetsPathTrait;
use Nextend\Framework\Pattern\OrderableTrait;
use Nextend\Framework\ResourceTranslator\ResourceTranslator;
use Nextend\Framework\Style\StyleParser;
use Nextend\SmartSlider3\BackupSlider\ExportSlider;
use Nextend\SmartSlider3\BackupSlider\ImportSlider;
use Nextend\SmartSlider3\Renderable\AbstractRenderableOwner;
use Nextend\SmartSlider3\Slider\Admin\AdminSlider;
abstract class AbstractItem {
use GetAssetsPathTrait, OrderableTrait;
protected $layerProperties = array();
protected $fonts = array();
protected $styles = array();
* AbstractItem constructor.
* @param ItemFactory $factory
public function __construct($factory) {
$factory->addItem($this);
private function initDefault() {
foreach ($this->fonts as &$fontData) {
$this->loadDefaultFont($fontData['defaultName'], $fontData['value']);
foreach ($this->styles as &$styleData) {
$this->loadDefaultStyle($styleData['defaultName'], $styleData['value']);
protected function loadDefaultFont($name, &$value) {
$res = Section::get('smartslider', 'default', $name);
$value = FontParser::parse($value);
protected function loadDefaultStyle($name, &$value) {
$res = Section::get('smartslider', 'default', $name);
$value = StyleParser::parse($value);
* @return AbstractItemFrontend
public abstract function createFrontend($id, $itemData, $layer);
public abstract function getTitle();
public abstract function getIcon();
public function getGroup() {
return n2_x('Basic', 'Layer group');
public function getLayerProperties() {
return $this->layerProperties;
public function isLegacy() {
public function getValues() {
foreach ($this->fonts as $name => $fontData) {
$values[$name] = $fontData['value'];
foreach ($this->styles as $name => $styleData) {
$values[$name] = $styleData['value'];
* @param $slide AbstractRenderableOwner
public function getFilled($slide, $data) {
$this->upgradeData($data);
public function upgradeData($data) {
* Fix linked fonts/styles for the editor
public function adminNormalizeFontsStyles($data) {
foreach ($this->fonts as $name => $fontData) {
$data->set($name, FontParser::parse($data->get($name)));
foreach ($this->styles as $name => $styleData) {
$data->set($name, StyleParser::parse($data->get($name)));
* @param ExportSlider $export
public function prepareExport($export, $data) {
$this->upgradeData($data);
* @param ImportSlider $import
public function prepareImport($import, $data) {
$this->upgradeData($data);
public function prepareSample($data) {
$this->upgradeData($data);
public function fixImage($image) {
return ResourceTranslator::toUrl($image);
public function fixLightbox($url) {
preg_match('/^([a-zA-Z]+)\[(.*)](.*)/', $url, $matches);
if (!empty($matches) && $matches[1] == 'lightbox') {
$images = explode(',', $matches[2]);
foreach ($images as $image) {
$newImages[] = ResourceTranslator::toUrl($image);
$url = 'lightbox[' . implode(',', $newImages) . ']' . $matches[3];
* @param AdminSlider $renderable
public function loadResources($renderable) {
public abstract function getType();
protected function isBuiltIn() {
* @param ContainerInterface $container
public abstract function renderFields($container);
* @param ContainerInterface $container
public function globalDefaultItemFontAndStyle($container) {