Files
2024-11-20 09:09:44 +01:00

119 lines
3.4 KiB
PHP

<?php
/**
* Creative Elements - live Theme & Page Builder
*
* @author WebshopWorks
* @copyright 2019-2023 WebshopWorks.com
* @license One domain support license
*/
defined('_PS_VERSION_') or exit;
class CEIconSet extends ObjectModel
{
public $name;
public $config;
public static $definition = [
'table' => 'ce_icon_set',
'primary' => 'id_ce_icon_set',
'fields' => [
'name' => ['type' => self::TYPE_STRING, 'validate' => 'isImageTypeName', 'required' => true, 'size' => 128],
'config' => ['type' => self::TYPE_STRING, 'validate' => 'isJson'],
],
];
public static function nameExists($name, $exclude_id = 0)
{
$db = Db::getInstance();
$table = _DB_PREFIX_ . 'ce_icon_set';
$id_ce_icon_set = (int) $exclude_id;
$name = $db->escape($name);
return (bool) $db->getValue(
"SELECT `id_ce_icon_set` FROM `$table` WHERE `name` = '$name' AND `id_ce_icon_set` != $id_ce_icon_set"
);
}
public static function prefixExists($prefix)
{
if (!$config = self::getCustomIconsConfig()) {
return false;
}
foreach ($config as $icon_set_name => $icon_config) {
if ($prefix === $icon_config['prefix']) {
return true;
}
}
return false;
}
public static function getSupportedIconSets()
{
return [
'fontastic' => 'CE\ModulesXFontsManagerXIconSetsXFontastic',
'fontello' => 'CE\ModulesXFontsManagerXIconSetsXFontello',
'icomoon' => 'CE\ModulesXFontsManagerXIconSetsXIcomoon',
];
}
public static function getCustomIconsConfig($regenerate = false)
{
$config = json_decode(Configuration::getGlobalValue('elementor_custom_icon_sets_config'), true);
if (!$config || $regenerate) {
$config = [];
$db = Db::getInstance();
$table = _DB_PREFIX_ . 'ce_icon_set';
$rows = $db->executeS("SELECT * FROM `$table`");
foreach ($rows as $icon_set) {
$set_config = json_decode($icon_set['config'], true);
$set_config['custom_icon_post_id'] = $icon_set['id_ce_icon_set'];
$set_config['label'] = $icon_set['name'];
if (isset($set_config['fetchJson'])) {
unset($set_config['icons']);
}
$config[$set_config['name']] = $set_config;
}
Configuration::updateGlobalValue('elementor_custom_icon_sets_config', json_encode($config));
}
return $config;
}
public function add($auto_date = true, $null_values = false)
{
if ($result = parent::add($auto_date, $null_values)) {
self::getCustomIconsConfig(true);
}
return $result;
}
public function update($null_values = false)
{
if ($result = parent::update($null_values)) {
self::getCustomIconsConfig(true);
}
return $result;
}
public function delete()
{
$config = json_decode($this->config, true);
if ($result = parent::delete()) {
self::getCustomIconsConfig(true);
if (!empty($config['name']) && preg_match('/^[-\w]+$/', $config['name'])) {
Tools::deleteDirectory(_CE_PATH_ . 'views/lib/custom-icons/' . $config['name']);
}
}
return $result;
}
}