<?php
// Włącz wyświetlanie błędów dla celów debugowania
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Definiowanie źródłowego URL pliku XML i nazwy pliku docelowego
// $source_url = 'https://sollux-lighting.com/product_feed/news072024/XML_polski_PLN_new_07_2024.xml';
$source_url = 'https://sollux-lighting.com/product_feed/news102024/XML_polski_PLN_new_10_2024.xml';
$target_file = 'new_products.xml';

// Pobranie i załadowanie źródłowego pliku XML
$source_xml = simplexml_load_file($source_url);

if ($source_xml === false) {
    die('Błąd podczas ładowania źródłowego pliku XML.');
}

// Utworzenie nowego dokumentu XML z korzeniem <products>
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><products></products>');

// Definicja nazw elementów, które zawierają ceny
$price_fields = [
    'cena_detaliczna_brutto_pln',
    // Dodaj tutaj inne pola cen, jeśli istnieją
    // 'cena_inna_field',
];

// Iteracja przez każdy produkt w źródłowym pliku XML
foreach ($source_xml->product as $product) {
    // Tablica do przechowywania adresów URL obrazów
    $images = [];

    // Zmienne do przechowywania zawartości pól HTML
    $opis_krotki_html = '';
    $opis_dlugi_korzysci_html = '';

    // Zmienne do przechowywania nazwy produktu i SKU
    $original_nazwa_produktu = '';
    $sku = '';

    // Iteracja przez wszystkie dzieci elementu <product>
    foreach ($product->children() as $child) {
        $child_name = $child->getName();

        // Sprawdzenie, czy element jest jednym z obrazów (image_1, image_2, ..., image_25)
        if (preg_match('/^image_\d+$/', $child_name)) {
            $url = trim((string)$child);

            // Dodanie niepustego URL do tablicy obrazów
            if (!empty($url)) {
                $images[] = $url;
            }
        }
        // Zbieranie zawartości pól HTML do połączenia
        elseif ($child_name === 'opis_krotki_html') {
            $opis_krotki_html = (string)$child;
        }
        elseif ($child_name === 'opis_dlugi_korzysci_html') {
            $opis_dlugi_korzysci_html = (string)$child;
        }
        // Zbieranie oryginalnej nazwy produktu
        elseif ($child_name === 'nazwa_produktu') {
            $original_nazwa_produktu = (string)$child;
        }
        // Zbieranie SKU
        elseif ($child_name === 'sku') {
            $sku = (string)$child;
        }
    }

    // Utworzenie nowego elementu <product> w nowym XML
    $new_product = $xml->addChild('product');

    // Ponowna iteracja przez dzieci oryginalnego <product>, aby skopiować nieobrazkowe i nie-HTML elementy
    foreach ($product->children() as $child) {
        $child_name = $child->getName();

        // Pomijanie elementów obrazów i pól HTML, które będą połączone
        if (!preg_match('/^image_\d+$/', $child_name) &&
            $child_name !== 'opis_krotki_html' &&
            $child_name !== 'opis_dlugi_korzysci_html') {

            // Pobranie wartości elementu
            $value = (string)$child;

            // Sprawdzenie, czy element jest polem cenowym
            if (in_array($child_name, $price_fields)) {
                // Zamiana kropki na przecinek w wartości ceny
                $value = str_replace('.', ',', $value);
            }

            // Jeśli jest to nazwa produktu, modyfikujemy jej zawartość
            if ($child_name === 'nazwa_produktu') {
                // Dodanie "Sollux" przed oryginalną nazwą i SKU na końcu
                $value = $original_nazwa_produktu . ' Sollux ' . $sku;
            }

            // Dodanie elementu do nowego <product>
            $new_child = $new_product->addChild($child_name);

            // Sprawdzenie, czy zawartość to HTML i potrzeba CDATA
            // Jeśli chcesz zachować tagi HTML, możesz użyć CDATA
            if (strpos($child_name, 'html') !== false) {
                $node = dom_import_simplexml($new_child);
                $no = $node->ownerDocument;
                $node->appendChild($no->createCDATASection($value));
            } else {
                $new_child[0] = htmlspecialchars($value);
            }
        }
    }

    // Połączenie zawartości pól HTML
    $combined_opis_html = '';
    if (!empty($opis_krotki_html)) {
        $combined_opis_html .= $opis_krotki_html;
    }
    if (!empty($opis_dlugi_korzysci_html)) {
        // Dodanie separatora, np. nowa linia lub spacja
        if (!empty($combined_opis_html)) {
            $combined_opis_html .= "\n"; // Możesz zmienić na '<br />' lub inny separator, jeśli potrzebujesz
        }
        $combined_opis_html .= $opis_dlugi_korzysci_html;
    }

    // Dodanie połączonego pola <opis_html> do nowego <product>, jeśli zawartość nie jest pusta
    if (!empty($combined_opis_html)) {
        $opis_html = $new_product->addChild('opis_html');
        $node = dom_import_simplexml($opis_html);
        $no = $node->ownerDocument;
        $node->appendChild($no->createCDATASection($combined_opis_html));
    }

    // Połączenie wszystkich adresów URL obrazów w jeden ciąg oddzielony przecinkami
    $images_str = implode(',', $images);

    // Dodanie nowego elementu <images> do nowego <product>
    $new_product->addChild('images', htmlspecialchars($images_str));
}

// Zapisanie nowego pliku XML na serwerze
if($xml->asXML($target_file)) {
    echo "Nowy plik XML został utworzony: $target_file";
} else {
    echo "Wystąpił błąd podczas zapisywania nowego pliku XML.";
}
?>
