Adding validation to verify existence of an isocode when adding a new sub language + adding a function api_get_platform_isocodes() see #2492

skala
Julio Montoya 14 years ago
parent 95c4d4b3ae
commit b4dd23c37b
  1. 21
      main/admin/sub_language_add.php
  2. 18
      main/inc/lib/internationalization.lib.php

@ -47,6 +47,7 @@ function add_sub_language ($original_name,$english_name,$isocode,$sublanguage_av
$sql='INSERT INTO '.$tbl_admin_languages.'(original_name,english_name,isocode,dokeos_folder,available,parent_id) VALUES ("'.$original_name.'","'.$english_name.'","'.$isocode.'","'.$english_name.'","'.$sublanguage_available.'","'.$parent_id.'")';
Database::query($sql);
}
/**
* Check if language exists
* @param string Original language name (Occitan, Wallon, Vlaams)
@ -61,17 +62,17 @@ function add_sub_language ($original_name,$english_name,$isocode,$sublanguage_av
* @todo This function is not transaction-safe and should probably be included
* inside the add_sub_language function.
*/
function check_if_language_exist ($original_name,$english_name,$isocode,$sublanguage_available) {
function check_if_language_exist ($original_name, $english_name, $isocode, $sublanguage_available) {
$tbl_admin_languages = Database :: get_main_table(TABLE_MAIN_LANGUAGE);
$sql_original_name='SELECT count(*) AS count_original_name FROM '.$tbl_admin_languages.' WHERE original_name="'.Database::escape_string($original_name).'" ';
$sql_english_name='SELECT count(*) AS count_english_name FROM '.$tbl_admin_languages.' WHERE english_name="'.Database::escape_string($english_name).'" ';
$sql_isocode='SELECT count(*) AS count_isocode FROM '.$tbl_admin_languages.' WHERE isocode="'.Database::escape_string($isocode).'" ';
//$sql_isocode='SELECT count(*) AS count_isocode FROM '.$tbl_admin_languages.' WHERE isocode="'.Database::escape_string($isocode).'" ';
$rs_original_name=Database::query($sql_original_name);
$rs_english_name=Database::query($sql_english_name);
$rs_isocode=Database::query($sql_isocode);
//$rs_isocode=Database::query($sql_isocode);
$count_original_name=Database::result($rs_original_name,0,'count_original_name');
$count_english_name=Database::result($rs_english_name,0,'count_english_name');
$count_isocode=Database::result($rs_isocode,0,'count_isocode');
//$count_isocode=Database::result($rs_isocode,0,'count_isocode');
$has_error=false;
$message_information=array();
@ -83,11 +84,14 @@ function check_if_language_exist ($original_name,$english_name,$isocode,$sublang
$has_error=true;
$message_information['english_name']=true;
}
/*
if ($count_isocode==1) {
$iso_list = api_get_platform_isocodes();
$iso_list = array_values($iso_list);
if (!in_array($isocode, $iso_list)) {
$has_error=true;
$message_information['isocode']=true;
}*/
}
if ($has_error===true) {
$message_information['execute_add']=false;
}
@ -247,12 +251,11 @@ if (isset($_POST['SubmitAddNewLanguage'])) {
Display::display_error_message(get_lang('AlreadyExists').' "'.get_lang('EnglishName').'" '.'('.$english_name.')');
}
if ($index_information=='isocode') {
Display::display_error_message(get_lang('AlreadyExists').' "'.get_lang('PlatformCharsetTitle').'" '.'('.$isocode.')');
Display::display_error_message(get_lang('CodeDoesNotExists').': '.$isocode.'');
}
if ($index_information=='execute_add' && $value_information===true) {
$allow_insert_info=true;
}
}
if (strlen($original_name)>0 && strlen($english_name)>0 && strlen($isocode)>0) {

@ -334,6 +334,24 @@ function api_get_language_isocode($language = null, $default_code = 'en') {
return $iso_code[$language];
}
/**
* Gets language isocode column from the language table
*
* @return array An array with the current isocodes
*
* */
function api_get_platform_isocodes() {
$iso_code = array();
$sql_result = Database::query("SELECT isocode FROM ".Database::get_main_table(TABLE_MAIN_LANGUAGE)." ORDER BY isocode ");
if (Database::num_rows($sql_result)) {
while ($row = Database::fetch_array($sql_result)) {;
$iso_code[] = trim($row['isocode']);
}
}
return $iso_code;
}
/**
* Gets text direction according to the given language.
* @param string $language This is the name of the folder containing translations for the corresponding language (e.g 'arabic', 'english', ...).

Loading…
Cancel
Save