wp_back/wp-content/plugins/smart-slider-3/Nextend/SmartSlider3/Renderable/AbstractRenderable.php
2024-05-20 15:37:46 +03:00

154 lines
3.9 KiB
PHP

<?php
namespace Nextend\SmartSlider3\Renderable;
use Nextend\Framework\Font\FontParser;
use Nextend\Framework\Font\FontRenderer;
use Nextend\Framework\Style\StyleParser;
use Nextend\Framework\Style\StyleRenderer;
use Nextend\SmartSlider3\Slider\FeatureManager;
abstract class AbstractRenderable {
public $isAdmin = false;
public $less = array();
public $css = array();
public $cssDevice = array(
'all' => array(),
'desktoplandscape' => array(),
'desktopportrait' => array(),
'tabletlandscape' => array(),
'tabletportrait' => array(),
'mobilelandscape' => array(),
'mobileportrait' => array(),
);
public $elementId = '';
public $fontSize = 16;
protected $images = array();
private $fontCache = array();
private $styleCache = array();
public $initCallbacks = array();
public $addedScriptResources = array();
/**
* @var FeatureManager
*/
public $features;
public function addLess($file, $context) {
$this->less[$file] = $context;
}
public function addCSS($css) {
$this->css[] = $css;
}
public function addDeviceCSS($device, $css) {
$this->cssDevice[$device][] = $css;
}
public function getSelector() {
return 'div#' . $this->elementId . ' ';
}
private function _addFontCache($font, $mode, $pre, $fontSize) {
$cacheKey = md5($font . $mode . $pre . $fontSize);
if (!isset($this->fontCache[$cacheKey])) {
$fontData = FontRenderer::render($font, $mode, $pre, $fontSize);
if ($fontData) {
$this->addCSS($fontData[1]);
$this->fontCache[$cacheKey] = $fontData[0];
} else {
$this->fontCache[$cacheKey] = '';
}
}
return $this->fontCache[$cacheKey];
}
public function addFont($font, $mode, $pre = null) {
$font = FontParser::parse($font);
if ($this->isAdmin) {
$fontData = FontRenderer::render($font, $mode, $pre == null ? $this->getSelector() : $pre, $this->fontSize);
if ($fontData) {
$this->addCSS($fontData[1]);
return $fontData[0];
}
return '';
}
return $this->_addFontCache($font, $mode, $pre == null ? $this->getSelector() : $pre, $this->fontSize);
}
private function _addStyleCache($style, $mode, $pre) {
$cacheKey = md5($style . $mode . $pre);
if (!isset($this->styleCache[$cacheKey])) {
$styleData = StyleRenderer::render($style, $mode, $pre);
if ($styleData) {
$this->addCSS($styleData[1]);
$this->styleCache[$cacheKey] = $styleData[0];
} else {
$this->styleCache[$cacheKey] = '';
}
}
return $this->styleCache[$cacheKey];
}
public function addStyle($style, $mode, $pre = null) {
$style = StyleParser::parse($style);
if ($this->isAdmin) {
$styleData = StyleRenderer::render($style, $mode, $pre == null ? $this->getSelector() : $pre);
if ($styleData) {
$this->addCSS($styleData[1]);
return $styleData[0];
}
return '';
}
return $this->_addStyleCache($style, $mode, $pre == null ? $this->getSelector() : $pre);
}
public function addScript($script, $name = false) {
if ($name !== false) {
$this->addedScriptResources[] = $name;
}
$this->initCallbacks[] = $script;
}
public function isScriptAdded($name) {
return in_array($name, $this->addedScriptResources);
}
public function addImage($imageUrl) {
$this->images[] = $imageUrl;
}
public function getImages() {
return $this->images;
}
public abstract function render();
}