language.php (17823B)
1 <?php 2 class ModelLocalisationLanguage extends Model { 3 public function addLanguage($data) { 4 $this->db->query("INSERT INTO " . DB_PREFIX . "language SET name = '" . $this->db->escape($data['name']) . "', code = '" . $this->db->escape($data['code']) . "', locale = '" . $this->db->escape($data['locale']) . "', sort_order = '" . (int)$data['sort_order'] . "', status = '" . (int)$data['status'] . "'"); 5 6 $this->cache->delete('catalog.language'); 7 $this->cache->delete('admin.language'); 8 9 $language_id = $this->db->getLastId(); 10 11 // Attribute 12 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "attribute_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 13 14 foreach ($query->rows as $attribute) { 15 $this->db->query("INSERT INTO " . DB_PREFIX . "attribute_description SET attribute_id = '" . (int)$attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($attribute['name']) . "'"); 16 } 17 18 // Attribute Group 19 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "attribute_group_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 20 21 foreach ($query->rows as $attribute_group) { 22 $this->db->query("INSERT INTO " . DB_PREFIX . "attribute_group_description SET attribute_group_id = '" . (int)$attribute_group['attribute_group_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($attribute_group['name']) . "'"); 23 } 24 25 $this->cache->delete('attribute'); 26 27 // Banner 28 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "banner_image WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 29 30 foreach ($query->rows as $banner_image) { 31 $this->db->query("INSERT INTO " . DB_PREFIX . "banner_image SET banner_id = '" . (int)$banner_image['banner_id'] . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($banner_image['title']) . "', link = '" . $this->db->escape($banner_image['link']) . "', image = '" . $this->db->escape($banner_image['image']) . "', sort_order = '" . (int)$banner_image['sort_order'] . "'"); 32 } 33 34 $this->cache->delete('banner'); 35 36 // Category 37 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 38 39 foreach ($query->rows as $category) { 40 $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category['category_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($category['name']) . "', description = '" . $this->db->escape($category['description']) . "', meta_title = '" . $this->db->escape($category['meta_title']) . "', meta_description = '" . $this->db->escape($category['meta_description']) . "', meta_keyword = '" . $this->db->escape($category['meta_keyword']) . "'"); 41 } 42 43 $this->cache->delete('category'); 44 45 // Customer Group 46 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 47 48 foreach ($query->rows as $customer_group) { 49 $this->db->query("INSERT INTO " . DB_PREFIX . "customer_group_description SET customer_group_id = '" . (int)$customer_group['customer_group_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($customer_group['name']) . "', description = '" . $this->db->escape($customer_group['description']) . "'"); 50 } 51 52 // Custom Field 53 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "custom_field_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 54 55 foreach ($query->rows as $custom_field) { 56 $this->db->query("INSERT INTO " . DB_PREFIX . "custom_field_description SET custom_field_id = '" . (int)$custom_field['custom_field_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($custom_field['name']) . "'"); 57 } 58 59 // Custom Field Value 60 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "custom_field_value_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 61 62 foreach ($query->rows as $custom_field_value) { 63 $this->db->query("INSERT INTO " . DB_PREFIX . "custom_field_value_description SET custom_field_value_id = '" . (int)$custom_field_value['custom_field_value_id'] . "', language_id = '" . (int)$language_id . "', custom_field_id = '" . (int)$custom_field_value['custom_field_id'] . "', name = '" . $this->db->escape($custom_field_value['name']) . "'"); 64 } 65 66 // Download 67 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "download_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 68 69 foreach ($query->rows as $download) { 70 $this->db->query("INSERT INTO " . DB_PREFIX . "download_description SET download_id = '" . (int)$download['download_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($download['name']) . "'"); 71 } 72 73 // Filter 74 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "filter_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 75 76 foreach ($query->rows as $filter) { 77 $this->db->query("INSERT INTO " . DB_PREFIX . "filter_description SET filter_id = '" . (int)$filter['filter_id'] . "', language_id = '" . (int)$language_id . "', filter_group_id = '" . (int)$filter['filter_group_id'] . "', name = '" . $this->db->escape($filter['name']) . "'"); 78 } 79 80 // Filter Group 81 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "filter_group_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 82 83 foreach ($query->rows as $filter_group) { 84 $this->db->query("INSERT INTO " . DB_PREFIX . "filter_group_description SET filter_group_id = '" . (int)$filter_group['filter_group_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($filter_group['name']) . "'"); 85 } 86 87 // Information 88 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "information_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 89 90 foreach ($query->rows as $information) { 91 $this->db->query("INSERT INTO " . DB_PREFIX . "information_description SET information_id = '" . (int)$information['information_id'] . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($information['title']) . "', description = '" . $this->db->escape($information['description']) . "', meta_title = '" . $this->db->escape($information['meta_title']) . "', meta_description = '" . $this->db->escape($information['meta_description']) . "', meta_keyword = '" . $this->db->escape($information['meta_keyword']) . "'"); 92 } 93 94 $this->cache->delete('information'); 95 96 // Length 97 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "length_class_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 98 99 foreach ($query->rows as $length) { 100 $this->db->query("INSERT INTO " . DB_PREFIX . "length_class_description SET length_class_id = '" . (int)$length['length_class_id'] . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($length['title']) . "', unit = '" . $this->db->escape($length['unit']) . "'"); 101 } 102 103 $this->cache->delete('length_class'); 104 105 // Option 106 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 107 108 foreach ($query->rows as $option) { 109 $this->db->query("INSERT INTO " . DB_PREFIX . "option_description SET option_id = '" . (int)$option['option_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($option['name']) . "'"); 110 } 111 112 // Option Value 113 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 114 115 foreach ($query->rows as $option_value) { 116 $this->db->query("INSERT INTO " . DB_PREFIX . "option_value_description SET option_value_id = '" . (int)$option_value['option_value_id'] . "', language_id = '" . (int)$language_id . "', option_id = '" . (int)$option_value['option_id'] . "', name = '" . $this->db->escape($option_value['name']) . "'"); 117 } 118 119 // Order Status 120 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 121 122 foreach ($query->rows as $order_status) { 123 $this->db->query("INSERT INTO " . DB_PREFIX . "order_status SET order_status_id = '" . (int)$order_status['order_status_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($order_status['name']) . "'"); 124 } 125 126 $this->cache->delete('order_status'); 127 128 // Product 129 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 130 131 foreach ($query->rows as $product) { 132 $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product['product_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($product['name']) . "', description = '" . $this->db->escape($product['description']) . "', tag = '" . $this->db->escape($product['tag']) . "', meta_title = '" . $this->db->escape($product['meta_title']) . "', meta_description = '" . $this->db->escape($product['meta_description']) . "', meta_keyword = '" . $this->db->escape($product['meta_keyword']) . "'"); 133 } 134 135 $this->cache->delete('product'); 136 137 // Product Attribute 138 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 139 140 foreach ($query->rows as $product_attribute) { 141 $this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_attribute['product_id'] . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" . $this->db->escape($product_attribute['text']) . "'"); 142 } 143 144 // Return Action 145 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "return_action WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 146 147 foreach ($query->rows as $return_action) { 148 $this->db->query("INSERT INTO " . DB_PREFIX . "return_action SET return_action_id = '" . (int)$return_action['return_action_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($return_action['name']) . "'"); 149 } 150 151 // Return Reason 152 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "return_reason WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 153 154 foreach ($query->rows as $return_reason) { 155 $this->db->query("INSERT INTO " . DB_PREFIX . "return_reason SET return_reason_id = '" . (int)$return_reason['return_reason_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($return_reason['name']) . "'"); 156 } 157 158 // Return Status 159 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "return_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 160 161 foreach ($query->rows as $return_status) { 162 $this->db->query("INSERT INTO " . DB_PREFIX . "return_status SET return_status_id = '" . (int)$return_status['return_status_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($return_status['name']) . "'"); 163 } 164 165 // Stock Status 166 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "stock_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 167 168 foreach ($query->rows as $stock_status) { 169 $this->db->query("INSERT INTO " . DB_PREFIX . "stock_status SET stock_status_id = '" . (int)$stock_status['stock_status_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($stock_status['name']) . "'"); 170 } 171 172 $this->cache->delete('stock_status'); 173 174 // Voucher Theme 175 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "voucher_theme_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 176 177 foreach ($query->rows as $voucher_theme) { 178 $this->db->query("INSERT INTO " . DB_PREFIX . "voucher_theme_description SET voucher_theme_id = '" . (int)$voucher_theme['voucher_theme_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($voucher_theme['name']) . "'"); 179 } 180 181 $this->cache->delete('voucher_theme'); 182 183 // Weight Class 184 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "weight_class_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 185 186 foreach ($query->rows as $weight_class) { 187 $this->db->query("INSERT INTO " . DB_PREFIX . "weight_class_description SET weight_class_id = '" . (int)$weight_class['weight_class_id'] . "', language_id = '" . (int)$language_id . "', title = '" . $this->db->escape($weight_class['title']) . "', unit = '" . $this->db->escape($weight_class['unit']) . "'"); 188 } 189 190 $this->cache->delete('weight_class'); 191 192 // Profiles 193 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "recurring_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'"); 194 195 foreach ($query->rows as $recurring) { 196 $this->db->query("INSERT INTO " . DB_PREFIX . "recurring_description SET recurring_id = '" . (int)$recurring['recurring_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($recurring['name'])); 197 } 198 199 return $language_id; 200 } 201 202 public function editLanguage($language_id, $data) { 203 $language_query = $this->db->query("SELECT `code` FROM " . DB_PREFIX . "language WHERE language_id = '" . (int)$language_id . "'"); 204 205 $this->db->query("UPDATE " . DB_PREFIX . "language SET name = '" . $this->db->escape($data['name']) . "', code = '" . $this->db->escape($data['code']) . "', locale = '" . $this->db->escape($data['locale']) . "', sort_order = '" . (int)$data['sort_order'] . "', status = '" . (int)$data['status'] . "' WHERE language_id = '" . (int)$language_id . "'"); 206 207 if ($language_query->row['code'] != $data['code']) { 208 $this->db->query("UPDATE " . DB_PREFIX . "setting SET value = '" . $this->db->escape($data['code']) . "' WHERE `key` = 'config_language' AND value = '" . $this->db->escape($language_query->row['code']) . "'"); 209 $this->db->query("UPDATE " . DB_PREFIX . "setting SET value = '" . $this->db->escape($data['code']) . "' WHERE `key` = 'config_admin_language' AND value = '" . $this->db->escape($language_query->row['code']) . "'"); 210 } 211 212 $this->cache->delete('catalog.language'); 213 $this->cache->delete('admin.language'); 214 } 215 216 public function deleteLanguage($language_id) { 217 $this->db->query("DELETE FROM " . DB_PREFIX . "language WHERE language_id = '" . (int)$language_id . "'"); 218 219 $this->cache->delete('catalog.language'); 220 $this->cache->delete('admin.language'); 221 222 /* 223 Do not put any delete code for related tables for languages!!!!!!!!! 224 225 It is not required as when ever you re save to a multi language table then the entries for the deleted language will also be deleted! 226 227 Wasting my time with people adding code here! 228 */ 229 } 230 231 public function getLanguage($language_id) { 232 $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "language WHERE language_id = '" . (int)$language_id . "'"); 233 234 return $query->row; 235 } 236 237 public function getLanguages($data = array()) { 238 if ($data) { 239 $sql = "SELECT * FROM " . DB_PREFIX . "language"; 240 241 $sort_data = array( 242 'name', 243 'code', 244 'sort_order' 245 ); 246 247 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { 248 $sql .= " ORDER BY " . $data['sort']; 249 } else { 250 $sql .= " ORDER BY sort_order, name"; 251 } 252 253 if (isset($data['order']) && ($data['order'] == 'DESC')) { 254 $sql .= " DESC"; 255 } else { 256 $sql .= " ASC"; 257 } 258 259 if (isset($data['start']) || isset($data['limit'])) { 260 if ($data['start'] < 0) { 261 $data['start'] = 0; 262 } 263 264 if ($data['limit'] < 1) { 265 $data['limit'] = 20; 266 } 267 268 $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; 269 } 270 271 $query = $this->db->query($sql); 272 273 return $query->rows; 274 } else { 275 $language_data = $this->cache->get('language'); 276 277 if (!$language_data) { 278 $language_data = array(); 279 280 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language ORDER BY sort_order, name"); 281 282 foreach ($query->rows as $result) { 283 $language_data[$result['code']] = array( 284 'language_id' => $result['language_id'], 285 'name' => $result['name'], 286 'code' => $result['code'], 287 'locale' => $result['locale'], 288 'image' => $result['image'], 289 'directory' => $result['directory'], 290 'sort_order' => $result['sort_order'], 291 'status' => $result['status'] 292 ); 293 } 294 295 $this->cache->set('admin.language', $language_data); 296 } 297 298 return $language_data; 299 } 300 } 301 302 public function getLanguageByCode($code) { 303 $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "language` WHERE code = '" . $this->db->escape($code) . "'"); 304 305 return $query->row; 306 } 307 308 public function getTotalLanguages() { 309 $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "language"); 310 311 return $query->row['total']; 312 } 313 }