/** * Returns the preferred section based on session, cookie, * user object, default browser (if allowed), and finally * site preferences. * Since the user's language is not a locale but a language, * attempts to determine best section for the given language. * * @return Section */ public static function getPreferredSection() { $site = \Site::getSite(); $locale = false; $app = Facade::getFacadeApplication(); // they have a language in a certain session going already $session = $app->make('session'); if ($session->has('multilingual_default_locale')) { $locale = $session->get('multilingual_default_locale'); } else { $cookie = $app->make('cookie'); if ($cookie->has('multilingual_default_locale')) { $locale = $cookie->get('multilingual_default_locale'); } } if ($locale) { $home = Section::getByLocale($locale); if ($home) { return $home; } } $u = new \User(); if ($u->isRegistered()) { $userDefaultLanguage = $u->getUserDefaultLanguage(); if ($userDefaultLanguage) { $home = Section::getByLocaleOrLanguage($userDefaultLanguage); if ($home) { return $home; } } } $config = $site->getConfigRepository(); if ($config->get('multilingual.use_browser_detected_locale')) { $home = false; $locales = \Punic\Misc::getBrowserLocales(); foreach (array_keys($locales) as $locale) { $home = Section::getByLocaleOrLanguage($locale); if ($home) { break; } } if ($home) { return $home; } } $site = \Site::getSite(); return Section::getByLocale($site->getDefaultLocale()); }
/** * * Returns the preferred section based on session, cookie, * user object, default browser (if allowed), and finally * site preferences. * Since the user's language is not a locale but a language, * attempts to determine best section for the given language. * @return Section */ public static function getPreferredSection() { $locale = false; // they have a language in a certain session going already if (Session::has('multilingual_default_locale')) { $locale = Session::get('multilingual_default_locale'); } else { if (Cookie::has('multilingual_default_locale')) { $locale = Cookie::get('multilingual_default_locale'); } } if ($locale) { $home = Section::getByLocale($locale); if ($home) { return $home; } } $u = new \User(); if ($u->isRegistered()) { $userDefaultLanguage = $u->getUserDefaultLanguage(); if ($userDefaultLanguage) { $home = Section::getByLocaleOrLanguage($userDefaultLanguage); if ($home) { return $home; } } } if (Config::get('concrete.multilingual.use_browser_detected_locale')) { $home = false; $locales = \Punic\Misc::getBrowserLocales(); foreach (array_keys($locales) as $locale) { $home = Section::getByLocaleOrLanguage($locale); if ($home) { break; } } if ($home) { return $home; } } return Section::getByLocale(Config::get('concrete.multilingual.default_locale')); }