Files
redline.com.pl/xml/facebook-feed.php
2024-11-11 18:46:54 +01:00

339 lines
14 KiB
PHP

<?php
exit;
ini_set('display_errors', 'on');
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT ^ E_WARNING ^ E_DEPRECATED);
include('../config/config.inc.php');
include('../app/config/parameters.php');
include('../config/defines.inc.php');
include( '../init.php' );
class SimpleXMLElementExtended extends SimpleXMLElement
{
/**
* Add value as CData to a given XML node
*
* @param SimpleXMLElement $node SimpleXMLElement object representing the child XML node
* @param string $value A text to add as CData
* @return void
*/
private function addCDataToNode(SimpleXMLElement $node, $value = '')
{
if ($domElement = dom_import_simplexml($node))
{
$domOwner = $domElement->ownerDocument;
$domElement->appendChild($domOwner->createCDATASection("{$value}"));
}
}
/**
* Add child node with value as CData
*
* @param string $name The child XML node name to add
* @param string $value A text to add as CData
* @return SimpleXMLElement
*/
public function addChildWithCData($name = '', $value = '')
{
$newChild = parent::addChild($name);
if ($value) $this->addCDataToNode($newChild, "{$value}");
return $newChild;
}
/**
* Add value as CData to the current XML node
*
* @param string $value A text to add as CData
* @return void
*/
public function addCData($value = '')
{
$this->addCDataToNode($this, "{$value}");
}
}
$context = Context::getContext();
$id_lang = (int)Context::getContext()->language->id;
$start = 0;
$limit = '';
$order_by = 'id_product';
$order_way = 'DESC';
$id_category = false;
$only_active = true;
$products_partial = Product::getProducts($id_lang, $start, $limit, $order_by, $order_way, $id_category, $only_active, $context);
$products = Product::getProductsProperties($context->language->id, $products_partial);
$xml = new SimpleXMLElementExtended('<?xml version="1.0"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0"/>');
$xml->addChild('title', 'Redline');
$xml->addChild('updated', date('Y-m-d'));
foreach ($products as $product)
{
$product_combinations = false;
$combination_tmp = false;
$product_tmp = new Product( $product['id_product'] );
$combinations = $product_tmp -> getAttributeCombinations( $context -> language -> id, true );
foreach ( $combinations as $com )
{
$combination_tmp[ $com['id_product_attribute'] ][] = $com;
}
foreach ( $combination_tmp as $key => $val )
{
// echo '<pre>' . print_r( (array)$val, true ) . '</pre>';
$product_com['id_product_attribute'] = $key;
$product_com['quantity'] = Product::getQuantity( $product['id_product'], $key );
$product_com['reference'] = $val[0]['reference'];
foreach ( $val as $row )
{
if ( $row['group_name'] == 'Rozmiar' )
$product_com['gsize'] = $row['attribute_name'];
}
$product_combinations[] = $product_com;
}
// echo '<pre>' . print_r( (array)$product_combinations, true ) . '</pre>';
if ( is_array( $product_combinations ) and count ( $product_combinations ) )
{
foreach ( $product_combinations as $product_combination_tmp )
{
$price = Product::getPriceStatic($product['id_product'], true, null, 2, null, false, false);
$cover = Product::getCover($product['id_product']);
$products['id_image'] = $cover['id_image'];
$link = new Link; //because getImageLInk is not static function
$imagePath = $link->getImageLink($product['link_rewrite'], $products['id_image'], 'large_default');
$thumbPath = $link->getImageLink($product['link_rewrite'], $products['id_image'], 'home_default');
$all_product_subs = Product::getProductCategoriesFull($product['id_product'], $cookie->id_lang, 0, 2);
$all_product_subs_path = array();
$all_product_subs_path_name = array();
if (isset($all_product_subs) && count($all_product_subs) > 0)
{
foreach ($all_product_subs as $subcat)
{
$sub_category = new Category($subcat['id_category'], $cookie->id_lang, 0, 2);
$sub_category_children = $sub_category->getSubCategories($cookie->id_lang, 0, 2, $active = true);
if ( $subcat['id_category'] != $product['id_category_default'] )
{
$all_product_subs_path[] = strip_tags (Tools::getPath('', $subcat['id_category'], ''));
}
}
}
$catDef = new Category($product['id_category_default'], $cookie->id_lang);
$catDefault = $catDef->name;
$catDefaultId = $catDef->id_category;
$SEOtitle = $catDefault;
$katego = implode(",", $all_product_subs_path);
$tablicaKategorii = explode(",", $katego);
$productXml = $xml->addChild('entry');
$productXml -> addChild( 'g:id', $product['id_product'] . $product_combination_tmp['id_product_attribute'], 'http://base.google.com/ns/1.0');
$SEOtitle = $catDefault;
$nazwaProduktu = $productXml->addChild('g:title');
$nazwaProduktu->addCData($product['name'], 'http://base.google.com/ns/1.0');
$opis = $productXml->addChild('g:description');
$opis_czysty = preg_replace('/<a href=\"(.*?)\">(.*?)<\/a>/', "\\2", $product['description_short']);
/*$opis->addCData($product['description'], 'http://base.google.com/ns/1.0');*/
$opis->addCData($opis_czysty, 'http://base.google.com/ns/1.0');
$productXml->addChild('g:link', $product['link'], 'http://base.google.com/ns/1.0');
$productXml->addChild('g:image_link', 'https://' . $imagePath, 'http://base.google.com/ns/1.0');
$productXml->addChild('g:condition', $product['condition'], 'http://base.google.com/ns/1.0');
if ( $product_combination_tmp['quantity'] > 0 )
$productXml->addChild('g:availability', 'in stock', 'http://base.google.com/ns/1.0' );
else
$productXml -> addChild('g:availability', 'out of stock', 'http://base.google.com/ns/1.0' );
$productXml -> addChild( 'g:price', number_format((float)$price, 2, '.', '') . ' PLN', 'http://base.google.com/ns/1.0' );
$productXml -> addChild( 'g:quantity', $product_combination_tmp['quantity'], 'http://base.google.com/ns/1.0');
if ($product['ean13'] != null)
$productXml->addChild('g:gtin', $product['ean13'], 'http://base.google.com/ns/1.0');
$productXml->addChild('g:brand', $product['manufacturer_name'], 'http://base.google.com/ns/1.0');
// $productXml->addChild('g:google_product_category', $kategoriaGoogle, 'http://base.google.com/ns/1.0');
foreach ( $all_product_subs_path as $category )
$productXml->addChild('g:product_type', $category, 'http://base.google.com/ns/1.0');
if ( $product_combination_tmp['gsize'] != null)
$productXml->addChild('g:size', $product_combination_tmp['gsize'], 'http://base.google.com/ns/1.0');
}
}
else
{
$price = Product::getPriceStatic($product['id_product'], true, null, 2, null, false, false);
$cover = Product::getCover($product['id_product']);
$products['id_image'] = $cover['id_image'];
$link = new Link; //because getImageLInk is not static function
$imagePath = $link->getImageLink($product['link_rewrite'], $products['id_image'], 'large_default');
$thumbPath = $link->getImageLink($product['link_rewrite'], $products['id_image'], 'home_default');
$all_product_subs = Product::getProductCategoriesFull($product['id_product'], $cookie->id_lang, 0, 2);
$all_product_subs_path = array();
$all_product_subs_path_name = array();
if (isset($all_product_subs) && count($all_product_subs) > 0)
{
foreach ($all_product_subs as $subcat)
{
$sub_category = new Category($subcat['id_category'], $cookie->id_lang, 0, 2);
$sub_category_children = $sub_category->getSubCategories($cookie->id_lang, 0, 2, $active = true);
if ( $subcat['id_category'] != $product['id_category_default'] )
{
$all_product_subs_path[] = strip_tags (Tools::getPath('', $subcat['id_category'], ''));
}
}
}
$catDef = new Category($product['id_category_default'], $cookie->id_lang);
$catDefault = $catDef->name;
$catDefaultId = $catDef->id_category;
$SEOtitle = $catDefault;
$katego = implode(",", $all_product_subs_path);
$tablicaKategorii = explode(",", $katego);
$productXml = $xml->addChild('entry');
$productXml->addChild('g:id', $product['reference'], 'http://base.google.com/ns/1.0');
$SEOtitle = $catDefault;
$nazwaProduktu = $productXml->addChild('g:title');
$nazwaProduktu->addCData($product['name'], 'http://base.google.com/ns/1.0');
$opis = $productXml->addChild('g:description');
$opis_czysty = preg_replace('/<a href=\"(.*?)\">(.*?)<\/a>/', "\\2", $product['description']);
/*$opis->addCData($product['description'], 'http://base.google.com/ns/1.0');*/
$opis->addCData($opis_czysty, 'http://base.google.com/ns/1.0');
$productXml->addChild('g:link', $product['link'], 'http://base.google.com/ns/1.0');
$productXml->addChild('g:image_link', 'https://' . $imagePath, 'http://base.google.com/ns/1.0');
$productXml->addChild('g:condition', $product['condition'], 'http://base.google.com/ns/1.0');
if ( $product['quantity'] > 0 )
$productXml->addChild('g:availability', 'in stock', 'http://base.google.com/ns/1.0' );
else
$productXml -> addChild('g:availability', 'out of stock', 'http://base.google.com/ns/1.0' );
$productXml -> addChild( 'g:price', number_format((float)$price, 2, '.', '') . ' PLN', 'http://base.google.com/ns/1.0' );
$productXml -> addChild( 'g:quantity', $product['quantity'], 'http://base.google.com/ns/1.0');
if ($product['ean13'] != null)
{
$productXml->addChild('g:gtin', $product['ean13'], 'http://base.google.com/ns/1.0');
}
$productXml->addChild('g:brand', $product['manufacturer_name'], 'http://base.google.com/ns/1.0');
// $productXml->addChild('g:google_product_category', $kategoriaGoogle, 'http://base.google.com/ns/1.0');
foreach ( $all_product_subs_path as $category )
$productXml->addChild('g:product_type', $category, 'http://base.google.com/ns/1.0');
}
$xml->asXML("google-feed.xml");
}
exit;
$xml = new SimpleXMLElementExtended('<?xml version="1.0"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0"/>');
$xml->addChild('title', 'Redline');
$xml->addChild('updated', date('Y-m-d'));
foreach ($products as $product)
{
$cover = Product::getCover($product['id_product']);
$products['id_image'] = $cover['id_image'];
$link = new Link; //because getImageLInk is not static function
$imagePath = $link->getImageLink($product['link_rewrite'], $products['id_image'], 'large_default');
$thumbPath = $link->getImageLink($product['link_rewrite'], $products['id_image'], 'home_default');
$product_attribute = new Product($product['id_product']);
$combinations = $product_attribute->getAttributeCombinations($cookie->id_lang, 0, 2);
$avaiable_combination_name = array();
foreach ($combinations as $combination)
{
$avaiable_combination_name[] = $combination['attribute_name'];
}
$combination_comma_separated = implode(",", $avaiable_combination_name);
$tablicaKombinacji = explode(",", $combination_comma_separated);
$all_product_subs = Product::getProductCategoriesFull($product['id_product'], $cookie->id_lang, 0, 2);
$all_product_subs_path = array();
$all_product_subs_path_name = array();
if (isset($all_product_subs) && count($all_product_subs) > 0)
{
foreach ($all_product_subs as $subcat)
{
$sub_category = new Category($subcat['id_category'], $cookie->id_lang, 0, 2);
$sub_category_children = $sub_category->getSubCategories($cookie->id_lang, 0, 2, $active = true);
if ( $subcat['id_category'] != $product['id_category_default'] )
{
$all_product_subs_path[] = strip_tags (Tools::getPath('', $subcat['id_category'], ''));
}
}
}
$catDef = new Category($product['id_category_default'], $cookie->id_lang);
$catDefault = $catDef->name;
$catDefaultId = $catDef->id_category;
$SEOtitle = $catDefault;
$katego = implode(",", $all_product_subs_path);
$tablicaKategorii = explode(",", $katego);
if ( is_array( $product ) )
{
$productXml = $xml->addChild('entry');
$productXml->addChild('g:id', $product['reference'], 'http://base.google.com/ns/1.0');
$SEOtitle = $catDefault;
$nazwaProduktu = $productXml->addChild('g:title');
$nazwaProduktu->addCData($product['name'], 'http://base.google.com/ns/1.0');
$opis = $productXml->addChild('g:description');
$opis_czysty = preg_replace('/<a href=\"(.*?)\">(.*?)<\/a>/', "\\2", $product['description']);
/*$opis->addCData($product['description'], 'http://base.google.com/ns/1.0');*/
$opis->addCData($opis_czysty, 'http://base.google.com/ns/1.0');
$productXml->addChild('g:link', $product['link'], 'http://base.google.com/ns/1.0');
$productXml->addChild('g:image_link', 'https://' . $imagePath, 'http://base.google.com/ns/1.0');
$productXml->addChild('g:condition', $product['condition'], 'http://base.google.com/ns/1.0');
if ( $product['quantity'] > 0 )
$productXml->addChild('g:availability', 'in stock', 'http://base.google.com/ns/1.0' );
else
$productXml -> addChild('g:availability', 'out of stock', 'http://base.google.com/ns/1.0' );
$productXml -> addChild( 'g:price', number_format((float)$price, 2, '.', '') . ' PLN', 'http://base.google.com/ns/1.0' );
$price_sale = Product::getPriceStatic($product['id_product'], true, null, 2, null, false, true);
if ( $price_sale != $price )
$productXml -> addChild( 'g:sale_price', number_format((float)$price_sale, 2, '.', '') . ' PLN', 'http://base.google.com/ns/1.0' );
$productXml -> addChild( 'g:quantity', $product['quantity'], 'http://base.google.com/ns/1.0');
if ($product['ean13'] != null)
{
$productXml->addChild('g:gtin', $product['ean13'], 'http://base.google.com/ns/1.0');
}
$productXml->addChild('g:brand', $product['manufacturer_name'], 'http://base.google.com/ns/1.0');
// $productXml->addChild('g:google_product_category', $kategoriaGoogle, 'http://base.google.com/ns/1.0');
foreach ( $all_product_subs_path as $category )
$productXml->addChild('g:product_type', $category, 'http://base.google.com/ns/1.0');
}
}
$xml->asXML("facebook-feed.xml");