|
Server : Apache System : Linux s1230 5.15.0-139-generic #149~20.04.1 SMP Tue Jul 14 11:21:49 UTC 2026 x86_64 User : p141464 ( 418825) PHP Version : 7.4.33.12 Disable Function : NONE Directory : /html/relaunch-kmu/wp-content/plugins/real-cookie-banner/inc/import/ |
Upload File : |
<?php
namespace DevOwl\RealCookieBanner\import;
use DevOwl\RealCookieBanner\Core;
use DevOwl\RealCookieBanner\view\customize\banner\BasicLayout;
use DevOwl\RealCookieBanner\view\customize\banner\Decision;
use DevOwl\RealCookieBanner\view\customize\banner\FooterDesign;
use DevOwl\RealCookieBanner\view\customize\banner\HeaderDesign;
// @codeCoverageIgnoreStart
\defined('ABSPATH') or die('No script kiddies please!');
// Avoid direct file request
// @codeCoverageIgnoreEnd
/**
* Trait to handle the importer for customize banner in the `Import` class.
* @internal
*/
trait ImportCustomizeBanner
{
/**
* Import customize banner settings from JSON.
*
* @param array $sections
*/
protected function doImportCustomizeBanner($sections)
{
$ids = Core::getInstance()->getBanner()->getCustomize()->localizeIds()['customizeIdsBanner']['settings'];
$availableSections = \array_keys($ids);
foreach ($sections as $section => $settings) {
if (!\is_array($settings)) {
$this->addMessageWrongUsageKey($section);
continue;
}
if (\in_array($section, $availableSections, \true)) {
$availableSettings = \array_keys($ids[$section]);
foreach ($settings as $key => $value) {
if (\in_array($key, $availableSettings, \true)) {
$optionName = $ids[$section][$key];
// Skip already persistent options with the same value
// phpcs:disable Universal.Operators.StrictComparisons.LooseEqual
if (\get_option($optionName) == $value) {
continue;
}
// phpcs:enable Universal.Operators.StrictComparisons.LooseEqual
// Check for special cases and abort it
if (!$this->handleSepcialCustomizeBanner($optionName, $section, $key, $value)) {
continue;
}
// Handle update
if (!\update_option($optionName, $value)) {
$this->addMessageUpdateOptionFailure($optionName);
}
} else {
$this->addMessageOptionOutdated($section . '.' . $key);
}
}
} else {
$this->addMessageOptionOutdated($section);
}
}
}
/**
* Handle special cases for customize banner settings.
*
* @param string $optionName
* @param string $section
* @param mixed $setting
* @param string $value
*/
protected function handleSepcialCustomizeBanner($optionName, $section, $setting, $value)
{
$onlyPro = \false;
switch ($optionName) {
case HeaderDesign::SETTING_LOGO:
case HeaderDesign::SETTING_LOGO_RETINA:
if (!empty($value)) {
$this->addMessageOptionRelatesMedia($optionName === HeaderDesign::SETTING_LOGO ? \__('Logo', 'real-cookie-banner') : \__('Logo (Retina)', 'real-cookie-banner'), $section . '.' . $setting);
break;
}
return \true;
case BasicLayout::SETTING_OVERLAY_BLUR:
if (!$this->isPro() && $value > 0) {
$onlyPro = \true;
break;
}
return \true;
case Decision::SETTING_GROUPS_FIRST_VIEW:
if (!$this->isPro() && $value === \true) {
$onlyPro = \true;
break;
}
return \true;
default:
return \true;
}
$this->probablyAddMessageSettingOnlyPro($onlyPro, $section . '.' . $setting);
return \false;
}
}