public function setLanguage($langCode = null) { $Data = array(); $browserLanguage = $this->getBrowserFirstLanguage(); if (Session::getActiveLanguage() == NULL || !empty($langCode)) { $sql = 'SELECT L.idlanguage, L.name, C.idcurrency, C.currencysymbol FROM language L LEFT JOIN languageview LV ON L.idlanguage = LV.languageid LEFT JOIN currency C ON C.idcurrency = L.currencyid WHERE LV.viewid = :viewid ORDER BY L.idlanguage'; $stmt = Db::getInstance()->prepare($sql); $stmt->bindValue('viewid', Helper::getViewId()); $stmt->execute(); $set = false; while ($rs = $stmt->fetch()) { $Data[substr($rs['name'], 0, 2)] = array('id' => $rs['idlanguage'], 'name' => $rs['name'], 'currencyid' => $rs['idcurrency'], 'currencysymbol' => $rs['currencysymbol']); } if (!empty($langCode)) { if (!empty($Data)) { Session::setActiveLanguage($Data[$langCode]['name']); Session::setActiveLanguageId($Data[$langCode]['id']); Session::setActiveCurrencyId($Data[$langCode]['currencyid']); Session::setActiveCurrencySymbol($Data[$langCode]['currencysymbol']); } else { // for Global view (viewid = 0) get settings from first view $sql = 'SELECT L.idlanguage, L.name, C.idcurrency, C.currencysymbol FROM language L LEFT JOIN languageview LV ON L.idlanguage = LV.languageid LEFT JOIN currency C ON C.idcurrency = L.currencyid WHERE LV.viewid = (SELECT idview FROM view LIMIT 1) ORDER BY L.idlanguage'; $stmt = Db::getInstance()->prepare($sql); $stmt->execute(); $set = false; while ($rs = $stmt->fetch()) { $Data[substr($rs['name'], 0, 2)] = array('id' => $rs['idlanguage'], 'name' => $rs['name'], 'currencyid' => $rs['idcurrency'], 'currencysymbol' => $rs['currencysymbol']); } Session::setActiveLanguage($Data[$langCode]['name']); Session::setActiveLanguageId($Data[$langCode]['id']); Session::setActiveCurrencyId($Data[$langCode]['currencyid']); Session::setActiveCurrencySymbol($Data[$langCode]['currencysymbol']); } return; } foreach ($Data as $language => $val) { if ($language == $browserLanguage) { Session::setActiveLanguage($val['name']); Session::setActiveLanguageId($val['id']); Session::setActiveCurrencyId($val['currencyid']); Session::setActiveCurrencySymbol($val['currencysymbol']); break; } } if (Session::getActiveLanguage() == NULL) { reset($Data); $val = current($Data); Session::setActiveLanguage($val['name']); Session::setActiveLanguageId($val['id']); Session::setActiveCurrencyId($val['currencyid']); Session::setActiveCurrencySymbol($val['currencysymbol']); } } }