]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Кодировка
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 21 Oct 2024 14:43:19 +0000 (17:43 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 21 Oct 2024 14:43:19 +0000 (17:43 +0300)
erp24/services/MarketplaceService.php

index 8186ad2c39bed6c35011ca53d49241d106f27f32..046b220b3d9be69597e8236e470004d3edc124fe 100644 (file)
@@ -112,12 +112,12 @@ class MarketplaceService
      */
     public static function createXMLFeed($productsInfo)
     {
-        $xml = new \SimpleXMLElement('<yml_catalog/>');
+        $xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><yml_catalog/>');
         $xml->addAttribute('date', date('Y-m-d\TH:i:sP'));
 
         $shop = $xml->addChild('shop');
-        $shop->addChild('name', htmlspecialchars('База Цветов 24', ENT_XML1 | ENT_COMPAT, 'UTF-8'));
-        $shop->addChild('company', htmlspecialchars('База Цветов 24', ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+        self::sxml_cdata($shop->addChild('name'), 'База Цветов 24');
+        self::sxml_cdata($shop->addChild('company'), 'База Цветов 24');
         $shop->addChild('url', 'https://bazacvetov24.ru');
 
         // Добавление валюты
@@ -128,8 +128,9 @@ class MarketplaceService
 
         // Добавление категорий
         $categories = $shop->addChild('categories');
-        $category = $categories->addChild('category', htmlspecialchars('Букеты', ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+        $category = $categories->addChild('category');
         $category->addAttribute('id', '1');
+        self::sxml_cdata($category, 'Букеты');
 
         // Добавление информации о доставке
         $deliveryOptions = $shop->addChild('delivery-options');
@@ -143,7 +144,7 @@ class MarketplaceService
             $offer = $offers->addChild('offer');
             $offer->addAttribute('id', $product['id']);
             $offer->addAttribute('available', $product['available'] ? 'true' : 'false');
-            $offer->addChild('name', htmlspecialchars($product['name'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+            self::sxml_cdata($offer->addChild('name'), $product['name']);
             $offer->addChild('url', 'https://bazacvetov24.ru/flowers/' . $product['id']);
             $offer->addChild('price', $product['price']);
             $offer->addChild('currencyId', 'RUR');
@@ -157,7 +158,7 @@ class MarketplaceService
             $offerDeliveryOption->addAttribute('days', '1');
             $offerDeliveryOption->addAttribute('order-before', '18');
 
-            $offer->addChild('description', htmlspecialchars($product['description'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+            self::sxml_cdata($offer->addChild('description'), $product['description']);
             $offer->addChild('weight', $product['weight']);
             $offer->addChild('qty', $product['qty']);
             $offer->addChild('minorder', $product['minorder']);
@@ -168,8 +169,8 @@ class MarketplaceService
 
             foreach ($product['composition'] as $component) {
                 $consist = $offer->addChild('consist', $component['quantity']);
-                $consist->addAttribute('name', htmlspecialchars($component['name'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
-                $consist->addAttribute('unit', htmlspecialchars($component['unit'], ENT_XML1 | ENT_COMPAT, 'UTF-8'));
+                $consist->addAttribute('name', $component['name']);
+                $consist->addAttribute('unit', $component['unit']);
             }
 
             foreach ($product['pictures'] as $picture) {
@@ -180,7 +181,11 @@ class MarketplaceService
         return $xml->asXML();
     }
 
-
+    private static function sxml_cdata($element, $content) {
+        $dom = dom_import_simplexml($element);
+        $cdata = $dom->ownerDocument->createCDATASection($content);
+        $dom->appendChild($cdata);
+    }
 
     private static function getProductPictureUrl($productId) {
         return ['https://bazacvetov24.ru/products/5339/51-roza-premium_3326_md.jpg'];