339 lines
14 KiB
PHP
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"); |