From 4d4095eecf67063ddf69b0633b75aec8833bd43d Mon Sep 17 00:00:00 2001 From: nertyog Date: Sat, 1 Aug 2026 06:11:09 +0300 Subject: [PATCH] Fix language loading order: prioritize native OpenCart language loader and handle numeric language_id --- image_optimizer_nat_OC_20_22_1_1.ocmod.zip | Bin 650822 -> 651033 bytes upload/admin/controller/module/img_opti.php | 116 +++++++++++++------- 2 files changed, 76 insertions(+), 40 deletions(-) diff --git a/image_optimizer_nat_OC_20_22_1_1.ocmod.zip b/image_optimizer_nat_OC_20_22_1_1.ocmod.zip index 38a7acdfe8ab2f6e421acbb1f25cd6fb1506398f..fc824171f485de279a3a59c03e0cc7c366a749d8 100644 GIT binary patch delta 17380 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 r3dWEtqnPT$Bzg4&pYJc73`_UB delta 17318 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 + $data = array(); + if (isset($this->load) && method_exists($this->load, 'language')) { + try { + $lang_data = $this->load->language('module/img_opti'); + if (is_array($lang_data)) { + $data = array_merge($data, $lang_data); + } + } catch (Exception $e) {} + } + $fallback_data = $this->loadLanguageSafe(); + if (is_array($fallback_data)) { + $data = array_merge($fallback_data, $data); + } $this->document->setTitle($this->language->get('heading_title_raw')); $this->load->model('setting/setting'); @@ -2108,6 +2120,15 @@ class ControllerModuleImgOpti extends Controller { private function loadLanguageSafe() { $data = array(); + if (isset($this->language) && is_object($this->language)) { + if (method_exists($this->language, 'all')) { + $all = $this->language->all(); + if (is_array($all)) { + $data = array_merge($data, $all); + } + } + } + $en_paths = array( DIR_LANGUAGE . 'en-gb/module/img_opti.php', DIR_LANGUAGE . 'english/module/img_opti.php' @@ -2116,60 +2137,75 @@ class ControllerModuleImgOpti extends Controller { if (is_file($path)) { $_ = array(); require($path); - $data = array_merge($data, $_); + $data = array_merge($_, $data); break; } } - $lang = $this->config->get('config_admin_language'); - if (!$lang) { - $lang = $this->config->get('config_language'); - } + + $lang = ''; if (isset($this->session->data['language'])) { $lang = $this->session->data['language']; } + if (!$lang && $this->config->get('config_admin_language')) { + $lang = $this->config->get('config_admin_language'); + } + if (!$lang && $this->config->get('config_language')) { + $lang = $this->config->get('config_language'); + } if (!$lang) { $lang = 'en-gb'; } - $lang_lower = strtolower((string)$lang); - if ($lang_lower && $lang_lower !== 'en-gb' && $lang_lower !== 'english') { - $paths = array( - DIR_LANGUAGE . $lang . '/module/img_opti.php', - DIR_LANGUAGE . $lang_lower . '/module/img_opti.php' - ); - - if (isset($this->db)) { - try { + + $paths = array(); + if ($lang && $lang !== 'en-gb' && $lang !== 'english') { + $paths[] = DIR_LANGUAGE . $lang . '/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . strtolower($lang) . '/module/img_opti.php'; + } + + if (isset($this->db)) { + try { + $query_lang = null; + if (is_numeric($lang)) { + $query_lang = $this->db->query("SELECT directory, code FROM `" . DB_PREFIX . "language` WHERE language_id = '" . (int)$lang . "' LIMIT 1"); + } else if ($lang) { $escaped_lang = $this->db->escape($lang); - $query_lang = $this->db->query("SELECT directory FROM `" . DB_PREFIX . "language` WHERE code = '" . $escaped_lang . "' OR directory = '" . $escaped_lang . "' LIMIT 1"); - if ($query_lang && $query_lang->num_rows && !empty($query_lang->row['directory'])) { + $query_lang = $this->db->query("SELECT directory, code FROM `" . DB_PREFIX . "language` WHERE code = '" . $escaped_lang . "' OR directory = '" . $escaped_lang . "' LIMIT 1"); + } + if ($query_lang && $query_lang->num_rows) { + if (!empty($query_lang->row['directory'])) { $db_dir = $query_lang->row['directory']; $paths[] = DIR_LANGUAGE . $db_dir . '/module/img_opti.php'; $paths[] = DIR_LANGUAGE . strtolower($db_dir) . '/module/img_opti.php'; } - } catch (Exception $e) {} - } - - if (strpos($lang_lower, 'ru') !== false || strpos($lang_lower, 'rus') !== false) { - $paths[] = DIR_LANGUAGE . 'ru-ru/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'russian/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'ru-RU/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'ru/module/img_opti.php'; - } elseif (strpos($lang_lower, 'uk') !== false || strpos($lang_lower, 'ua') !== false || strpos($lang_lower, 'ukr') !== false) { - $paths[] = DIR_LANGUAGE . 'uk-ua/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'ukrainian/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'uk-UA/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'uk/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'ua/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'uk_ua/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'uk_UA/module/img_opti.php'; - } - foreach ($paths as $path) { - if (is_file($path)) { - $_ = array(); - require($path); - $data = array_merge($data, $_); - break; + if (!empty($query_lang->row['code'])) { + $lang = $query_lang->row['code']; + } } + } catch (Exception $e) {} + } + + $lang_lower = strtolower((string)$lang); + if (strpos($lang_lower, 'ru') !== false || strpos($lang_lower, 'rus') !== false) { + $paths[] = DIR_LANGUAGE . 'ru-ru/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'russian/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'ru-RU/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'ru/module/img_opti.php'; + } elseif (strpos($lang_lower, 'uk') !== false || strpos($lang_lower, 'ua') !== false || strpos($lang_lower, 'ukr') !== false) { + $paths[] = DIR_LANGUAGE . 'uk-ua/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'ukrainian/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'uk-UA/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'uk/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'ua/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'uk_ua/module/img_opti.php'; + $paths[] = DIR_LANGUAGE . 'uk_UA/module/img_opti.php'; + } + + foreach ($paths as $path) { + if (is_file($path)) { + $_ = array(); + require($path); + $data = array_merge($data, $_); + break; } } foreach ($data as $key => $value) {