/admin/model/catalog/category.php

https://github.com/smadi/arabian-land · PHP · 195 lines · 143 code · 52 blank · 0 comment · 13 complexity · dea24e79e48f4bc65a294b5de6c69785 MD5 · raw file

  1. <?php
  2. class ModelCatalogCategory extends Model {
  3. public function addCategory($data) {
  4. $this->db->query("INSERT INTO " . DB_PREFIX . "category SET parent_id = '" . (int)$data['parent_id'] . "', `top` = '" . (isset($data['top']) ? (int)$data['top'] : 0) . "', `column` = '" . (int)$data['column'] . "', sort_order = '" . (int)$data['sort_order'] . "', status = '" . (int)$data['status'] . "', date_modified = NOW(), date_added = NOW()");
  5. $category_id = $this->db->getLastId();
  6. if (isset($data['image'])) {
  7. $this->db->query("UPDATE " . DB_PREFIX . "category SET image = '" . $this->db->escape($data['image']) . "' WHERE category_id = '" . (int)$category_id . "'");
  8. }
  9. foreach ($data['category_description'] as $language_id => $value) {
  10. $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
  11. }
  12. if (isset($data['category_store'])) {
  13. foreach ($data['category_store'] as $store_id) {
  14. $this->db->query("INSERT INTO " . DB_PREFIX . "category_to_store SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "'");
  15. }
  16. }
  17. if (isset($data['category_layout'])) {
  18. foreach ($data['category_layout'] as $store_id => $layout) {
  19. if ($layout['layout_id']) {
  20. $this->db->query("INSERT INTO " . DB_PREFIX . "category_to_layout SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");
  21. }
  22. }
  23. }
  24. if ($data['keyword']) {
  25. $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'category_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");
  26. }
  27. $this->cache->delete('category');
  28. }
  29. public function editCategory($category_id, $data) {
  30. $this->db->query("UPDATE " . DB_PREFIX . "category SET parent_id = '" . (int)$data['parent_id'] . "', `top` = '" . (isset($data['top']) ? (int)$data['top'] : 0) . "', `column` = '" . (int)$data['column'] . "', sort_order = '" . (int)$data['sort_order'] . "', status = '" . (int)$data['status'] . "', date_modified = NOW() WHERE category_id = '" . (int)$category_id . "'");
  31. if (isset($data['image'])) {
  32. $this->db->query("UPDATE " . DB_PREFIX . "category SET image = '" . $this->db->escape($data['image']) . "' WHERE category_id = '" . (int)$category_id . "'");
  33. }
  34. $this->db->query("DELETE FROM " . DB_PREFIX . "category_description WHERE category_id = '" . (int)$category_id . "'");
  35. foreach ($data['category_description'] as $language_id => $value) {
  36. $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
  37. }
  38. $this->db->query("DELETE FROM " . DB_PREFIX . "category_to_store WHERE category_id = '" . (int)$category_id . "'");
  39. if (isset($data['category_store'])) {
  40. foreach ($data['category_store'] as $store_id) {
  41. $this->db->query("INSERT INTO " . DB_PREFIX . "category_to_store SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "'");
  42. }
  43. }
  44. $this->db->query("DELETE FROM " . DB_PREFIX . "category_to_layout WHERE category_id = '" . (int)$category_id . "'");
  45. if (isset($data['category_layout'])) {
  46. foreach ($data['category_layout'] as $store_id => $layout) {
  47. if ($layout['layout_id']) {
  48. $this->db->query("INSERT INTO " . DB_PREFIX . "category_to_layout SET category_id = '" . (int)$category_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");
  49. }
  50. }
  51. }
  52. $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id. "'");
  53. if ($data['keyword']) {
  54. $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'category_id=" . (int)$category_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");
  55. }
  56. $this->cache->delete('category');
  57. }
  58. public function deleteCategory($category_id) {
  59. $this->db->query("DELETE FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$category_id . "'");
  60. $this->db->query("DELETE FROM " . DB_PREFIX . "category_description WHERE category_id = '" . (int)$category_id . "'");
  61. $this->db->query("DELETE FROM " . DB_PREFIX . "category_to_store WHERE category_id = '" . (int)$category_id . "'");
  62. $this->db->query("DELETE FROM " . DB_PREFIX . "category_to_layout WHERE category_id = '" . (int)$category_id . "'");
  63. $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id . "'");
  64. $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "category WHERE parent_id = '" . (int)$category_id . "'");
  65. foreach ($query->rows as $result) {
  66. $this->deleteCategory($result['category_id']);
  67. }
  68. $this->cache->delete('category');
  69. }
  70. public function getCategory($category_id) {
  71. $query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id . "') AS keyword FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$category_id . "'");
  72. return $query->row;
  73. }
  74. public function getCategories($parent_id) {
  75. $category_data = $this->cache->get('category.' . $this->config->get('config_language_id') . '.' . $parent_id);
  76. if (!$category_data) {
  77. $category_data = array();
  78. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY c.sort_order, cd.name ASC");
  79. foreach ($query->rows as $result) {
  80. $category_data[] = array(
  81. 'category_id' => $result['category_id'],
  82. 'name' => $this->getPath($result['category_id'], $this->config->get('config_language_id')),
  83. 'status' => $result['status'],
  84. 'sort_order' => $result['sort_order']
  85. );
  86. $category_data = array_merge($category_data, $this->getCategories($result['category_id']));
  87. }
  88. $this->cache->set('category.' . $this->config->get('config_language_id') . '.' . $parent_id, $category_data);
  89. }
  90. return $category_data;
  91. }
  92. public function getPath($category_id) {
  93. $query = $this->db->query("SELECT name, parent_id FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY c.sort_order, cd.name ASC");
  94. $category_info = $query->row;
  95. if ($category_info['parent_id']) {
  96. return $this->getPath($category_info['parent_id'], $this->config->get('config_language_id')) . $this->language->get('text_separator') . $category_info['name'];
  97. } else {
  98. return $category_info['name'];
  99. }
  100. }
  101. public function getCategoryDescriptions($category_id) {
  102. $category_description_data = array();
  103. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_description WHERE category_id = '" . (int)$category_id . "'");
  104. foreach ($query->rows as $result) {
  105. $category_description_data[$result['language_id']] = array(
  106. 'name' => $result['name'],
  107. 'meta_keyword' => $result['meta_keyword'],
  108. 'meta_description' => $result['meta_description'],
  109. 'description' => $result['description']
  110. );
  111. }
  112. return $category_description_data;
  113. }
  114. public function getCategoryStores($category_id) {
  115. $category_store_data = array();
  116. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_to_store WHERE category_id = '" . (int)$category_id . "'");
  117. foreach ($query->rows as $result) {
  118. $category_store_data[] = $result['store_id'];
  119. }
  120. return $category_store_data;
  121. }
  122. public function getCategoryLayouts($category_id) {
  123. $category_layout_data = array();
  124. $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_to_layout WHERE category_id = '" . (int)$category_id . "'");
  125. foreach ($query->rows as $result) {
  126. $category_layout_data[$result['store_id']] = $result['layout_id'];
  127. }
  128. return $category_layout_data;
  129. }
  130. public function getTotalCategories() {
  131. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "category");
  132. return $query->row['total'];
  133. }
  134. public function getTotalCategoriesByImageId($image_id) {
  135. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "category WHERE image_id = '" . (int)$image_id . "'");
  136. return $query->row['total'];
  137. }
  138. public function getTotalCategoriesByLayoutId($layout_id) {
  139. $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "category_to_layout WHERE layout_id = '" . (int)$layout_id . "'");
  140. return $query->row['total'];
  141. }
  142. }
  143. ?>