Issue #306 - Platform admin, session import tool: Applying validation for course languages, fixing a conflict between global variables.

skala
Ivan Tcholakov 16 years ago
parent a794b60d52
commit 0c5a7d4857
  1. 57
      main/admin/session_import.php
  2. 6
      main/inc/lib/multibyte_string_functions.lib.php
  3. 2
      tests/main/inc/lib/multibyte_string_functions.lib.test.php

@ -23,7 +23,7 @@ require_once api_get_path(LIBRARY_PATH).'mail.lib.inc.php';
require_once api_get_path(LIBRARY_PATH).'course.lib.php'; require_once api_get_path(LIBRARY_PATH).'course.lib.php';
$form_sent = 0; $form_sent = 0;
$error_msg = ''; $error_message = ''; // Avoid conflict with the global variable $error_msg (array type) in add_course.conf.php.
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
@ -82,7 +82,7 @@ if ($_POST['formSent']) {
$username = UserManager::purify_username($username, $purification_option_for_usernames); $username = UserManager::purify_username($username, $purification_option_for_usernames);
if (UserManager::is_username_available($username)) { if (UserManager::is_username_available($username)) {
if (UserManager::is_username_too_long($username_old)) { if (UserManager::is_username_too_long($username_old)) {
$error_msg .= get_lang('UsernameTooLongWasCut').' '.get_lang('From').' '.$username_old.' '.get_lang('To').' '.$username.' <br />'; $error_message .= get_lang('UsernameTooLongWasCut').' '.get_lang('From').' '.$username_old.' '.get_lang('To').' '.$username.' <br />';
} }
$lastname = trim(api_utf8_decode($node_user->Lastname)); $lastname = trim(api_utf8_decode($node_user->Lastname));
$firstname = trim(api_utf8_decode($node_user->Firstname)); $firstname = trim(api_utf8_decode($node_user->Firstname));
@ -97,7 +97,7 @@ if ($_POST['formSent']) {
switch ($status) { switch ($status) {
case 'student' : $status = 5; break; case 'student' : $status = 5; break;
case 'teacher' : $status = 1; break; case 'teacher' : $status = 1; break;
default : $status = 5; $error_msg .= get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />'; default : $status = 5; $error_message .= get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />';
} }
// Adding the current user to the platform. // Adding the current user to the platform.
@ -146,7 +146,7 @@ if ($_POST['formSent']) {
switch ($status) { switch ($status) {
case 'student' : $status = 5; break; case 'student' : $status = 5; break;
case 'teacher' : $status = 1; break; case 'teacher' : $status = 1; break;
default : $status = 5; $error_msg .= get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />'; default : $status = 5; $error_message .= get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />';
} }
$sql = "UPDATE $tbl_user SET $sql = "UPDATE $tbl_user SET
@ -170,7 +170,7 @@ if ($_POST['formSent']) {
$course_code = trim(api_utf8_decode($courseNode->CourseCode)); $course_code = trim(api_utf8_decode($courseNode->CourseCode));
$title = trim(api_utf8_decode($courseNode->CourseTitle)); $title = trim(api_utf8_decode($courseNode->CourseTitle));
$description = trim(api_utf8_decode($courseNode->CourseDescription)); $description = trim(api_utf8_decode($courseNode->CourseDescription));
$language = trim(api_utf8_decode($courseNode->CourseLanguage)); $language = api_validate_language(trim(api_utf8_decode($courseNode->CourseLanguage)));
$username = trim(api_utf8_decode($courseNode->CourseTeacher)); $username = trim(api_utf8_decode($courseNode->CourseTeacher));
// Looking up for the teacher. // Looking up for the teacher.
@ -198,8 +198,11 @@ if ($_POST['formSent']) {
prepare_course_repository($current_course_repository, $current_course_id); prepare_course_repository($current_course_repository, $current_course_id);
update_Db_course($current_course_db_name); update_Db_course($current_course_db_name);
$pictures_array = fill_course_repository($current_course_repository); $pictures_array = fill_course_repository($current_course_repository);
fill_Db_course($current_course_db_name, $current_course_repository, 'english', $pictures_array); // TODO: Hard-coded language id 'english'.
register_course($current_course_id, $current_course_code, $current_course_repository, $current_course_db_name, "$lastname $firstname", $course['unit_code'], addslashes($course['FR']['title']), $language, $user_id); // TODO: Hard-coded language 'FR'. //fill_Db_course($current_course_db_name, $current_course_repository, 'english', $pictures_array);
//register_course($current_course_id, $current_course_code, $current_course_repository, $current_course_db_name, "$lastname $firstname", $course['unit_code'], addslashes($course['FR']['title']), $language, $user_id);
fill_Db_course($current_course_db_name, $current_course_repository, $language, $pictures_array);
register_course($current_course_id, $current_course_code, $current_course_repository, $current_course_db_name, api_get_person_name($firstname, $lastname, null, null, $language), null, addslashes($title), $language, $user_id);
$sql = "INSERT INTO ".$tbl_course." SET $sql = "INSERT INTO ".$tbl_course." SET
code = '".$current_course_id."', code = '".$current_course_id."',
@ -249,7 +252,7 @@ if ($_POST['formSent']) {
if (!empty($coach)) { if (!empty($coach)) {
$coach_id = UserManager::get_user_id_from_username($coach); $coach_id = UserManager::get_user_id_from_username($coach);
if ($coach_id === false) { if ($coach_id === false) {
$error_msg .= get_lang('UserDoesNotExist').' : '.$coach.'<br />'; $error_message .= get_lang('UserDoesNotExist').' : '.$coach.'<br />';
// Forcing the coach id if user does not exist. // Forcing the coach id if user does not exist.
$coach_id = api_get_user_id(); $coach_id = api_get_user_id();
} }
@ -263,7 +266,7 @@ if ($_POST['formSent']) {
if (!empty($date_start)) { if (!empty($date_start)) {
list($year_start, $month_start, $day_start) = explode('-', $date_start); list($year_start, $month_start, $day_start) = explode('-', $date_start);
if(empty($year_start) || empty($month_start) || empty($day_start)) { if(empty($year_start) || empty($month_start) || empty($day_start)) {
$error_msg .= get_lang('WrongDate').' : '.$date_start.'<br />'; $error_message .= get_lang('WrongDate').' : '.$date_start.'<br />';
break; break;
} else { } else {
$time_start = mktime(0, 0, 0, $month_start, $day_start, $year_start); $time_start = mktime(0, 0, 0, $month_start, $day_start, $year_start);
@ -273,14 +276,14 @@ if ($_POST['formSent']) {
if (!empty($date_start)) { if (!empty($date_start)) {
list($year_end, $month_end, $day_end) = explode('-', $date_end); list($year_end, $month_end, $day_end) = explode('-', $date_end);
if (empty($year_end) || empty($month_end) || empty($day_end)) { if (empty($year_end) || empty($month_end) || empty($day_end)) {
$error_msg .= get_lang('WrongDate').' : '.$date_end.'<br />'; $error_message .= get_lang('WrongDate').' : '.$date_end.'<br />';
break; break;
} else { } else {
$time_end = mktime(0, 0, 0, $month_end, $day_end, $year_end); $time_end = mktime(0, 0, 0, $month_end, $day_end, $year_end);
} }
} }
if ($time_end - $time_start < 0) { if ($time_end - $time_start < 0) {
$error_msg .= get_lang('StartDateShouldBeBeforeEndDate').' : '.$date_end.'<br />'; $error_message .= get_lang('StartDateShouldBeBeforeEndDate').' : '.$date_end.'<br />';
} }
} }
@ -380,7 +383,7 @@ if ($_POST['formSent']) {
if (!empty($coach)) { if (!empty($coach)) {
$coach_id = UserManager::get_user_id_from_username($coach); $coach_id = UserManager::get_user_id_from_username($coach);
if ($coach_id === false) { if ($coach_id === false) {
$error_msg .= get_lang('UserDoesNotExist').' : '.$coach.'<br />'; $error_message .= get_lang('UserDoesNotExist').' : '.$coach.'<br />';
$coach_id = ''; $coach_id = '';
} }
} else { } else {
@ -415,7 +418,7 @@ if ($_POST['formSent']) {
$rs_users = Database::query($sql, __FILE__, __LINE__); $rs_users = Database::query($sql, __FILE__, __LINE__);
$users_in_course_counter++; $users_in_course_counter++;
} else { } else {
$error_msg .= get_lang('UserDoesNotExist').' : '.$username.'<br />'; $error_message .= get_lang('UserDoesNotExist').' : '.$username.'<br />';
} }
} }
$update_session_course = "UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'"; $update_session_course = "UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'";
@ -436,7 +439,7 @@ if ($_POST['formSent']) {
if (!empty($coach)) { if (!empty($coach)) {
$coach_id = UserManager::get_user_id_from_username($coach); $coach_id = UserManager::get_user_id_from_username($coach);
if ($user_id === false) { if ($user_id === false) {
$error_msg .= get_lang('UserDoesNotExist').' : '.$coach.'<br />'; $error_message .= get_lang('UserDoesNotExist').' : '.$coach.'<br />';
$coach_id = ''; $coach_id = '';
} }
} else { } else {
@ -471,7 +474,7 @@ if ($_POST['formSent']) {
$users_in_course_counter++; $users_in_course_counter++;
} }
} else { } else {
$error_msg .= get_lang('UserDoesNotExist').' : '.$username.'<br />'; $error_message .= get_lang('UserDoesNotExist').' : '.$username.'<br />';
} }
} }
Database::query("UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'",__FILE__,__LINE__); Database::query("UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'",__FILE__,__LINE__);
@ -481,7 +484,7 @@ if ($_POST['formSent']) {
} }
} else { } else {
// Tthe course does not exist. // Tthe course does not exist.
$error_msg .= get_lang('CourseDoesNotExist').' : '.$course_code.'<br />'; $error_message .= get_lang('CourseDoesNotExist').' : '.$course_code.'<br />';
} }
} }
Database::query("UPDATE $tbl_session SET nbr_users='$user_counter', nbr_courses='$course_counter' WHERE id='$session_id'", __FILE__, __LINE__); Database::query("UPDATE $tbl_session SET nbr_users='$user_counter', nbr_courses='$course_counter' WHERE id='$session_id'", __FILE__, __LINE__);
@ -489,10 +492,10 @@ if ($_POST['formSent']) {
} }
if (empty($root->Users->User) && empty($root->Courses->Course) && empty($root->Session)) { if (empty($root->Users->User) && empty($root->Courses->Course) && empty($root->Session)) {
$error_msg = get_lang('NoNeededData'); $error_message = get_lang('NoNeededData');
} }
} else { } else {
$error_msg .= get_lang('XMLNotValid'); $error_message .= get_lang('XMLNotValid');
} }
} else { } else {
@ -502,7 +505,7 @@ if ($_POST['formSent']) {
$content = file($_FILES['import_file']['tmp_name']); $content = file($_FILES['import_file']['tmp_name']);
if (!api_strstr($content[0], ';')) { if (!api_strstr($content[0], ';')) {
$error_msg = get_lang('NotCSV'); $error_message = get_lang('NotCSV');
} else { } else {
$tag_names = array(); $tag_names = array();
@ -517,7 +520,7 @@ if ($_POST['formSent']) {
$tag_names[] = api_eregi_replace('[^a-z0-9_-]', '', $tag_name); $tag_names[] = api_eregi_replace('[^a-z0-9_-]', '', $tag_name);
} }
if (!in_array('SessionName', $tag_names) || !in_array('DateStart', $tag_names) || !in_array('DateEnd', $tag_names)) { if (!in_array('SessionName', $tag_names) || !in_array('DateStart', $tag_names) || !in_array('DateEnd', $tag_names)) {
$error_msg = get_lang('NoNeededData'); $error_message = get_lang('NoNeededData');
break; break;
} }
} }
@ -664,7 +667,7 @@ if ($_POST['formSent']) {
$rs_users = Database::query($sql, __FILE__, __LINE__); $rs_users = Database::query($sql, __FILE__, __LINE__);
$users_in_course_counter++; $users_in_course_counter++;
} else { } else {
$error_msg .= get_lang('UserDoesNotExist').' : '.$user.'<br />'; $error_message .= get_lang('UserDoesNotExist').' : '.$user.'<br />';
} }
} }
Database::query("UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'", __FILE__, __LINE__); Database::query("UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'", __FILE__, __LINE__);
@ -729,8 +732,8 @@ if ($_POST['formSent']) {
} }
} }
} }
if (!empty($error_msg)) { if (!empty($error_message)) {
$error_msg = get_lang('ButProblemsOccured').' :<br />'.$error_msg; $error_message = get_lang('ButProblemsOccured').' :<br />'.$error_message;
} }
if (count($inserted_in_course) > 1) { if (count($inserted_in_course) > 1) {
@ -744,11 +747,11 @@ if ($_POST['formSent']) {
header('Location: resume_session.php?id_session='.$session_id.'&warn='.urlencode($warn)); header('Location: resume_session.php?id_session='.$session_id.'&warn='.urlencode($warn));
exit; exit;
} else { } else {
header('Location: session_list.php?action=show_message&message='.urlencode(get_lang('FileImported').' '.$error_msg).'&warn='.urlencode($warn)); header('Location: session_list.php?action=show_message&message='.urlencode(get_lang('FileImported').' '.$error_message).'&warn='.urlencode($warn));
exit; exit;
} }
} else { } else {
$error_msg = get_lang('NoInputFile'); $error_message = get_lang('NoInputFile');
} }
} }
@ -787,12 +790,12 @@ if (count($inserted_in_course) > 1) {
<table border="0" cellpadding="5" cellspacing="0"> <table border="0" cellpadding="5" cellspacing="0">
<?php <?php
if (!empty($error_msg)) { if (!empty($error_message)) {
?> ?>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<?php <?php
Display::display_normal_message($error_msg, false); Display::display_normal_message($error_message, false);
?> ?>
</td> </td>
</tr> </tr>

@ -2807,12 +2807,12 @@ function api_is_language_supported($language) {
/** /**
* Validates the input language identificator in order always to return a language that is supported by the system. * Validates the input language identificator in order always to return a language that is supported by the system.
* @param string $language The language identificator to be validated. * @param string $language The language identificator to be validated.
* @param bool $purify A modifier to the returne result. If it is TRUE, then the returned language identificator is purified. * @param bool $purify A modifier to the returned result. If it is TRUE, then the returned language identificator is purified.
* @return string Returns the input language identificator, purified, if it was demanded. If the input language is not supported, 'english' is returned then. * @return string Returns the input language identificator, purified, if it was demanded. If the input language is not supported, the current interface language is returned then.
*/ */
function api_validate_language($language, $purify = false) { function api_validate_language($language, $purify = false) {
if (!api_is_language_supported($language)) { if (!api_is_language_supported($language)) {
return 'english'; return api_get_interface_language($purify);
} }
if ($purify) { if ($purify) {
return api_refine_language_id($language); return api_refine_language_id($language);

@ -1020,7 +1020,7 @@ class TestMultibyte_String_Functions extends UnitTestCase {
&& $res6 === 'french_unicode' && $res6 === 'french_unicode'
&& $res7 === 'french' && $res7 === 'french'
&& $res8 === 'french' && $res8 === 'french'
&& $res9 === 'english' && $res9 === api_get_interface_language()
); );
//var_dump($res1); //var_dump($res1);
//var_dump($res2); //var_dump($res2);

Loading…
Cancel
Save