Files
drmaterac.pl/modules/creativeelements/core/responsive/files/frontend.php
2025-07-13 11:19:53 +02:00

158 lines
3.4 KiB
PHP

<?php
/**
* Creative Elements - live Theme & Page Builder
*
* @author WebshopWorks, Elementor
* @copyright 2019-2022 WebshopWorks.com & Elementor.com
* @license https://www.gnu.org/licenses/gpl-3.0.html
*/
namespace CE;
defined('_PS_VERSION_') or die;
use CE\CoreXFilesXBase as Base;
use CE\CoreXResponsiveXResponsive as Responsive;
class CoreXResponsiveXFilesXFrontend extends Base
{
const META_KEY = 'elementor-custom-breakpoints-files';
private $template_file;
/**
* @since 2.1.0
* @access public
*/
public function __construct($file_name, $template_file = null)
{
$this->template_file = $template_file;
parent::__construct($file_name);
}
/**
* @since 2.1.0
* @access public
*/
public function parseContent()
{
$breakpoints = Responsive::getBreakpoints();
$breakpoints_keys = array_keys($breakpoints);
$file_content = call_user_func('file_get_contents', $this->template_file);
$file_content = preg_replace_callback('/-width:\s*(767|768|1024|1025)px\s*\)/', function ($placeholder_data) use ($breakpoints_keys, $breakpoints) {
$width = (int) $placeholder_data[1];
$size = $width < 768 ? 'sm' : ($width < 1025 ? 'md' : 'lg');
$breakpoint_index = array_search($size, $breakpoints_keys);
$is_max_point = 767 === $width || 1024 === $width;
if ($is_max_point) {
$breakpoint_index++;
}
$value = $breakpoints[$breakpoints_keys[$breakpoint_index]];
if ($is_max_point) {
$value--;
}
return "-width:{$value}px)";
}, $file_content);
return $file_content;
}
/**
* Load meta.
*
* Retrieve the file meta data.
*
* @since 2.1.0
* @access protected
*/
protected function loadMeta()
{
$option = $this->loadMetaOption();
$file_meta_key = $this->getFileMetaKey();
if (empty($option[$file_meta_key])) {
return [];
}
return $option[$file_meta_key];
}
/**
* Update meta.
*
* Update the file meta data.
*
* @since 2.1.0
* @access protected
*
* @param array $meta New meta data.
*/
protected function updateMeta($meta)
{
$option = $this->loadMetaOption();
$option[$this->getFileMetaKey()] = $meta;
update_option(static::META_KEY, $option);
}
/**
* Delete meta.
*
* Delete the file meta data.
*
* @since 2.1.0
* @access protected
*/
protected function deleteMeta()
{
$option = $this->loadMetaOption();
$file_meta_key = $this->getFileMetaKey();
if (isset($option[$file_meta_key])) {
unset($option[$file_meta_key]);
}
if ($option) {
update_option(static::META_KEY, $option);
} else {
delete_option(static::META_KEY);
}
}
/**
* @since 2.1.0
* @access private
*/
private function getFileMetaKey()
{
return pathinfo($this->getFileName(), PATHINFO_FILENAME);
}
/**
* @since 2.1.0
* @access private
*/
private function loadMetaOption()
{
$option = get_option(static::META_KEY);
if (!$option) {
$option = [];
}
return $option;
}
}