Fix user language edition, fix default language, use isocode

Remove unused code
pull/3924/head
Julio Montoya 4 years ago
parent ce9f14a733
commit 1223d7f8fb
  1. 2
      .env
  2. 5
      public/main/admin/user_add.php
  3. 5
      public/main/admin/user_edit.php
  4. 7
      public/main/inc/lib/internationalization.lib.php
  5. 8
      public/main/inc/lib/usermanager.lib.php
  6. 14
      public/main/install/index.php
  7. 161
      public/main/install/install.lib.php
  8. 15
      src/CoreBundle/DataFixtures/LanguageFixtures.php

@ -24,7 +24,7 @@ APP_INSTALLED='{{APP_INSTALLED}}'
## Encrypt method bcrypt/sha1/md5 ## Encrypt method bcrypt/sha1/md5
APP_ENCRYPT_METHOD='{{APP_ENCRYPT_METHOD}}' APP_ENCRYPT_METHOD='{{APP_ENCRYPT_METHOD}}'
APP_LOCALE='en' APP_LOCALE='en_US'
APP_MULTIPLE_ACCESS_URL='' APP_MULTIPLE_ACCESS_URL=''

@ -258,7 +258,7 @@ if (api_is_platform_admin()) {
$form->addElement('html', '</div>'); $form->addElement('html', '</div>');
} }
$form->addSelectLanguage('language', get_lang('Language')); $form->addSelectLanguage('locale', get_lang('Language'));
// Send email // Send email
$group = []; $group = [];
@ -329,6 +329,7 @@ $defaults['extra_mail_notify_message'] = 1;
$defaults['extra_mail_notify_group_message'] = 1; $defaults['extra_mail_notify_group_message'] = 1;
$defaults['radio_expiration_date'] = 0; $defaults['radio_expiration_date'] = 0;
$defaults['status'] = STUDENT; $defaults['status'] = STUDENT;
$defaults['locale'] = api_get_language_isocode();
$form->setDefaults($defaults); $form->setDefaults($defaults);
// Submit button // Submit button
@ -348,7 +349,7 @@ if ($form->validate()) {
$phone = $user['phone']; $phone = $user['phone'];
$username = $user['username']; $username = $user['username'];
$status = (int) $user['status']; $status = (int) $user['status'];
$language = $user['language']; $language = $user['locale'];
$picture = $_FILES['picture']; $picture = $_FILES['picture'];
$platform_admin = 0; $platform_admin = 0;
if (isset($user['admin']) && isset($user['admin']['platform_admin'])) { if (isset($user['admin']) && isset($user['admin']['platform_admin'])) {

@ -85,6 +85,7 @@ if (1 != Database::num_rows($res)) {
} }
$user_data = Database::fetch_array($res, 'ASSOC'); $user_data = Database::fetch_array($res, 'ASSOC');
$user_data['platform_admin'] = is_null($user_data['is_admin']) ? 0 : 1; $user_data['platform_admin'] = is_null($user_data['is_admin']) ? 0 : 1;
$user_data['send_mail'] = 0; $user_data['send_mail'] = 0;
$user_data['old_password'] = $user_data['password']; $user_data['old_password'] = $user_data['password'];
@ -266,7 +267,7 @@ if (api_is_platform_admin()) {
} }
//Language //Language
$form->addSelectLanguage('language', get_lang('Language')); $form->addSelectLanguage('locale', get_lang('Language'));
// Send email // Send email
$group = []; $group = [];
@ -423,7 +424,7 @@ if ($form->validate()) {
$send_mail = (int) $user['send_mail']; $send_mail = (int) $user['send_mail'];
$reset_password = (int) $user['reset_password']; $reset_password = (int) $user['reset_password'];
$hr_dept_id = isset($user['hr_dept_id']) ? intval($user['hr_dept_id']) : null; $hr_dept_id = isset($user['hr_dept_id']) ? intval($user['hr_dept_id']) : null;
$language = $user['language']; $language = $user['locale'];
$address = isset($user['address']) ? $user['address'] : null; $address = isset($user['address']) ? $user['address'] : null;
$expiration_date = null; $expiration_date = null;

@ -2065,7 +2065,11 @@ function _api_get_person_name_convention($iso, $type)
$conventionsFormatted[$iso]['format'] = $language['format']; $conventionsFormatted[$iso]['format'] = $language['format'];
$conventionsFormatted[$iso]['sort_by'] = $language['sort_by']; $conventionsFormatted[$iso]['sort_by'] = $language['sort_by'];
$conventionsFormatted[$iso]['format'] = str_replace($search1, $replacement1, $conventionsFormatted[$iso]['format']); $conventionsFormatted[$iso]['format'] = str_replace(
$search1,
$replacement1,
$conventionsFormatted[$iso]['format']
);
$conventionsFormatted[$iso]['format'] = _api_validate_person_name_format( $conventionsFormatted[$iso]['format'] = _api_validate_person_name_format(
_api_clean_person_name( _api_clean_person_name(
str_replace( str_replace(
@ -2079,6 +2083,7 @@ function _api_get_person_name_convention($iso, $type)
) )
) )
); );
$conventionsFormatted[$iso]['sort_by'] = 'last_name' !== strtolower($conventionsFormatted[$iso]['sort_by']) ? true : false; $conventionsFormatted[$iso]['sort_by'] = 'last_name' !== strtolower($conventionsFormatted[$iso]['sort_by']) ? true : false;
} }

@ -272,14 +272,12 @@ class UserManager
// Checking the user language // Checking the user language
$languages = api_get_languages(); $languages = api_get_languages();
$language = strtolower($language);
// Default to english // Default to english
if (!in_array($language, array_keys($languages), true)) { if (!in_array($language, array_keys($languages), true)) {
$language = 'en'; $language = 'en_US';
} }
$currentDate = api_get_utc_datetime();
$now = new DateTime(); $now = new DateTime();
if (empty($expirationDate) || '0000-00-00 00:00:00' === $expirationDate) { if (empty($expirationDate) || '0000-00-00 00:00:00' === $expirationDate) {
@ -1038,7 +1036,7 @@ class UserManager
$creator_id = null, $creator_id = null,
$hr_dept_id = 0, $hr_dept_id = 0,
$extra = null, $extra = null,
$language = 'english', $language = 'en_US',
$encrypt_method = '', $encrypt_method = '',
$send_email = false, $send_email = false,
$reset_password = 0, $reset_password = 0,
@ -1111,12 +1109,10 @@ class UserManager
->setStatus($status) ->setStatus($status)
->setAuthSource($auth_source) ->setAuthSource($auth_source)
->setLocale($language) ->setLocale($language)
->setLocale($language)
->setEmail($email) ->setEmail($email)
->setOfficialCode($official_code) ->setOfficialCode($official_code)
->setPhone($phone) ->setPhone($phone)
->setAddress($address) ->setAddress($address)
//->setPictureUri($picture_uri)
->setExpirationDate($expiration_date) ->setExpirationDate($expiration_date)
->setActive($active) ->setActive($active)
->setEnabled($active) ->setEnabled($active)

@ -66,21 +66,7 @@ putenv('APP_DEBUG=1');
session_start(); session_start();
require_once 'install.lib.php'; require_once 'install.lib.php';
$installationLanguage = 'en_US';
// Determination of the language during the installation procedure.
if (!empty($_POST['language_list'])) {
$search = ['../', '\\0'];
$installationLanguage = str_replace($search, '', urldecode($_POST['language_list']));
} else {
// Trying to switch to the browser's language, it is covenient for most of the cases.
$installationLanguage = detect_browser_language();
}
// Language validation.
if (!array_key_exists($installationLanguage, get_language_folder_list())) {
$installationLanguage = 'en_US'; $installationLanguage = 'en_US';
}
// Set translation // Set translation
$translator = new Translator($installationLanguage); $translator = new Translator($installationLanguage);

@ -194,98 +194,6 @@ function trueFalse($var)
return $var ? 'true' : 'false'; return $var ? 'true' : 'false';
} }
/**
* Detects browser's language.
*
* @return string Returns a language identificator, i.e. 'english', 'spanish', ...
*
* @author Ivan Tcholakov, 2010
*/
function detect_browser_language()
{
static $language_index = [
'ar' => 'arabic',
'ast' => 'asturian',
'bg' => 'bulgarian',
'bs' => 'bosnian',
'ca' => 'catalan',
'zh' => 'simpl_chinese',
'zh-tw' => 'trad_chinese',
'cs' => 'czech',
'da' => 'danish',
'prs' => 'dari',
'de' => 'german',
'el' => 'greek',
'en' => 'english',
'es' => 'spanish',
'eo' => 'esperanto',
'eu' => 'basque',
'fa' => 'persian',
'fr' => 'french',
'fur' => 'friulian',
'gl' => 'galician',
'ka' => 'georgian',
'hr' => 'croatian',
'he' => 'hebrew',
'hi' => 'hindi',
'id' => 'indonesian',
'it' => 'italian',
'ko' => 'korean',
'lv' => 'latvian',
'lt' => 'lithuanian',
'mk' => 'macedonian',
'hu' => 'hungarian',
'ms' => 'malay',
'nl' => 'dutch',
'ja' => 'japanese',
'no' => 'norwegian',
'oc' => 'occitan',
'ps' => 'pashto',
'pl' => 'polish',
'pt' => 'portuguese',
'pt-br' => 'brazilian',
'ro' => 'romanian',
'qu' => 'quechua_cusco',
'ru' => 'russian',
'sk' => 'slovak',
'sl' => 'slovenian',
'sr' => 'serbian',
'fi' => 'finnish',
'sv' => 'swedish',
'th' => 'thai',
'tr' => 'turkish',
'uk' => 'ukrainian',
'vi' => 'vietnamese',
'sw' => 'swahili',
'yo' => 'yoruba',
];
$system_available_languages = get_language_folder_list();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$accept_languages = strtolower(str_replace('_', '-', $_SERVER['HTTP_ACCEPT_LANGUAGE']));
foreach ($language_index as $code => $language) {
if (0 === strpos($accept_languages, $code)) {
if (!empty($system_available_languages[$language])) {
return $language;
}
}
}
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$user_agent = strtolower(str_replace('_', '-', $_SERVER['HTTP_USER_AGENT']));
foreach ($language_index as $code => $language) {
if (@preg_match("/[\[\( ]{$code}[;,_\-\)]/", $user_agent)) {
if (!empty($system_available_languages[$language])) {
return $language;
}
}
}
}
return 'english';
}
/** /**
* This function checks if the given folder is writable. * This function checks if the given folder is writable.
* *
@ -376,73 +284,6 @@ function writeSystemConfigFile($path)
fclose($fp); fclose($fp);
} }
/**
* Returns a list of language directories.
*/
function get_language_folder_list()
{
$languages = LanguageFixtures::getLanguages();
return array_column($languages, 'english_name', 'isocode');
return [
'ar' => 'arabic',
'ast' => 'asturian',
'bg' => 'bulgarian',
'bs' => 'bosnian',
'ca' => 'catalan',
'zh' => 'simpl_chinese',
'zh-tw' => 'trad_chinese',
'cs' => 'czech',
'da' => 'danish',
'prs' => 'dari',
'de' => 'german',
'el' => 'greek',
'en' => 'english',
'es' => 'spanish',
'eo' => 'esperanto',
'eu' => 'basque',
'fa' => 'persian',
'fr' => 'french',
'fur' => 'friulian',
'gl' => 'galician',
'ka' => 'georgian',
'hr' => 'croatian',
'he' => 'hebrew',
'hi' => 'hindi',
'id' => 'indonesian',
'it' => 'italian',
'ko' => 'korean',
'lv' => 'latvian',
'lt' => 'lithuanian',
'mk' => 'macedonian',
'hu' => 'hungarian',
'ms' => 'malay',
'nl' => 'dutch',
'ja' => 'japanese',
'no' => 'norwegian',
'oc' => 'occitan',
'ps' => 'pashto',
'pl' => 'polish',
'pt' => 'portuguese',
'pt-br' => 'brazilian',
'ro' => 'romanian',
'qu' => 'quechua_cusco',
'ru' => 'russian',
'sk' => 'slovak',
'sl' => 'slovenian',
'sr' => 'serbian',
'fi' => 'finnish',
'sv' => 'swedish',
'th' => 'thai',
'tr' => 'turkish',
'uk' => 'ukrainian',
'vi' => 'vietnamese',
'sw' => 'swahili',
'yo' => 'yoruba',
];
}
/** /**
* This function returns the value of a parameter from the configuration file. * This function returns the value of a parameter from the configuration file.
* *
@ -583,7 +424,7 @@ function display_language_selection_box($name = 'language_list', $default_langua
// Displaying the box. // Displaying the box.
return Display::select( return Display::select(
'language_list', 'language_list',
get_language_folder_list(), array_column(LanguageFixtures::getLanguages(),'english_name', 'isocode'),
$default_language, $default_language,
['class' => 'form-control'], ['class' => 'form-control'],
false false

@ -20,7 +20,8 @@ class LanguageFixtures extends Fixture
->setOriginalName($data['original_name']) ->setOriginalName($data['original_name'])
->setEnglishName($data['english_name']) ->setEnglishName($data['english_name'])
->setIsocode($data['isocode']) ->setIsocode($data['isocode'])
->setAvailable(1 === $data['available']); ->setAvailable(1 === $data['available'])
;
$manager->persist($lang); $manager->persist($lang);
} }
@ -83,7 +84,7 @@ class LanguageFixtures extends Fixture
'original_name' => 'Bosanski', 'original_name' => 'Bosanski',
'english_name' => 'bosnian', 'english_name' => 'bosnian',
'isocode' => 'bs_BA', 'isocode' => 'bs_BA',
'available' => 1, 'available' => 0,
'format' => 'title first_name last_name', 'format' => 'title first_name last_name',
'sort_by' => 'first_name', 'sort_by' => 'first_name',
], ],
@ -99,7 +100,7 @@ class LanguageFixtures extends Fixture
'original_name' => 'Български', 'original_name' => 'Български',
'english_name' => 'bulgarian', 'english_name' => 'bulgarian',
'isocode' => 'bg', 'isocode' => 'bg',
'available' => 1, 'available' => 0,
'format' => 'title first_name last_name', 'format' => 'title first_name last_name',
'sort_by' => 'first_name', 'sort_by' => 'first_name',
], ],
@ -241,7 +242,7 @@ class LanguageFixtures extends Fixture
'original_name' => 'עברית', 'original_name' => 'עברית',
'english_name' => 'hebrew', 'english_name' => 'hebrew',
'isocode' => 'he_IL', 'isocode' => 'he_IL',
'available' => 1, 'available' => 0,
'format' => 'title first_name last_name', 'format' => 'title first_name last_name',
'sort_by' => 'first_name', 'sort_by' => 'first_name',
], ],
@ -257,7 +258,7 @@ class LanguageFixtures extends Fixture
'original_name' => 'Magyar', 'original_name' => 'Magyar',
'english_name' => 'hungarian', 'english_name' => 'hungarian',
'isocode' => 'hu_HU', 'isocode' => 'hu_HU',
'available' => 1, 'available' => 0,
'format' => 'title last_name first_name', 'format' => 'title last_name first_name',
'sort_by' => 'last_name', 'sort_by' => 'last_name',
], ],
@ -362,7 +363,7 @@ class LanguageFixtures extends Fixture
'original_name' => 'Polski', 'original_name' => 'Polski',
'english_name' => 'polish', 'english_name' => 'polish',
'isocode' => 'pl_PL', 'isocode' => 'pl_PL',
'available' => 0, 'available' => 1,
'format' => 'title first_name last_name', 'format' => 'title first_name last_name',
'sort_by' => 'first_name', 'sort_by' => 'first_name',
], ],
@ -394,7 +395,7 @@ class LanguageFixtures extends Fixture
'original_name' => 'Русский', 'original_name' => 'Русский',
'english_name' => 'russian', 'english_name' => 'russian',
'isocode' => 'ru_RU', 'isocode' => 'ru_RU',
'available' => 0, 'available' => 1,
'format' => 'title first_name last_name', 'format' => 'title first_name last_name',
'sort_by' => 'first_name', 'sort_by' => 'first_name',
], ],

Loading…
Cancel
Save