|
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\settings\CookieGroup;
// @codeCoverageIgnoreStart
\defined('ABSPATH') or die('No script kiddies please!');
// Avoid direct file request
// @codeCoverageIgnoreEnd
/**
* Trait to handle the importer for groups in the `Import` class.
* @internal
*/
trait ImportGroups
{
/**
* Import cookie groups from JSON.
*
* @param array $groups
*/
protected function doImportCookieGroups($groups)
{
$currentGroups = \DevOwl\RealCookieBanner\import\Export::instance()->appendCookieGroups()->finish()['cookieGroups'];
$order = \count($currentGroups);
foreach ($groups as $index => $group) {
if (!$this->handleCorruptGroup($group, $index)) {
continue;
}
$slug = $group['slug'];
$name = $group['name'];
$description = $group['description'];
// Find current group with same slug
$found = \false;
foreach ($currentGroups as $currentGroup) {
if ($currentGroup['slug'] === $slug) {
$found = $currentGroup;
break;
}
}
// We found existing group, just update...
if ($found !== \false) {
$this->handleGroupUpdate($slug, $found['term_id'], $name, $description);
} elseif ($this->handleGroupCreate($slug, $name, $description, $order)) {
++$order;
}
}
}
/**
* Handle to update an existing group instead of creating a new one.
*
* @param string $slug
* @param int $term_id
* @param string $name
* @param string $description
*/
protected function handleGroupUpdate($slug, $term_id, $name, $description)
{
$update = \wp_update_term($term_id, CookieGroup::TAXONOMY_NAME, ['name' => $name, 'description' => $description]);
if (\is_wp_error($update)) {
$this->addMessageCookieGroupUpdateFailure($name, $update);
} else {
$this->addMessageCookieGroupUpdatedInfo($name);
}
}
/**
* Handle to create a new group.
*
* @param string $slug
* @param string $name
* @param string $description
* @param int $order
*/
protected function handleGroupCreate($slug, $name, $description, $order)
{
// Try to create
$create = \wp_insert_term($name, CookieGroup::TAXONOMY_NAME, ['name' => $name, 'description' => $description, 'slug' => $slug]);
if (\is_wp_error($create)) {
$this->addMessageCreateFailure($name, \__('Service Group', 'real-cookie-banner'), $create);
return \false;
} else {
\update_term_meta($create['term_id'], CookieGroup::META_NAME_ORDER, $order);
return \true;
}
}
/**
* Check missing meta of passed group.
*
* @param array $group
* @param int $index
*/
protected function handleCorruptGroup($group, $index)
{
if (!isset($group['slug'], $group['name'], $group['description'])) {
$this->addMessageMissingProperties($index, \__('Service Group', 'real-cookie-banner'), 'slug, name, description');
return \false;
}
return \true;
}
}