option.php (8353B)
1 <?php 2 class ModelCatalogOption extends Model { 3 public function addOption($data) { 4 $this->db->query("INSERT INTO `" . DB_PREFIX . "option` SET type = '" . $this->db->escape($data['type']) . "', sort_order = '" . (int)$data['sort_order'] . "'"); 5 6 $option_id = $this->db->getLastId(); 7 8 foreach ($data['option_description'] as $language_id => $value) { 9 $this->db->query("INSERT INTO " . DB_PREFIX . "option_description SET option_id = '" . (int)$option_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "'"); 10 } 11 12 if (isset($data['option_value'])) { 13 foreach ($data['option_value'] as $option_value) { 14 $this->db->query("INSERT INTO " . DB_PREFIX . "option_value SET option_id = '" . (int)$option_id . "', image = '" . $this->db->escape(html_entity_decode($option_value['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$option_value['sort_order'] . "'"); 15 16 $option_value_id = $this->db->getLastId(); 17 18 foreach ($option_value['option_value_description'] as $language_id => $option_value_description) { 19 $this->db->query("INSERT INTO " . DB_PREFIX . "option_value_description SET option_value_id = '" . (int)$option_value_id . "', language_id = '" . (int)$language_id . "', option_id = '" . (int)$option_id . "', name = '" . $this->db->escape($option_value_description['name']) . "'"); 20 } 21 } 22 } 23 24 return $option_id; 25 } 26 27 public function editOption($option_id, $data) { 28 $this->db->query("UPDATE `" . DB_PREFIX . "option` SET type = '" . $this->db->escape($data['type']) . "', sort_order = '" . (int)$data['sort_order'] . "' WHERE option_id = '" . (int)$option_id . "'"); 29 30 $this->db->query("DELETE FROM " . DB_PREFIX . "option_description WHERE option_id = '" . (int)$option_id . "'"); 31 32 foreach ($data['option_description'] as $language_id => $value) { 33 $this->db->query("INSERT INTO " . DB_PREFIX . "option_description SET option_id = '" . (int)$option_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "'"); 34 } 35 36 $this->db->query("DELETE FROM " . DB_PREFIX . "option_value WHERE option_id = '" . (int)$option_id . "'"); 37 $this->db->query("DELETE FROM " . DB_PREFIX . "option_value_description WHERE option_id = '" . (int)$option_id . "'"); 38 39 if (isset($data['option_value'])) { 40 foreach ($data['option_value'] as $option_value) { 41 if ($option_value['option_value_id']) { 42 $this->db->query("INSERT INTO " . DB_PREFIX . "option_value SET option_value_id = '" . (int)$option_value['option_value_id'] . "', option_id = '" . (int)$option_id . "', image = '" . $this->db->escape(html_entity_decode($option_value['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$option_value['sort_order'] . "'"); 43 } else { 44 $this->db->query("INSERT INTO " . DB_PREFIX . "option_value SET option_id = '" . (int)$option_id . "', image = '" . $this->db->escape(html_entity_decode($option_value['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$option_value['sort_order'] . "'"); 45 } 46 47 $option_value_id = $this->db->getLastId(); 48 49 foreach ($option_value['option_value_description'] as $language_id => $option_value_description) { 50 $this->db->query("INSERT INTO " . DB_PREFIX . "option_value_description SET option_value_id = '" . (int)$option_value_id . "', language_id = '" . (int)$language_id . "', option_id = '" . (int)$option_id . "', name = '" . $this->db->escape($option_value_description['name']) . "'"); 51 } 52 } 53 54 } 55 } 56 57 public function deleteOption($option_id) { 58 $this->db->query("DELETE FROM `" . DB_PREFIX . "option` WHERE option_id = '" . (int)$option_id . "'"); 59 $this->db->query("DELETE FROM " . DB_PREFIX . "option_description WHERE option_id = '" . (int)$option_id . "'"); 60 $this->db->query("DELETE FROM " . DB_PREFIX . "option_value WHERE option_id = '" . (int)$option_id . "'"); 61 $this->db->query("DELETE FROM " . DB_PREFIX . "option_value_description WHERE option_id = '" . (int)$option_id . "'"); 62 } 63 64 public function getOption($option_id) { 65 $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "option` o LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE o.option_id = '" . (int)$option_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "'"); 66 67 return $query->row; 68 } 69 70 public function getOptions($data = array()) { 71 $sql = "SELECT * FROM `" . DB_PREFIX . "option` o LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE od.language_id = '" . (int)$this->config->get('config_language_id') . "'"; 72 73 if (!empty($data['filter_name'])) { 74 $sql .= " AND od.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; 75 } 76 77 $sort_data = array( 78 'od.name', 79 'o.type', 80 'o.sort_order' 81 ); 82 83 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { 84 $sql .= " ORDER BY " . $data['sort']; 85 } else { 86 $sql .= " ORDER BY od.name"; 87 } 88 89 if (isset($data['order']) && ($data['order'] == 'DESC')) { 90 $sql .= " DESC"; 91 } else { 92 $sql .= " ASC"; 93 } 94 95 if (isset($data['start']) || isset($data['limit'])) { 96 if ($data['start'] < 0) { 97 $data['start'] = 0; 98 } 99 100 if ($data['limit'] < 1) { 101 $data['limit'] = 20; 102 } 103 104 $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; 105 } 106 107 $query = $this->db->query($sql); 108 109 return $query->rows; 110 } 111 112 public function getOptionDescriptions($option_id) { 113 $option_data = array(); 114 115 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_description WHERE option_id = '" . (int)$option_id . "'"); 116 117 foreach ($query->rows as $result) { 118 $option_data[$result['language_id']] = array('name' => $result['name']); 119 } 120 121 return $option_data; 122 } 123 124 public function getOptionValue($option_value_id) { 125 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value ov LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE ov.option_value_id = '" . (int)$option_value_id . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "'"); 126 127 return $query->row; 128 } 129 130 public function getOptionValues($option_id) { 131 $option_value_data = array(); 132 133 $option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value ov LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE ov.option_id = '" . (int)$option_id . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order, ovd.name"); 134 135 foreach ($option_value_query->rows as $option_value) { 136 $option_value_data[] = array( 137 'option_value_id' => $option_value['option_value_id'], 138 'name' => $option_value['name'], 139 'image' => $option_value['image'], 140 'sort_order' => $option_value['sort_order'] 141 ); 142 } 143 144 return $option_value_data; 145 } 146 147 public function getOptionValueDescriptions($option_id) { 148 $option_value_data = array(); 149 150 $option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value WHERE option_id = '" . (int)$option_id . "' ORDER BY sort_order"); 151 152 foreach ($option_value_query->rows as $option_value) { 153 $option_value_description_data = array(); 154 155 $option_value_description_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value_description WHERE option_value_id = '" . (int)$option_value['option_value_id'] . "'"); 156 157 foreach ($option_value_description_query->rows as $option_value_description) { 158 $option_value_description_data[$option_value_description['language_id']] = array('name' => $option_value_description['name']); 159 } 160 161 $option_value_data[] = array( 162 'option_value_id' => $option_value['option_value_id'], 163 'option_value_description' => $option_value_description_data, 164 'image' => $option_value['image'], 165 'sort_order' => $option_value['sort_order'] 166 ); 167 } 168 169 return $option_value_data; 170 } 171 172 public function getTotalOptions() { 173 $query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "option`"); 174 175 return $query->row['total']; 176 } 177 }