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 18cee30..38a7acd 100644 Binary files a/image_optimizer_nat_OC_20_22_1_1.ocmod.zip and b/image_optimizer_nat_OC_20_22_1_1.ocmod.zip differ diff --git a/upload/admin/controller/module/img_opti.php b/upload/admin/controller/module/img_opti.php index 4153c45..ef894cf 100644 --- a/upload/admin/controller/module/img_opti.php +++ b/upload/admin/controller/module/img_opti.php @@ -2130,16 +2130,38 @@ class ControllerModuleImgOpti extends Controller { if (!$lang) { $lang = 'en-gb'; } - if ($lang && $lang !== 'en-gb' && $lang !== 'english') { + $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 . '/module/img_opti.php', + DIR_LANGUAGE . $lang_lower . '/module/img_opti.php' ); - if (strpos($lang, 'ru') === 0) { + + if (isset($this->db)) { + try { + $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'])) { + $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'; - } elseif (strpos($lang, 'uk') === 0 || strpos($lang, 'ua') === 0) { + $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)) { diff --git a/upload/admin/model/module/img_opti.php b/upload/admin/model/module/img_opti.php index 8f64f7f..6599299 100644 --- a/upload/admin/model/module/img_opti.php +++ b/upload/admin/model/module/img_opti.php @@ -3232,6 +3232,8 @@ private function roundCornersGD($im, $radius) { private function loadLanguageSafe() { $data = array(); $en_paths = array( + DIR_LANGUAGE . 'en-gb/module/img_opti.php', + DIR_LANGUAGE . 'english/module/img_opti.php', DIR_LANGUAGE . 'en-gb/extension/module/img_opti.php', DIR_LANGUAGE . 'english/extension/module/img_opti.php' ); @@ -3253,16 +3255,40 @@ private function roundCornersGD($im, $radius) { if (!$lang) { $lang = 'en-gb'; } - if ($lang && $lang !== 'en-gb' && $lang !== 'english') { + $lang_lower = strtolower((string)$lang); + if ($lang_lower && $lang_lower !== 'en-gb' && $lang_lower !== 'english') { $paths = array( - DIR_LANGUAGE . $lang . '/extension/module/img_opti.php' + DIR_LANGUAGE . $lang . '/module/img_opti.php', + DIR_LANGUAGE . $lang_lower . '/module/img_opti.php', + DIR_LANGUAGE . $lang . '/extension/module/img_opti.php', + DIR_LANGUAGE . $lang_lower . '/extension/module/img_opti.php' ); - if (strpos($lang, 'ru') === 0) { - $paths[] = DIR_LANGUAGE . 'ru-ru/extension/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'russian/extension/module/img_opti.php'; - } elseif (strpos($lang, 'uk') === 0 || strpos($lang, 'ua') === 0) { - $paths[] = DIR_LANGUAGE . 'uk-ua/extension/module/img_opti.php'; - $paths[] = DIR_LANGUAGE . 'ukrainian/extension/module/img_opti.php'; + + if (isset($this->db)) { + try { + $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'])) { + $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)) {