Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. <?php
  2.  
  3. $dsn = 'mysql:dbname=XXX;host=127.0.0.1';
  4. $user = 'XXX';
  5. $password = 'XXX';
  6.  
  7. try {
  8. $db = new PDO($dsn, $user, $password);
  9. } catch (PDOException $e) {
  10. die();
  11. }
  12.  
  13. $products = $db->query("
  14. SELECT
  15. lily_product.product_id AS id,
  16. lily_product.model AS product_model,
  17. lily_product.price AS product_price,
  18. lily_product_description.name AS product_name,
  19. lily_product_description.description AS product_description,
  20. lily_product_description.sizes AS product_sizes_table,
  21. GROUP_CONCAT(DISTINCT lily_category_description.name) AS product_categories,
  22. GROUP_CONCAT(DISTINCT lily_option_value_description.name) AS product_sizes,
  23. GROUP_CONCAT(DISTINCT lily_product_image.image ORDER BY lily_product_image.sort_order ASC) AS product_images,
  24. lily_url_alias.keyword as slug
  25. FROM lily_product
  26. LEFT JOIN lily_product_to_category
  27. ON lily_product.product_id = lily_product_to_category.product_id
  28. LEFT JOIN lily_category_description
  29. ON lily_product_to_category.category_id = lily_category_description.category_id AND lily_category_description.language_id = 8
  30. LEFT JOIN lily_product_description
  31. ON lily_product.product_id = lily_product_description.product_id AND lily_product_description.language_id = 8
  32. LEFT JOIN lily_product_option_value
  33. ON lily_product.product_id = lily_product_option_value.product_id AND lily_product_option_value.quantity > 0
  34. LEFT JOIN lily_option_value_description
  35. ON lily_product_option_value.option_value_id = lily_option_value_description.option_value_id AND lily_option_value_description.language_id = 8
  36. LEFT JOIN lily_product_image
  37. ON lily_product_image.product_id = lily_product.product_id
  38. LEFT JOIN lily_url_alias
  39. ON lily_url_alias.query = CONCAT('product_id=',lily_product.product_id)
  40. WHERE lily_product.quantity > 0 AND lily_product.status != 0
  41. GROUP BY id
  42. ");
  43.  
  44. header('Content-Type: text/xml; charset=utf-8');
  45.  
  46. echo '<?xml version="1.0" encoding="UTF-8" ?><products>';
  47.  
  48. foreach ($products as $product) {
  49. $categories = explode(',',$product['product_categories']);
  50. $sizes = explode(',',$product['product_sizes']);
  51. $images = explode(',', $product['product_images']);
  52. if (isset($categories[0])) {
  53. $categories[0] = 0;
  54. $product['product_categories'] = 0;
  55. if (isset($categories[1]) && $categories[0] == 'Всички категории') {
  56. $categories[0] = $categories[1];
  57. }
  58. }
  59. $size_details = array();
  60. if ($product['product_sizes_table']) {
  61. $product['product_sizes_table'] = html_entity_decode($product['product_sizes_table'], ENT_QUOTES, 'UTF-8');
  62. //die(var_dump($product['product_sizes_table']));
  63.  
  64. $html = new DOMDocument();
  65. $html->loadHTML('<?xml encoding="UTF-8">' . $product['product_sizes_table']);
  66.  
  67. $tables = $html->getElementsByTagName('table');
  68. if ($tables->length === 0) {
  69. continue;
  70. } else {
  71. $table = $tables->item(0);
  72. }
  73. $trs = $table->getElementsByTagName('tr');
  74. for ($i = 0; $i < $trs->length; $i++) {
  75. $tds = $trs->item($i)->getElementsByTagName('td');
  76. for ($j = 0; $j < $tds->length; $j++) {
  77. $size_details[$j][$i] = $tds->item($j)->nodeValue;
  78. //die(var_dump($tds->item($j)->nodeValue));
  79. }
  80. }
  81. }
  82. // if (! empty($size_details))
  83. // die(var_dump($size_details));
  84. echo '
  85. <product>
  86. <CategoryName><![CDATA['.$categories[0].']]></CategoryName>
  87. <ProductCode><![CDATA['.$product['product_model'].']]></ProductCode>
  88. <ProductName><![CDATA['.$product['product_name'].']]></ProductName>
  89. <ProductDescription><![CDATA['.html_entity_decode($product['product_description'], ENT_QUOTES, 'UTF-8').']]></ProductDescription>
  90. <ProductSizesTable><![CDATA['.($product['product_sizes_table'] ?: '').']]></ProductSizesTable>
  91. <ProductPrice><![CDATA['.round((float)$product['product_price'], 2).']]></ProductPrice>
  92. <ProductImages>';
  93. foreach ($images as $image) {
  94. echo '<ProductImage><![CDATA[https://www.lily.bg/image/'.$image.']]></ProductImage>';
  95. }
  96. echo '</ProductImages>
  97. <ProductUrl><![CDATA[https://www.lily.bg/'.$product['slug'].']]></ProductUrl>
  98. <ProductSizes>';
  99. if ($product['product_sizes']) {
  100. //var_dump($sizes);
  101. foreach ($sizes as $size) {
  102. echo '<ProductSize><![CDATA['.$size.']]></ProductSize>';
  103. }
  104. } else {
  105. echo '<ProductSize><![CDATA[ONESIZE]]></ProductSize>';
  106. }
  107. echo '</ProductSizes><ProductSizeDetails>';
  108.  
  109. foreach ($size_details as $i => $size) {
  110. if ($product['product_model'] == '399669-C06') {
  111. //var_dump($size_details);
  112. }
  113. if ($i > 0) {
  114. echo '<ProductSize>';
  115. foreach ($size as $j => $value) {
  116. echo '<SizeInfo><SizeType><![CDATA[' . $size_details[0][$j] . ']]></SizeType><SizeValue><![CDATA[' . $value . ']]></SizeValue></SizeInfo>';
  117. }
  118. echo '</ProductSize>';
  119. }
  120. }
  121.  
  122. echo '</ProductSizeDetails></product>';
  123. }
  124. echo '</products>';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement