Exemplo n.º 1
0
 /**
  * Determines the most appropriate locale, based on user metadata including
  * the user's saved locale preference (if any), the user's browser lang pref,
  * and the application's default locale. It also allows an override via
  * setting URL param 'ttlang' to a valid locale.
  *
  * Returns the best locale, or false if unable to find and set a locale.
  *
  * @param string|array $user_locale_pref
  * @return string|boolean
  * @author Dan Libby <*****@*****.**>
  */
 public static function chooseBestLocale($user_locale_pref = NULL)
 {
     Debug::text('Choosing Best Locale...', __FILE__, __LINE__, __METHOD__, 10);
     $success = FALSE;
     $category = LC_ALL;
     //LC_MESSAGES isn't defined on Windows.
     // First, we'll check if 'ttlang' url param (override) is specified.
     //Check cookie first, as we want GET/POST to override the cookie, incase of form errors on Login page etc...
     if (TTi18n::getLocaleCookie() != FALSE) {
         Debug::text('Using Language from cookie: ' . TTi18n::getLocaleCookie(), __FILE__, __LINE__, __METHOD__, 10);
         $success = TTi18n::setLocale(TTi18n::getLocaleCookie(), $category);
     }
     if (isset($_GET['language']) and $_GET['language'] != '') {
         Debug::text('Using Language from _GET: ' . $_GET['language'], __FILE__, __LINE__, __METHOD__, 10);
         $success = self::setLocale($_GET['language']);
     }
     if (isset($_POST['language']) and $_POST['language'] != '') {
         Debug::text('Using Language from _POST: ' . $_POST['language'], __FILE__, __LINE__, __METHOD__, 10);
         $success = self::setLocale($_POST['language']);
     }
     if ($success == FALSE) {
         // Check for a user pref first.
         if ($user_locale_pref != '') {
             // Could be an array of preferred locales.
             if (is_array($user_locale_pref)) {
                 foreach ($user_locale_pref as $locale) {
                     Debug::text('aSetting Locale: ' . $user_locale_pref, __FILE__, __LINE__, __METHOD__, 10);
                     if ($success = self::setLocale($locale, $category)) {
                         break;
                     }
                 }
             } else {
                 Debug::text('bSetting Locale: ' . $user_locale_pref, __FILE__, __LINE__, __METHOD__, 10);
                 // or a single locale
                 $success = self::setLocale($user_locale_pref, $category);
             }
         }
     }
     // Otherwise, check for lang prefs from the browser
     if ($success == FALSE) {
         // browser can specify more than one, so we get an array.
         $browser_lang_prefs = self::getBrowserLanguage();
         foreach ($browser_lang_prefs as $locale) {
             //The country code needs to be upper case for locales to work correctly.
             if (strpos($locale, '_') !== FALSE) {
                 $split_locale = explode('_', $locale);
                 if (isset($split_locale[1])) {
                     $locale = $split_locale[0] . '_' . strtoupper($split_locale[1]);
                 }
             }
             Debug::text('cSetting Locale: ' . $locale, __FILE__, __LINE__, __METHOD__, 10);
             if ($success = self::setLocale($locale, $category)) {
                 break;
             }
         }
     }
     if ($success == FALSE) {
         global $config_vars;
         //Use system locale if its set from timetrex.ini.php
         if (isset($config_vars['other']['system_locale']) and $config_vars['other']['system_locale'] != '') {
             Debug::text('Using system locale from .ini: ' . $config_vars['other']['system_locale'], __FILE__, __LINE__, __METHOD__, 10);
             $success = self::setLocale($config_vars['other']['system_locale'], $category);
         }
     }
     // If it worked, then we save this for future reference.
     if ($success !== FALSE) {
         Debug::text('Using Locale: ' . self::getLocale(), __FILE__, __LINE__, __METHOD__, 10);
     } else {
         Debug::text('Unable to find and set a locale.', __FILE__, __LINE__, __METHOD__, 10);
     }
     return TRUE;
 }
Exemplo n.º 2
0
     $db_time_zone_error = TRUE;
 }
 /*
  *	Check locale cookie, if it varies from UserPreference Language,
  *	change user preferences to match. This could cause some unexpected behavior
  *  as the change is happening behind the scenes, but if we don't change
  *  the user prefs then they could login for weeks/months as a different
  *  language from their preferences, therefore making the user preference
  *  setting almost useless. Causing issues when printing pay stubs and in each
  *  users language.
  */
 $profiler->startTimer("setLocale()");
 Debug::text('Locale Cookie: ' . TTi18n::getLocaleCookie(), __FILE__, __LINE__, __METHOD__, 10);
 if (TTi18n::getLocaleCookie() != '' and $current_user_prefs->getLanguage() !== TTi18n::getLanguageFromLocale(TTi18n::getLocaleCookie())) {
     Debug::text('Changing User Preference Language to match cookie...', __FILE__, __LINE__, __METHOD__, 10);
     $current_user_prefs->setLanguage(TTi18n::getLanguageFromLocale(TTi18n::getLocaleCookie()));
     if ($current_user_prefs->isValid()) {
         $current_user_prefs->Save(FALSE);
     }
 } else {
     Debug::text('User Preference Language matches cookie!', __FILE__, __LINE__, __METHOD__, 10);
 }
 if (isset($_GET['language']) and $_GET['language'] != '') {
     TTi18n::setLocale($_GET['language']);
     //Sets master locale
 } else {
     TTi18n::setLanguage($current_user_prefs->getLanguage());
     TTi18n::setCountry($current_user->getCountry());
     TTi18n::setLocale();
     //Sets master locale
 }
Exemplo n.º 3
0
 function getPreLoginData($api = NULL)
 {
     global $config_vars;
     return array('primary_company_id' => PRIMARY_COMPANY_ID, 'base_url' => Environment::getBaseURL(), 'api_url' => Environment::getAPIURL($api), 'api_base_url' => Environment::getAPIBaseURL($api), 'api_json_url' => Environment::getAPIURL('json'), 'images_url' => Environment::getImagesURL(), 'powered_by_logo_enabled' => $this->isPoweredByLogoEnabled(), 'product_edition' => $this->getTTProductEdition(FALSE), 'product_edition_name' => $this->getTTProductEdition(TRUE), 'deployment_on_demand' => $this->getDeploymentOnDemand(), 'web_session_expire' => (isset($config_vars['other']['web_session_expire']) and $config_vars['other']['web_session_expire'] != '') ? (bool) $config_vars['other']['web_session_expire'] : FALSE, 'analytics_enabled' => $this->isAnalyticsEnabled(), 'registration_key' => $this->getRegistrationKey(), 'http_host' => $this->getHTTPHost(), 'application_version' => $this->getApplicationVersion(), 'is_logged_in' => $this->isLoggedIn(), 'language_options' => Misc::addSortPrefix(TTi18n::getLanguageArray()), 'language' => TTi18n::getLanguageFromLocale(TTi18n::getLocaleCookie()));
 }