|
|
|
|
@ -38,7 +38,7 @@ $inserted_in_course = array(); |
|
|
|
|
|
|
|
|
|
global $_configuration; |
|
|
|
|
|
|
|
|
|
if ($_POST['formSent']) { |
|
|
|
|
if (isset($_POST['formSent'])) { |
|
|
|
|
if (isset($_FILES['import_file']['tmp_name']) && !empty($_FILES['import_file']['tmp_name'])) { |
|
|
|
|
$form_sent = $_POST['formSent']; |
|
|
|
|
$file_type = $_POST['file_type']; |
|
|
|
|
@ -423,278 +423,10 @@ if ($_POST['formSent']) { |
|
|
|
|
$error_message .= get_lang('XMLNotValid'); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
// CSV |
|
|
|
|
|
|
|
|
|
$content = file($_FILES['import_file']['tmp_name']); |
|
|
|
|
|
|
|
|
|
if (!api_strstr($content[0], ';')) { |
|
|
|
|
$error_message = get_lang('NotCSV'); |
|
|
|
|
} else { |
|
|
|
|
$tag_names = array(); |
|
|
|
|
|
|
|
|
|
foreach ($content as $key => $enreg) { |
|
|
|
|
$enreg = explode(';', trim($enreg)); |
|
|
|
|
if ($key) { |
|
|
|
|
foreach ($tag_names as $tag_key => $tag_name) { |
|
|
|
|
$sessions[$key - 1][$tag_name] = $enreg[$tag_key]; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
foreach ($enreg as $tag_name) { |
|
|
|
|
$tag_names[] = api_preg_replace('/[^a-zA-Z0-9_\-]/', '', $tag_name); |
|
|
|
|
} |
|
|
|
|
if (!in_array('SessionName', $tag_names) || !in_array('DateStart', $tag_names) || !in_array('DateEnd', $tag_names)) { |
|
|
|
|
$error_message = get_lang('NoNeededData'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Looping the sessions. |
|
|
|
|
foreach ($sessions as $enreg) { |
|
|
|
|
$user_counter = 0; |
|
|
|
|
$course_counter = 0; |
|
|
|
|
|
|
|
|
|
$session_name = $enreg['SessionName']; |
|
|
|
|
$date_start = $enreg['DateStart']; |
|
|
|
|
$date_end = $enreg['DateEnd']; |
|
|
|
|
$visibility = $enreg['Visibility']; |
|
|
|
|
$session_category_id = $enreg['SessionCategory']; |
|
|
|
|
|
|
|
|
|
// Searching a coach. |
|
|
|
|
if (!empty($enreg['Coach'])) { |
|
|
|
|
$coach_id = UserManager::get_user_id_from_username($enreg['Coach']); |
|
|
|
|
if ($coach_id === false) { |
|
|
|
|
// If the coach-user does not exist - I'm the coach. |
|
|
|
|
$coach_id = api_get_user_id(); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$coach_id = api_get_user_id(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!$updatesession) { |
|
|
|
|
// Always create a session. |
|
|
|
|
$unique_name = false; // This MUST be initializead. |
|
|
|
|
$i = 0; |
|
|
|
|
// Change session name, verify that session doesn't exist. |
|
|
|
|
while (!$unique_name) { |
|
|
|
|
if ($i > 1) { |
|
|
|
|
$suffix = ' - '.$i; |
|
|
|
|
} |
|
|
|
|
$sql = 'SELECT 1 FROM '.$tbl_session.' WHERE name="'.Database::escape_string($session_name.$suffix).'"'; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
|
|
|
|
|
if (Database::result($rs, 0, 0)) { |
|
|
|
|
$i++; |
|
|
|
|
} else { |
|
|
|
|
$unique_name = true; |
|
|
|
|
$session_name .= $suffix; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$params = array ( |
|
|
|
|
'id_coach' => $coach_id, |
|
|
|
|
'visibility' => $visibility, |
|
|
|
|
'name' => $session_name, |
|
|
|
|
'access_start_date' => $date_start, |
|
|
|
|
'access_end_date' => $date_end, |
|
|
|
|
'session_category_id' => $session_category_id, |
|
|
|
|
'session_admin_id' => api_get_user_id(), |
|
|
|
|
); |
|
|
|
|
$session_id = SessionManager::add($params); |
|
|
|
|
$session_counter++; |
|
|
|
|
} else { |
|
|
|
|
$my_session_result = SessionManager::get_session_by_name($session_name); |
|
|
|
|
if ($my_session_result === false) { |
|
|
|
|
$params = array ( |
|
|
|
|
'id_coach' => $coach_id, |
|
|
|
|
'visibility' => $visibility, |
|
|
|
|
'name' => $session_name, |
|
|
|
|
'access_start_date' => $date_start, |
|
|
|
|
'access_end_date' => $date_end, |
|
|
|
|
'session_category_id' => $session_category_id, |
|
|
|
|
'session_admin_id' => api_get_user_id(), |
|
|
|
|
); |
|
|
|
|
$session_id = SessionManager::add($params); |
|
|
|
|
} else { |
|
|
|
|
$session_id = $my_session_result['id']; |
|
|
|
|
$params = array ( |
|
|
|
|
'id' => $session_id, |
|
|
|
|
'id_coach' => $coach_id, |
|
|
|
|
'visibility' => $visibility, |
|
|
|
|
'name' => $session_name, |
|
|
|
|
'access_start_date' => $date_start, |
|
|
|
|
'access_end_date' => $date_end, |
|
|
|
|
'session_category_id' => $session_category_id, |
|
|
|
|
'session_admin_id' => api_get_user_id(), |
|
|
|
|
); |
|
|
|
|
SessionManager::update($params); |
|
|
|
|
Database::query("DELETE FROM $tbl_session_user WHERE id_session='$session_id'"); |
|
|
|
|
Database::query("DELETE FROM $tbl_session_course WHERE id_session='$session_id'"); |
|
|
|
|
Database::query("DELETE FROM $tbl_session_course_user WHERE id_session='$session_id'"); |
|
|
|
|
} |
|
|
|
|
$session_counter++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$users = explode('|', $enreg['Users']); |
|
|
|
|
|
|
|
|
|
// Adding the relationship "Session - User". |
|
|
|
|
if (is_array($users)) { |
|
|
|
|
foreach ($users as $user) { |
|
|
|
|
$user_id = UserManager::get_user_id_from_username($user); |
|
|
|
|
if ($user_id !== false) { |
|
|
|
|
// Insert new users. |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_user SET |
|
|
|
|
id_user='$user_id', |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
$rs_user = Database::query($sql); |
|
|
|
|
$user_counter++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$courses = explode('|', $enreg['Courses']); |
|
|
|
|
|
|
|
|
|
foreach ($courses as $course) { |
|
|
|
|
$course_code = api_strtoupper(api_substr($course, 0, api_strpos($course, '['))); |
|
|
|
|
|
|
|
|
|
if (CourseManager::course_exists($course_code)) { |
|
|
|
|
|
|
|
|
|
// If the course exists we continue. |
|
|
|
|
$course_info = CourseManager::get_course_information($course_code); |
|
|
|
|
|
|
|
|
|
$coach = api_strstr($course, '['); |
|
|
|
|
$coach = api_substr($coach, 1, api_strpos($coach,']') - 1); |
|
|
|
|
|
|
|
|
|
if (!empty($coach)) { |
|
|
|
|
$coach_id = UserManager::get_user_id_from_username($coach); |
|
|
|
|
if ($coach_id === false) { |
|
|
|
|
$coach_id = ''; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$coach = ''; |
|
|
|
|
} |
|
|
|
|
// Adding the course to a session. |
|
|
|
|
$sql_course = "INSERT IGNORE INTO $tbl_session_course SET |
|
|
|
|
course_code = '$course_code', |
|
|
|
|
id_session='$session_id'"; |
|
|
|
|
$rs_course = Database::query($sql_course); |
|
|
|
|
$course_counter++; |
|
|
|
|
|
|
|
|
|
$course_split = array(); |
|
|
|
|
$pattern = "/\[(.*?)\]/"; |
|
|
|
|
preg_match_all($pattern, $course, $matches); |
|
|
|
|
if (isset($matches[1])) { |
|
|
|
|
$course_coaches = $matches[1][0]; |
|
|
|
|
$course_users = $matches[1][1]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$course_users = explode(',', $course_users); |
|
|
|
|
$course_coaches = explode(',', $course_coaches); |
|
|
|
|
|
|
|
|
|
// Adding coaches to session course user |
|
|
|
|
if (!empty($course_coaches)) { |
|
|
|
|
foreach ($course_coaches as $course_coach) { |
|
|
|
|
$coach_id = UserManager::get_user_id_from_username($course_coach); |
|
|
|
|
if ($coach_id !== false) { |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET |
|
|
|
|
id_user='$coach_id', |
|
|
|
|
course_code='$course_code', |
|
|
|
|
id_session = '$session_id', |
|
|
|
|
status = 2 "; |
|
|
|
|
$rs_coachs = Database::query($sql); |
|
|
|
|
} else { |
|
|
|
|
$error_message .= get_lang('UserDoesNotExist').' : '.$user.'<br />'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$users_in_course_counter = 0; |
|
|
|
|
|
|
|
|
|
// Adding the relationship "Session - Course - User". |
|
|
|
|
foreach ($course_users as $user) { |
|
|
|
|
$user_id = UserManager::get_user_id_from_username($user); |
|
|
|
|
if ($user_id !== false) { |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET |
|
|
|
|
id_user='$user_id', |
|
|
|
|
course_code='$course_code', |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
$rs_users = Database::query($sql); |
|
|
|
|
$users_in_course_counter++; |
|
|
|
|
} else { |
|
|
|
|
$error_message .= get_lang('UserDoesNotExist').' : '.$user.'<br />'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$sql = "UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='$course_code'"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
$course_info = CourseManager::get_course_information($course_code); |
|
|
|
|
$inserted_in_course[$course_code] = $course_info['title']; |
|
|
|
|
} else { |
|
|
|
|
// TODO: We should create the course as in the XML import. |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (CourseManager::course_exists($course_code, true)) { |
|
|
|
|
|
|
|
|
|
$list = CourseManager :: get_courses_info_from_visual_code($course_code); |
|
|
|
|
|
|
|
|
|
foreach ($list as $vcourse) { |
|
|
|
|
if ($vcourse['code'] == $course_code) { |
|
|
|
|
// Ignore, this has already been inserted. |
|
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
$coach = api_strstr($course, '['); |
|
|
|
|
$coach = api_substr($coach, 1, api_strpos($coach,']') - 1); |
|
|
|
|
|
|
|
|
|
// Adding the relationship "Session - Course". |
|
|
|
|
$sql_course = "INSERT IGNORE INTO $tbl_session_course SET |
|
|
|
|
course_code = '".$vcourse['code']."', |
|
|
|
|
id_session='$session_id'"; |
|
|
|
|
|
|
|
|
|
$rs_course = Database::query($sql_course); |
|
|
|
|
|
|
|
|
|
// adding coachs to session course user |
|
|
|
|
foreach ($course_coaches as $course_coach) { |
|
|
|
|
$coach_id = UserManager::get_user_id_from_username($course_coach); |
|
|
|
|
if ($coach_id !== false) { |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET |
|
|
|
|
id_user='$coach_id', |
|
|
|
|
course_code='{$vcourse['code']}', |
|
|
|
|
id_session = '$session_id', |
|
|
|
|
status = 2 "; |
|
|
|
|
$rs_coachs = Database::query($sql); |
|
|
|
|
} else { |
|
|
|
|
$error_message .= get_lang('UserDoesNotExist').' : '.$user.'<br />'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$users_in_course_counter = 0; |
|
|
|
|
// Adding the relationship "Session - Course - User". |
|
|
|
|
foreach ($course_users as $user) { |
|
|
|
|
$user_id = UserManager::get_user_id_from_username($user); |
|
|
|
|
if ($user_id !== false) { |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET |
|
|
|
|
id_user='$user_id', |
|
|
|
|
course_code='{$vcourse['code']}', |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
$rs_users = Database::query($sql); |
|
|
|
|
$users_in_course_counter++; |
|
|
|
|
} else { |
|
|
|
|
$error_message .= get_lang('UserDoesNotExist').' : '.$user.'<br />'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
Database::query("UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='".$vcourse['code']."'"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$inserted_in_course[$vcourse['code']] = $vcourse['title']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$access_url_id = api_get_current_access_url_id(); |
|
|
|
|
UrlManager::add_session_to_url($session_id, $access_url_id); |
|
|
|
|
$sql_update_users = "UPDATE $tbl_session SET nbr_users='$user_counter', nbr_courses='$course_counter' WHERE id='$session_id'"; |
|
|
|
|
Database::query($sql_update_users); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$result = SessionManager::importCSV($_FILES['import_file']['tmp_name'], $updatesession, api_get_user_id()); |
|
|
|
|
$error_message = $result['error_message']; |
|
|
|
|
$session_counter = $result['session_counter']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($error_message)) { |
|
|
|
|
|