|
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\BannerLink;
// @codeCoverageIgnoreStart
\defined('ABSPATH') or die('No script kiddies please!');
// Avoid direct file request
// @codeCoverageIgnoreEnd
/**
* Trait to handle the importer for banner links in the `Import` class.
* @internal
*/
trait ImportBannerLinks
{
/**
* Import banner links from JSON.
*
* @param array $bannerLinks
*/
protected function doImportBannerLinks($bannerLinks)
{
$currentBannerLinks = \DevOwl\RealCookieBanner\import\Export::instance()->appendBannerLinks()->finish()['bannerLinks'];
foreach ($bannerLinks as $index => $bannerLink) {
if (!$this->handleCorruptBannerLink($bannerLink, $index)) {
continue;
}
// Collect data
$metas = $bannerLink['metas'];
$post_name = $bannerLink['post_name'];
$post_content = '';
$post_status = 'publish';
$post_title = $bannerLink['post_title'];
$showPageIdMessage = \false;
if (\is_array($metas)) {
if (isset($metas[BannerLink::META_NAME_PAGE_ID]) && $metas[BannerLink::META_NAME_PAGE_ID] > 0) {
$showPageIdMessage = \true;
$metas[BannerLink::META_NAME_PAGE_ID] = 0;
}
}
// Find current blocker with same post_name or same type (legal notice and privacy policy may only exist once)
$found = \false;
foreach ($currentBannerLinks as $currentBannerLink) {
if ($currentBannerLink['post_name'] === $post_name || $metas[BannerLink::META_NAME_PAGE_TYPE] !== 'other' && $currentBannerLink === $metas[BannerLink::META_NAME_PAGE_TYPE]) {
$found = $currentBannerLink;
break;
}
}
if ($found) {
$this->addMessageSkipExistingBannerLink($post_name);
continue;
}
// Always create the entry
$create = \wp_insert_post(['post_type' => BannerLink::CPT_NAME, 'post_content' => $post_content, 'post_title' => $post_title, 'post_status' => $post_status, 'meta_input' => $metas, 'menu_order' => 99], \true);
if (\is_wp_error($create)) {
$this->addMessageCreateFailure($post_name, \__('Footer link', 'real-cookie-banner'), $create);
continue;
}
if ($showPageIdMessage) {
$this->addMessageBannerLinkPageId($post_title);
}
}
}
/**
* Check missing meta of passed banner link.
*
* @param array $bannerLink
* @param int $index
*/
protected function handleCorruptBannerLink($bannerLink, $index)
{
if (!isset($bannerLink['metas'], $bannerLink['post_name'], $bannerLink['post_title'])) {
$this->addMessageMissingProperties($index, \__('Footer links', 'real-cookie-banner'), 'ID, metas, post_name, post_status, post_title');
return \false;
}
return \true;
}
}