PageRenderTime 57ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/admin/model/catalog/product.php

https://github.com/fxiao/shopilex
PHP | 796 lines | 602 code | 189 blank | 5 comment | 114 complexity | 2b09cbb1e5f43d918d73003f4dc51dbb MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. class ModelCatalogProduct extends Model {
  3. public function addProduct($data) {
  4. $name='';
  5. $this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()");
  6. $product_id = $this->db->getLastId();
  7. if (isset($data['image'])) {
  8. $this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape($data['image']) . "' WHERE product_id = '" . (int)$product_id . "'");
  9. }
  10. foreach ($data['product_description'] as $language_id => $value) {
  11. if($this->config->get('config_language_id')==$language_id)
  12. $name=$this->makeSlugs($this->db->escape($value['name']));
  13. $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
  14. }
  15. if (isset($data['product_store'])) {
  16. foreach ($data['product_store'] as $store_id) {
  17. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "'");
  18. }
  19. }
  20. if (isset($data['product_attribute'])) {
  21. foreach ($data['product_attribute'] as $product_attribute) {
  22. if ($product_attribute['attribute_id']) {
  23. $this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");
  24. foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {
  25. $this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_id . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" . $this->db->escape($product_attribute_description['text']) . "'");
  26. }
  27. }
  28. }
  29. }
  30. if (isset($data['product_option'])) {
  31. foreach ($data['product_option'] as $product_option) {
  32. if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox') {
  33. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");
  34. $product_option_id = $this->db->getLastId();
  35. if (isset($product_option['product_option_value'])) {
  36. foreach ($product_option['product_option_value'] as $product_option_value) {
  37. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");
  38. }
  39. }
  40. } else if($product_option['type'] == 'virtual_product' ){
  41. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");
  42. $product_option_id = $this->db->getLastId();
  43. if (isset($product_option['product_option_value'])) {
  44. foreach ($product_option['product_option_value'] as $product_option_value) {
  45. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_value= '" . $this->db->escape($product_option_value['product_value']) . "', product_option_value_id = '" . (int)$product_option_value['product_option_value_id'] . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "'");
  46. }
  47. }
  48. }else if($product_option['type'] == 'color' ){
  49. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");
  50. $product_option_id = $this->db->getLastId();
  51. if (isset($product_option['product_option_value'])) {
  52. foreach ($product_option['product_option_value'] as $product_option_value) {
  53. if(!isset($product_option_value['product_value'])||(isset($product_option_value['product_value'])&&$product_option_value['product_value']==''))
  54. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET color_product_id= '" . (int)$product_id . "', product_value= '" . $this->db->escape($product_option_value['product_value']) . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "'");
  55. else
  56. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET color_product_id= '" . (int)$product_option_value['color_product_id'] . "', product_value= '" . $this->db->escape($product_option_value['product_value']) . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "'");
  57. }
  58. }
  59. }else {
  60. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");
  61. }
  62. }
  63. }
  64. if (isset($data['product_discount'])) {
  65. foreach ($data['product_discount'] as $value) {
  66. $this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$value['customer_group_id'] . "', quantity = '" . (int)$value['quantity'] . "', priority = '" . (int)$value['priority'] . "', price = '" . (float)$value['price'] . "', date_start = '" . $this->db->escape($value['date_start']) . "', date_end = '" . $this->db->escape($value['date_end']) . "'");
  67. }
  68. }
  69. if (isset($data['product_special'])) {
  70. foreach ($data['product_special'] as $value) {
  71. $this->db->query("INSERT INTO " . DB_PREFIX . "product_special SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$value['customer_group_id'] . "', priority = '" . (int)$value['priority'] . "', price = '" . (float)$value['price'] . "', date_start = '" . $this->db->escape($value['date_start']) . "', date_end = '" . $this->db->escape($value['date_end']) . "'");
  72. }
  73. }
  74. if (isset($data['product_image'])) {
  75. foreach ($data['product_image'] as $image) {
  76. $this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape($image) . "'");
  77. }
  78. }
  79. if (isset($data['product_download'])) {
  80. foreach ($data['product_download'] as $download_id) {
  81. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_download SET product_id = '" . (int)$product_id . "', download_id = '" . (int)$download_id . "'");
  82. }
  83. }
  84. if (isset($data['product_category'])) {
  85. foreach ($data['product_category'] as $category_id) {
  86. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$category_id . "'");
  87. }
  88. }
  89. if (isset($data['product_related'])) {
  90. foreach ($data['product_related'] as $related_id) {
  91. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'");
  92. $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");
  93. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");
  94. $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");
  95. }
  96. }
  97. if (isset($data['product_reward'])) {
  98. foreach ($data['product_reward'] as $customer_group_id => $value) {
  99. $this->db->query("INSERT INTO " . DB_PREFIX . "product_reward SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$customer_group_id . "', points = '" . (int)$value['points'] . "'");
  100. }
  101. }
  102. if (isset($data['product_layout'])) {
  103. foreach ($data['product_layout'] as $store_id => $layout) {
  104. if ($layout['layout_id']) {
  105. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");
  106. }
  107. }
  108. }
  109. foreach ($data['product_tag'] as $language_id => $value) {
  110. if ($value) {
  111. $tags = explode(',', $value);
  112. foreach ($tags as $tag) {
  113. $this->db->query("INSERT INTO " . DB_PREFIX . "product_tag SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', tag = '" . $this->db->escape(trim($tag)) . "'");
  114. }
  115. }
  116. }
  117. if ($data['keyword']) {
  118. $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->makeSlugs($this->db->escape($data['keyword'])) . "'");
  119. }else{
  120. $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $name . "'");
  121. }
  122. $this->cache->delete('product');
  123. }
  124. public function editProduct($product_id, $data) {
  125. $name='';
  126. $this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");
  127. if (isset($data['image'])) {
  128. $this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape($data['image']) . "' WHERE product_id = '" . (int)$product_id . "'");
  129. }
  130. $this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");
  131. foreach ($data['product_description'] as $language_id => $value) {
  132. if($this->config->get('config_language_id')==$language_id)
  133. $name=$this->makeSlugs($this->db->escape($value['name']));
  134. $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
  135. }
  136. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");
  137. if (isset($data['product_store'])) {
  138. foreach ($data['product_store'] as $store_id) {
  139. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "'");
  140. }
  141. }
  142. $this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'");
  143. if (isset($data['product_attribute'])) {
  144. foreach ($data['product_attribute'] as $product_attribute) {
  145. if ($product_attribute['attribute_id']) {
  146. $this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");
  147. foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {
  148. $this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_id . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" . $this->db->escape($product_attribute_description['text']) . "'");
  149. }
  150. }
  151. }
  152. }
  153. $this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$product_id . "'");
  154. $this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$product_id . "'");
  155. if (isset($data['product_option'])) {
  156. foreach ($data['product_option'] as $product_option) {
  157. if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox') {
  158. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");
  159. $product_option_id = $this->db->getLastId();
  160. if (isset($product_option['product_option_value'])) {
  161. foreach ($product_option['product_option_value'] as $product_option_value) {
  162. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_value_id = '" . (int)$product_option_value['product_option_value_id'] . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");
  163. }
  164. }
  165. } else if($product_option['type'] == 'virtual_product' ){
  166. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");
  167. $product_option_id = $this->db->getLastId();
  168. if (isset($product_option['product_option_value'])) {
  169. foreach ($product_option['product_option_value'] as $product_option_value) {
  170. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_value= '" . $this->db->escape($product_option_value['product_value']) . "', product_option_value_id = '" . (int)$product_option_value['product_option_value_id'] . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "'");
  171. }
  172. }
  173. }else if($product_option['type'] == 'color' ){
  174. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");
  175. $product_option_id = $this->db->getLastId();
  176. if (isset($product_option['product_option_value'])) {
  177. foreach ($product_option['product_option_value'] as $product_option_value) {
  178. if(!isset($product_option_value['product_value'])||(isset($product_option_value['product_value'])&&$product_option_value['product_value']==''))
  179. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET color_product_id= '" . (int)$product_id . "', product_value= '" . $this->db->escape($product_option_value['product_value']) . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "'");
  180. else
  181. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET color_product_id= '" . (int)$product_option_value['color_product_id'] . "', product_value= '" . $this->db->escape($product_option_value['product_value']) . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . $this->db->escape($product_option_value['option_value_id']) . "'");
  182. }
  183. }
  184. }else {
  185. $this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_option_id = '" . (int)$product_option['product_option_id'] . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");
  186. }
  187. }
  188. }
  189. $this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "'");
  190. if (isset($data['product_discount'])) {
  191. foreach ($data['product_discount'] as $value) {
  192. $this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$value['customer_group_id'] . "', quantity = '" . (int)$value['quantity'] . "', priority = '" . (int)$value['priority'] . "', price = '" . (float)$value['price'] . "', date_start = '" . $this->db->escape($value['date_start']) . "', date_end = '" . $this->db->escape($value['date_end']) . "'");
  193. }
  194. }
  195. $this->db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "'");
  196. if (isset($data['product_special'])) {
  197. foreach ($data['product_special'] as $value) {
  198. $this->db->query("INSERT INTO " . DB_PREFIX . "product_special SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$value['customer_group_id'] . "', priority = '" . (int)$value['priority'] . "', price = '" . (float)$value['price'] . "', date_start = '" . $this->db->escape($value['date_start']) . "', date_end = '" . $this->db->escape($value['date_end']) . "'");
  199. }
  200. }
  201. $this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");
  202. if (isset($data['product_image'])) {
  203. foreach ($data['product_image'] as $image) {
  204. $this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape($image) . "'");
  205. }
  206. }
  207. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'");
  208. if (isset($data['product_download'])) {
  209. foreach ($data['product_download'] as $download_id) {
  210. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_download SET product_id = '" . (int)$product_id . "', download_id = '" . (int)$download_id . "'");
  211. }
  212. }
  213. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
  214. if (isset($data['product_category'])) {
  215. foreach ($data['product_category'] as $category_id) {
  216. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$category_id . "'");
  217. }
  218. }
  219. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
  220. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");
  221. if (isset($data['product_related'])) {
  222. foreach ($data['product_related'] as $related_id) {
  223. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'");
  224. $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");
  225. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");
  226. $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");
  227. }
  228. }
  229. $this->db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$product_id . "'");
  230. if (isset($data['product_reward'])) {
  231. foreach ($data['product_reward'] as $customer_group_id => $value) {
  232. $this->db->query("INSERT INTO " . DB_PREFIX . "product_reward SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$customer_group_id . "', points = '" . (int)$value['points'] . "'");
  233. }
  234. }
  235. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");
  236. if (isset($data['product_layout'])) {
  237. foreach ($data['product_layout'] as $store_id => $layout) {
  238. if ($layout['layout_id']) {
  239. $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");
  240. }
  241. }
  242. }
  243. $this->db->query("DELETE FROM " . DB_PREFIX . "product_tag WHERE product_id = '" . (int)$product_id. "'");
  244. foreach ($data['product_tag'] as $language_id => $value) {
  245. if ($value) {
  246. $tags = explode(',', $value);
  247. foreach ($tags as $tag) {
  248. $this->db->query("INSERT INTO " . DB_PREFIX . "product_tag SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', tag = '" . $this->db->escape(trim($tag)) . "'");
  249. }
  250. }
  251. }
  252. $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id. "'");
  253. if ($data['keyword']) {
  254. $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->makeSlugs($this->db->escape($data['keyword'])) . "'");
  255. }else{
  256. $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $name . "'");
  257. }
  258. $this->cache->delete('product');
  259. }
  260. public function copyProduct($product_id) {
  261. $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
  262. if ($query->num_rows) {
  263. $data = array();
  264. $data = $query->row;
  265. $data['keyword'] = '';
  266. //$data['status'] = '0';
  267. // FIXME just for test
  268. $data['status'] = '1';
  269. $data = array_merge($data, array('product_attribute' => $this->getProductAttributes($product_id)));
  270. $data = array_merge($data, array('product_description' => $this->getProductDescriptions($product_id)));
  271. $data = array_merge($data, array('product_discount' => $this->getProductDiscounts($product_id)));
  272. $data = array_merge($data, array('product_image' => $this->getProductImages($product_id)));
  273. $data['product_image'] = array();
  274. $results = $this->getProductImages($product_id);
  275. foreach ($results as $result) {
  276. $data['product_image'][] = $result['image'];
  277. }
  278. $data = array_merge($data, array('product_option' => $this->getProductOptions($product_id)));
  279. $data = array_merge($data, array('product_related' => $this->getProductRelated($product_id)));
  280. $data = array_merge($data, array('product_reward' => $this->getProductRewards($product_id)));
  281. $data = array_merge($data, array('product_special' => $this->getProductSpecials($product_id)));
  282. $data = array_merge($data, array('product_tag' => $this->getProductTags($product_id)));
  283. $data = array_merge($data, array('product_category' => $this->getProductCategories($product_id)));
  284. $data = array_merge($data, array('product_download' => $this->getProductDownloads($product_id)));
  285. $data = array_merge($data, array('product_layout' => $this->getProductLayouts($product_id)));
  286. $data = array_merge($data, array('product_store' => $this->getProductStores($product_id)));
  287. //$index=20000;
  288. //for ($i = 0; $i < $index; $i++) {
  289. $this->addProduct($data);
  290. //}
  291. }
  292. }
  293. public function deleteProduct($product_id) {
  294. $this->db->query("DELETE FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product_id . "'");
  295. $this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'");
  296. $this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");
  297. $this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "'");
  298. $this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");
  299. $this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$product_id . "'");
  300. $this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$product_id . "'");
  301. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
  302. $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");
  303. $this->db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$product_id . "'");
  304. $this->db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "'");
  305. $this->db->query("DELETE FROM " . DB_PREFIX . "product_tag WHERE product_id='" . (int)$product_id. "'");
  306. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
  307. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'");
  308. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");
  309. $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");
  310. $this->db->query("DELETE FROM " . DB_PREFIX . "review WHERE product_id = '" . (int)$product_id . "'");
  311. $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id. "'");
  312. $this->cache->delete('product');
  313. }
  314. public function getProduct($product_id) {
  315. $query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id . "') AS keyword FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
  316. return $query->row;
  317. }
  318. public function updateProductStatus($product_id,$status) {
  319. $this->db->query("UPDATE " . DB_PREFIX . "product SET status = '" . (int)$status . "' WHERE product_id = '" . (int)$product_id . "'");
  320. }
  321. public function getProducts($data = array()) {
  322. if ($data) {
  323. $sql = "SELECT DISTINCT p.product_id AS upid, p.*,pd.* FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) ";
  324. if (isset($data['filter_category_id'])&& !is_null($data['filter_category_id'])) {
  325. $sql .= " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)";
  326. }
  327. $sql.=" WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
  328. if (isset($data['filter_name']) && !is_null($data['filter_name'])) {
  329. $sql .= " AND LCASE(pd.name) LIKE BINARY '%" . $this->db->escape(mb_strtolower($data['filter_name'], 'UTF-8')) . "%'";
  330. }
  331. if (isset($data['filter_model']) && !is_null($data['filter_model'])) {
  332. $sql .= " AND LCASE(p.model) LIKE LCASE('" . $this->db->escape($data['filter_model']) . "%')";
  333. }
  334. if (isset($data['filter_sku']) && !is_null($data['filter_sku'])) {
  335. $sql .= " AND LCASE(p.sku) LIKE LCASE('" . $this->db->escape($data['filter_sku']) . "%')";
  336. }
  337. if (isset($data['filter_price']) && !is_null($data['filter_price'])) {
  338. $sql .= " AND p.price LIKE '" . $this->db->escape($data['filter_price']) . "%'";
  339. }
  340. if (isset($data['filter_quantity']) && !is_null($data['filter_quantity'])) {
  341. $sql .= " AND p.quantity = '" . $this->db->escape($data['filter_quantity']) . "'";
  342. }
  343. if (isset($data['filter_status']) && !is_null($data['filter_status'])) {
  344. $sql .= " AND p.status = '" . (int)$data['filter_status'] . "'";
  345. }
  346. if (isset($data['filter_category_id'])&& !is_null($data['filter_category_id'])&&$data['filter_category_id']!='') {
  347. $sql .= " AND ( p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
  348. $sql .= " OR p2c.category_id IN ( SELECT category_id FROM " . DB_PREFIX . "category WHERE parent_id='" . (int)$data['filter_category_id'] . "' ))";
  349. }
  350. $sort_data = array(
  351. 'pd.name',
  352. 'p.model',
  353. 'p.sku',
  354. 'p.price',
  355. 'p.quantity',
  356. 'p.status',
  357. 'p.sort_order'
  358. );
  359. if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
  360. $sql .= " ORDER BY " . $data['sort'];
  361. } else {
  362. $sql .= " ORDER BY pd.name";
  363. }
  364. if (isset($data['order']) && ($data['order'] == 'DESC')) {
  365. $sql .= " DESC";
  366. } else {
  367. $sql .= " ASC";
  368. }
  369. if (isset($data['start']) || isset($data['limit'])) {
  370. if ($data['start'] < 0) {
  371. $data['start'] = 0;
  372. }
  373. if ($data['limit'] < 1) {
  374. $data['limit'] = 20;
  375. }
  376. $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
  377. }
  378. $query = $this->db->query($sql);
  379. return $query->rows;
  380. } else {
  381. $product_data = $this->cache->get('product.' . $this->config->get('config_language_id'));
  382. if (!$product_data) {
  383. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pd.name ASC");
  384. $product_data = $query->rows;
  385. $this->cache->set('product.' . $this->config->get('config_language_id'), $product_data);
  386. }
  387. return $product_data;
  388. }
  389. }
  390. public function getProductsByCategoryId($category_id) {
  391. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2c.category_id = '" . (int)$category_id . "' ORDER BY pd.name ASC");
  392. return $query->rows;
  393. }
  394. public function getProductDescriptions($product_id) {
  395. $product_description_data = array();
  396. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");
  397. foreach ($query->rows as $result) {
  398. $product_description_data[$result['language_id']] = array(
  399. 'name' => $result['name'],
  400. 'description' => $result['description'],
  401. 'meta_keyword' => $result['meta_keyword'],
  402. 'meta_title' => $result['meta_title'],
  403. 'meta_description' => $result['meta_description']
  404. );
  405. }
  406. return $product_description_data;
  407. }
  408. public function getProductAttributes($product_id) {
  409. $product_attribute_data = array();
  410. $product_attribute_query = $this->db->query("SELECT pa.attribute_id, ad.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.product_id = '" . (int)$product_id . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY pa.attribute_id");
  411. foreach ($product_attribute_query->rows as $product_attribute) {
  412. $product_attribute_description_data = array();
  413. $product_attribute_description_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");
  414. foreach ($product_attribute_description_query->rows as $product_attribute_description) {
  415. $product_attribute_description_data[$product_attribute_description['language_id']] = array('text' => $product_attribute_description['text']);
  416. }
  417. $product_attribute_data[] = array(
  418. 'attribute_id' => $product_attribute['attribute_id'],
  419. 'name' => $product_attribute['name'],
  420. 'product_attribute_description' => $product_attribute_description_data
  421. );
  422. }
  423. return $product_attribute_data;
  424. }
  425. public function getProductOptions($product_id) {
  426. $product_option_data = array();
  427. $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "'");
  428. foreach ($product_option_query->rows as $product_option) {
  429. if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox'|| $product_option['type'] == 'virtual_product'|| $product_option['type'] == 'color') {
  430. $product_option_value_data = array();
  431. $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
  432. foreach ($product_option_value_query->rows as $product_option_value) {
  433. $product_option_value_data[] = array(
  434. 'product_option_value_id' => $product_option_value['product_option_value_id'],
  435. 'option_value_id' => $product_option_value['option_value_id'],
  436. 'color_product_id' => $product_option_value['color_product_id'],
  437. 'product_value' => $product_option_value['product_value'],
  438. 'name' => $product_option_value['name'],
  439. 'quantity' => $product_option_value['quantity'],
  440. 'subtract' => $product_option_value['subtract'],
  441. 'price' => $product_option_value['price'],
  442. 'price_prefix' => $product_option_value['price_prefix'],
  443. 'points' => $product_option_value['points'],
  444. 'points_prefix' => $product_option_value['points_prefix'],
  445. 'weight' => $product_option_value['weight'],
  446. 'weight_prefix' => $product_option_value['weight_prefix']
  447. );
  448. }
  449. $product_option_data[] = array(
  450. 'product_option_id' => $product_option['product_option_id'],
  451. 'option_id' => $product_option['option_id'],
  452. 'name' => $product_option['name'],
  453. 'type' => $product_option['type'],
  454. 'product_option_value' => $product_option_value_data,
  455. 'required' => $product_option['required']
  456. );
  457. } else {
  458. $product_option_data[] = array(
  459. 'product_option_id' => $product_option['product_option_id'],
  460. 'option_id' => $product_option['option_id'],
  461. 'name' => $product_option['name'],
  462. 'type' => $product_option['type'],
  463. 'option_value' => $product_option['option_value'],
  464. 'required' => $product_option['required']
  465. );
  466. }
  467. }
  468. return $product_option_data;
  469. }
  470. public function getProductImages($product_id) {
  471. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");
  472. return $query->rows;
  473. }
  474. public function getProductDiscounts($product_id) {
  475. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "' ORDER BY quantity, priority, price");
  476. return $query->rows;
  477. }
  478. public function getProductSpecials($product_id) {
  479. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' ORDER BY priority, price");
  480. return $query->rows;
  481. }
  482. public function getProductRewards($product_id) {
  483. $product_reward_data = array();
  484. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$product_id . "'");
  485. foreach ($query->rows as $result) {
  486. $product_reward_data[$result['customer_group_id']] = array('points' => $result['points']);
  487. }
  488. return $product_reward_data;
  489. }
  490. public function getProductDownloads($product_id) {
  491. $product_download_data = array();
  492. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'");
  493. foreach ($query->rows as $result) {
  494. $product_download_data[] = $result['download_id'];
  495. }
  496. return $product_download_data;
  497. }
  498. public function getProductStores($product_id) {
  499. $product_store_data = array();
  500. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");
  501. foreach ($query->rows as $result) {
  502. $product_store_data[] = $result['store_id'];
  503. }
  504. return $product_store_data;
  505. }
  506. public function getProductLayouts($product_id) {
  507. $product_layout_data = array();
  508. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");
  509. foreach ($query->rows as $result) {
  510. $product_layout_data[$result['store_id']] = $result['layout_id'];
  511. }
  512. return $product_layout_data;
  513. }
  514. public function getProductCategories($product_id) {
  515. $product_category_data = array();
  516. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
  517. foreach ($query->rows as $result) {
  518. $product_category_data[] = $result['category_id'];
  519. }
  520. return $product_category_data;
  521. }
  522. public function getProductRelated($product_id) {
  523. $product_related_data = array();
  524. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
  525. foreach ($query->rows as $result) {
  526. $product_related_data[] = $result['related_id'];
  527. }
  528. return $product_related_data;
  529. }
  530. public function getProductTags($product_id) {
  531. $product_tag_data = array();
  532. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_tag WHERE product_id = '" . (int)$product_id . "'");
  533. $tag_data = array();
  534. foreach ($query->rows as $result) {
  535. $tag_data[$result['language_id']][] = $result['tag'];
  536. }
  537. foreach ($tag_data as $language => $tags) {
  538. $product_tag_data[$language] = implode(',', $tags);
  539. }
  540. return $product_tag_data;
  541. }
  542. public function getTotalProducts($data = array()) {
  543. $sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) ";
  544. if (isset($data['filter_category_id'])&& !is_null($data['filter_category_id'])) {
  545. $sql .= " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)";
  546. }
  547. $sql.=" WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";
  548. if (isset($data['filter_name']) && !is_null($data['filter_name'])) {
  549. $sql .= " AND LCASE(pd.name) LIKE LCASE('%" . $this->db->escape($data['filter_name']) . "%')";
  550. }
  551. if (isset($data['filter_model']) && !is_null($data['filter_model'])) {
  552. $sql .= " AND LCASE(p.model) LIKE LCASE('%" . $this->db->escape($data['filter_model']) . "%')";
  553. }
  554. if (isset($data['filter_price']) && !is_null($data['filter_price'])) {
  555. $sql .= " AND p.price LIKE '" . $this->db->escape($data['filter_price']) . "%'";
  556. }
  557. if (isset($data['filter_quantity']) && !is_null($data['filter_quantity'])) {
  558. $sql .= " AND p.quantity = '" . $this->db->escape($data['filter_quantity']) . "'";
  559. }
  560. if (isset($data['filter_status']) && !is_null($data['filter_status'])) {
  561. $sql .= " AND p.status = '" . (int)$data['filter_status'] . "'";
  562. }
  563. if (isset($data['filter_category_id'])&& !is_null($data['filter_category_id'])) {
  564. $sql .= " AND ( p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
  565. $sql .= " OR p2c.category_id IN ( SELECT category_id FROM " . DB_PREFIX . "category WHERE parent_id='" . (int)$data['filter_category_id'] . "' ))";
  566. }
  567. $query = $this->db->query($sql);
  568. return $query->row['total'];
  569. }
  570. public function getTotalProductsByStockStatusId($stock_status_id) {
  571. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE stock_status_id = '" . (int)$stock_status_id . "'");
  572. return $query->row['total'];
  573. }
  574. public function getTotalProductsByTaxClassId($tax_class_id) {
  575. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE tax_class_id = '" . (int)$tax_class_id . "'");
  576. return $query->row['total'];
  577. }
  578. public function getTotalProductsByWeightClassId($weight_class_id) {
  579. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE weight_class_id = '" . (int)$weight_class_id . "'");
  580. return $query->row['total'];
  581. }
  582. public function getTotalProductsByLengthClassId($length_class_id) {
  583. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE length_class_id = '" . (int)$length_class_id . "'");
  584. return $query->row['total'];
  585. }
  586. public function getTotalProductsByDownloadId($download_id) {
  587. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product_to_download WHERE download_id = '" . (int)$download_id . "'");
  588. return $query->row['total'];
  589. }
  590. public function getTotalProductsByManufacturerId($manufacturer_id) {
  591. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE manufacturer_id = '" . (int)$manufacturer_id . "'");
  592. return $query->row['total'];
  593. }
  594. public function getTotalProductsByAttributeId($attribute_id) {
  595. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product_attribute WHERE attribute_id = '" . (int)$attribute_id . "'");
  596. return $query->row['total'];
  597. }
  598. public function getTotalProductsByOptionId($option_id) {
  599. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product_option WHERE option_id = '" . (int)$option_id . "'");
  600. return $query->row['total'];
  601. }
  602. public function getTotalProductsByLayoutId($layout_id) {
  603. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product_to_layout WHERE layout_id = '" . (int)$layout_id . "'");
  604. return $query->row['total'];
  605. }
  606. }
  607. ?>