Example #1
0
 /**
  * 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());
 }
Example #2
0
 /**
  *
  * 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'));
 }