|
|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
<?php // $Id: session_import.php 20190 2009-04-29 17:16:42Z juliomontoya $
|
|
|
|
|
<?php // $Id: session_import.php 20197 2009-04-29 21:20:04Z juliomontoya $
|
|
|
|
|
/* For licensing terms, see /dokeos_license.txt */ |
|
|
|
|
/** |
|
|
|
|
============================================================================== |
|
|
|
|
@ -39,12 +39,9 @@ $inserted_in_course = array(); |
|
|
|
|
|
|
|
|
|
if ($_POST['formSent']) { |
|
|
|
|
if (isset($_FILES['import_file']['tmp_name'])) { |
|
|
|
|
|
|
|
|
|
$formSent=$_POST['formSent']; |
|
|
|
|
$file_type=$_POST['file_type']; |
|
|
|
|
$sendMail=$_POST['sendMail']?1:0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$sessions=array(); |
|
|
|
|
|
|
|
|
|
/////////////////////// |
|
|
|
|
@ -57,22 +54,19 @@ if ($_POST['formSent']) { |
|
|
|
|
|
|
|
|
|
$racine = @simplexml_load_file($_FILES['import_file']['tmp_name']); |
|
|
|
|
if (is_object($racine)) { |
|
|
|
|
if (count($racine->Users->User) > 0) { |
|
|
|
|
foreach($racine->Users->User as $userNode) |
|
|
|
|
{ |
|
|
|
|
if (count($racine->Users->User) > 0) { |
|
|
|
|
//creating/updating users |
|
|
|
|
foreach($racine->Users->User as $userNode) { |
|
|
|
|
$username = mb_convert_encoding($userNode->Username,$charset,'utf-8'); |
|
|
|
|
$isCut = 0; // if the username given is too long |
|
|
|
|
if(strlen($username)>20) |
|
|
|
|
{ |
|
|
|
|
if(strlen($username)>20) { |
|
|
|
|
$user_name_dist = $username; |
|
|
|
|
$username = substr($username,0,20); |
|
|
|
|
$isCut = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$sql = "SELECT 1 FROM $tbl_user WHERE username='".addslashes($username)."'"; |
|
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
if (Database::affected_rows()==0) { |
|
|
|
|
} |
|
|
|
|
$user_exist = UserManager::is_username_available($username); |
|
|
|
|
|
|
|
|
|
if ($user_exist == true) { |
|
|
|
|
if ($isCut) { |
|
|
|
|
$errorMsg .= get_lang('UsernameTooLongWasCut').' '.get_lang('From').' '.$user_name_dist.' '.get_lang('To').' '.$username.' <br />'; |
|
|
|
|
} |
|
|
|
|
@ -90,9 +84,11 @@ if ($_POST['formSent']) { |
|
|
|
|
switch ($status) { |
|
|
|
|
case 'student' : $status = 5; break; |
|
|
|
|
case 'teacher' : $status = 1; break; |
|
|
|
|
default : $status = 5; $errorMsg = get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />'; |
|
|
|
|
default : $status = 5; |
|
|
|
|
$errorMsg = get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//adding user to the platform |
|
|
|
|
$sql = "INSERT INTO $tbl_user SET |
|
|
|
|
username = '".Database::escape_string($username)."', |
|
|
|
|
lastname = '".Database::escape_string($lastname)."', |
|
|
|
|
@ -116,9 +112,9 @@ if ($_POST['formSent']) { |
|
|
|
|
} else { |
|
|
|
|
//we are adding by default the access_url_user table with access_url_id = 1 |
|
|
|
|
UrlManager::add_user_to_url($return, 1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(Database::affected_rows()>0 && $sendMail) { |
|
|
|
|
if($sendMail) { |
|
|
|
|
$recipient_name = $firstname.' '.$lastname; |
|
|
|
|
$emailsubject = '['.get_setting('siteName').'] '.get_lang('YourReg').' '.get_setting('siteName'); |
|
|
|
|
$emailbody="[NOTE:] ".get_lang('ThisIsAutomaticEmailNoReply').".\n\n".get_lang('langDear')." $firstname $lastname,\n\n".get_lang('langYouAreReg')." ". get_setting('siteName') ." ".get_lang('langSettings')." $username\n". get_lang('langPass')." : $password\n\n".get_lang('langAddress') ." ". get_lang('langIs') ." ". $serverAddress ."\n\n".get_lang('YouWillSoonReceiveMailFromCoach')."\n\n". get_lang('langProblem'). "\n\n". get_lang('langFormula'); |
|
|
|
|
@ -153,7 +149,9 @@ if ($_POST['formSent']) { |
|
|
|
|
api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Creating/editing courses |
|
|
|
|
if (count($racine->Courses->Course) > 0) { |
|
|
|
|
foreach($racine->Courses->Course as $courseNode) { |
|
|
|
|
$course_code = mb_convert_encoding($courseNode->CourseCode,$charset,'utf-8'); |
|
|
|
|
@ -161,7 +159,8 @@ if ($_POST['formSent']) { |
|
|
|
|
$description = mb_convert_encoding($courseNode->CourseDescription,$charset,'utf-8'); |
|
|
|
|
$language = mb_convert_encoding($courseNode->CourseLanguage,$charset,'utf-8'); |
|
|
|
|
$username = mb_convert_encoding($courseNode->CourseTeacher,$charset,'utf-8'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//looking for the teacher |
|
|
|
|
$sql = "SELECT user_id, lastname, firstname FROM $tbl_user WHERE username='$username'"; |
|
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
@ -176,15 +175,17 @@ if ($_POST['formSent']) { |
|
|
|
|
$currentCourseCode = $currentCourseId; |
|
|
|
|
$currentCourseDbName = $keys['currentCourseDbName']; |
|
|
|
|
$currentCourseRepository = $keys['currentCourseRepository']; |
|
|
|
|
|
|
|
|
|
//creating a course |
|
|
|
|
|
|
|
|
|
if($currentCourseId == strtoupper($course_code)) { |
|
|
|
|
if (empty ($title)) { |
|
|
|
|
$title = $keys['currentCourseCode']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
prepare_course_repository($currentCourseRepository, $currentCourseId); |
|
|
|
|
update_Db_course($currentCourseDbName); |
|
|
|
|
fill_course_repository($currentCourseRepository); |
|
|
|
|
fill_Db_course($currentCourseDbName, $currentCourseRepository, 'french'); |
|
|
|
|
update_Db_course($currentCourseDbName); |
|
|
|
|
$pictures_array=fill_course_repository($currentCourseRepository); |
|
|
|
|
fill_Db_course($currentCourseDbName, $currentCourseRepository, 'english',$pictures_array); |
|
|
|
|
//register_course($currentCourseId, $currentCourseCode, $currentCourseRepository, $currentCourseDbName, "$lastname $firstname", $course['unit_code'], addslashes($course['FR']['title']), $language, $user_id); |
|
|
|
|
$sql = "INSERT INTO ".$tbl_course." SET |
|
|
|
|
code = '".$currentCourseId."', |
|
|
|
|
@ -221,6 +222,7 @@ if ($_POST['formSent']) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (count($racine->Session) > 0) { |
|
|
|
|
foreach ($racine->Session as $sessionNode) { // foreach session |
|
|
|
|
|
|
|
|
|
@ -230,16 +232,14 @@ if ($_POST['formSent']) { |
|
|
|
|
$SessionName = mb_convert_encoding($sessionNode->SessionName,$charset,'utf-8'); |
|
|
|
|
$Coach = mb_convert_encoding($sessionNode->Coach,$charset,'utf-8'); |
|
|
|
|
|
|
|
|
|
if (!empty($Coach)) { |
|
|
|
|
$sqlCoach = "SELECT user_id FROM $tbl_user WHERE username='$Coach'"; |
|
|
|
|
$rsCoach = api_sql_query($sqlCoach); |
|
|
|
|
list($CoachId) = (Database::fetch_array($rsCoach)); |
|
|
|
|
if(empty($CoachId)) |
|
|
|
|
{ |
|
|
|
|
if (!empty($Coach)) { |
|
|
|
|
$CoachId = UserManager::get_user_id_from_username($Coach); |
|
|
|
|
if($CoachId === false) { |
|
|
|
|
$errorMsg .= get_lang('UserDoesNotExist').' : '.$Coach.'<br />'; |
|
|
|
|
$CoachId = api_get_user_id(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$DateStart = $sessionNode->DateStart; |
|
|
|
|
if(!empty($DateStart)) { |
|
|
|
|
list($YearStart,$MonthStart, $DayStart) = explode('-',$DateStart); |
|
|
|
|
@ -267,24 +267,20 @@ if ($_POST['formSent']) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// verify that session doesn't exist |
|
|
|
|
while(!$uniqueName) |
|
|
|
|
{ |
|
|
|
|
while(!$uniqueName) { |
|
|
|
|
if($i>1) |
|
|
|
|
$suffix = ' - '.$i; |
|
|
|
|
$sql = 'SELECT 1 FROM '.$tbl_session.' WHERE name="'.Database::escape_string($SessionName.$suffix).'"'; |
|
|
|
|
$rs = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
|
|
|
|
|
if(Database::result($rs,0,0)) |
|
|
|
|
{ |
|
|
|
|
if(Database::result($rs,0,0)) { |
|
|
|
|
$i++; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
} else { |
|
|
|
|
$uniqueName = true; |
|
|
|
|
$SessionName .= $suffix; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Creating the session |
|
|
|
|
$sqlSession = "INSERT IGNORE INTO $tbl_session SET |
|
|
|
|
name = '".Database::escape_string($SessionName)."', |
|
|
|
|
id_coach = '$CoachId', |
|
|
|
|
@ -306,22 +302,19 @@ if ($_POST['formSent']) { |
|
|
|
|
// we are filling by default the access_url_rel_session table |
|
|
|
|
UrlManager::add_session_to_url($session_id,1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach ($sessionNode->User as $userNode){ |
|
|
|
|
$username = mb_convert_encoding(substr($userNode->nodeValue,0,20),$charset,'utf-8'); |
|
|
|
|
$sqlUser = "SELECT user_id FROM $tbl_user WHERE username='".Database::escape_string($username)."'"; |
|
|
|
|
$rsUser = api_sql_query($sqlUser); |
|
|
|
|
list($user_id) = (Database::fetch_array($rsUser)); |
|
|
|
|
if(!empty($user_id)){ |
|
|
|
|
$sql = "INSERT INTO $tbl_session_user SET |
|
|
|
|
|
|
|
|
|
foreach ($sessionNode->User as $userNode){ |
|
|
|
|
$username = mb_convert_encoding(substr($userNode,0,20),$charset,'utf-8'); |
|
|
|
|
$user_id = UserManager::get_user_id_from_username($username); |
|
|
|
|
if($user_id!==false){ |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_user SET |
|
|
|
|
id_user='$user_id', |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
$rsUser = api_sql_query($sql,__FILE__,__LINE__); |
|
|
|
|
if(Database::affected_rows()){ |
|
|
|
|
$countUsers++; |
|
|
|
|
} |
|
|
|
|
$rsUser = api_sql_query($sql,__FILE__,__LINE__); |
|
|
|
|
$countUsers++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach ($sessionNode->Course as $courseNode){ |
|
|
|
|
|
|
|
|
|
$CourseCode = Database::escape_string($courseNode->CourseCode); |
|
|
|
|
@ -332,11 +325,11 @@ if ($_POST['formSent']) { |
|
|
|
|
$c_info = CourseManager::get_course_information($CourseCode); |
|
|
|
|
$Coach = substr($courseNode->Coach,0,20); |
|
|
|
|
if(!empty($Coach)){ |
|
|
|
|
$sqlCoach = "SELECT user_id FROM $tbl_user WHERE username='$Coach'"; |
|
|
|
|
$rsCoach = api_sql_query($sqlCoach,__FILE__,__LINE__); |
|
|
|
|
list($CoachId) = (Database::fetch_array($rsCoach)); |
|
|
|
|
if(empty($CoachId)) { |
|
|
|
|
$CoachId = UserManager::get_user_id_from_username($Coach); |
|
|
|
|
if($CoachId===false) { |
|
|
|
|
$errorMsg .= get_lang('UserDoesNotExist').' : '.$Coach.'<br />'; |
|
|
|
|
//$CoachId = api_get_user_id(); |
|
|
|
|
$CoachId = ''; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$Coach = ''; |
|
|
|
|
@ -350,39 +343,34 @@ if ($_POST['formSent']) { |
|
|
|
|
|
|
|
|
|
if (Database::affected_rows()) { |
|
|
|
|
$countCourses++; |
|
|
|
|
|
|
|
|
|
$countUsersCourses = 0; |
|
|
|
|
$countUsersCourses = 0; |
|
|
|
|
foreach ($courseNode->User as $userNode) { |
|
|
|
|
$username = substr($userNode,0,20); |
|
|
|
|
$sqlUser = "SELECT user_id FROM $tbl_user WHERE username='".$username."'"; |
|
|
|
|
$rsUser = api_sql_query($sqlUser); |
|
|
|
|
list($user_id) = (Database::fetch_array($rsUser)); |
|
|
|
|
if (!empty($user_id)) { |
|
|
|
|
$user_id = UserManager::get_user_id_from_username($username); |
|
|
|
|
if ($user_id!==false) { |
|
|
|
|
// adding to session_rel_user table |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_user SET |
|
|
|
|
id_user='$user_id', |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
|
|
|
|
|
if (Database::affected_rows()) { |
|
|
|
|
$countUsers++; |
|
|
|
|
} |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
$rsUser = api_sql_query($sql,__FILE__,__LINE__); |
|
|
|
|
|
|
|
|
|
$countUsers++; |
|
|
|
|
// adding to session_rel_user_rel_course table |
|
|
|
|
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET |
|
|
|
|
id_user='$user_id', |
|
|
|
|
course_code='$CourseCode', |
|
|
|
|
id_session = '$session_id'"; |
|
|
|
|
$rsUsers = api_sql_query($sql,__FILE__,__LINE__); |
|
|
|
|
if (Database::affected_rows()) { |
|
|
|
|
$countUsersCourses++; |
|
|
|
|
} |
|
|
|
|
$rsUsers = api_sql_query($sql,__FILE__,__LINE__); |
|
|
|
|
$countUsersCourses++; |
|
|
|
|
} else { |
|
|
|
|
$errorMsg .= get_lang('UserDoesNotExist').' : '.$username.'<br />'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
api_sql_query("UPDATE $tbl_session_course SET nbr_users='$countUsersCourses' WHERE course_code='$CourseCode'",__FILE__,__LINE__); |
|
|
|
|
$update_session_course = "UPDATE $tbl_session_course SET nbr_users='$countUsersCourses' WHERE course_code='$CourseCode'"; |
|
|
|
|
api_sql_query($update_session_course,__FILE__,__LINE__); |
|
|
|
|
$inserted_in_course[$CourseCode] = $c_info['title']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (CourseManager::course_exists($CourseCode,true)) { |
|
|
|
|
// if the course exists we continue |
|
|
|
|
// also subscribe to virtual courses through check on visual code |
|
|
|
|
@ -433,19 +421,15 @@ if ($_POST['formSent']) { |
|
|
|
|
$rsUsers = api_sql_query($sql,__FILE__,__LINE__); |
|
|
|
|
if(Database::affected_rows()) |
|
|
|
|
$countUsersCourses++; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
} else { |
|
|
|
|
$errorMsg .= get_lang('UserDoesNotExist').' : '.$username.'<br />'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
api_sql_query("UPDATE $tbl_session_course SET nbr_users='$countUsersCourses' WHERE course_code='$CourseCode'",__FILE__,__LINE__); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$inserted_in_course[$vcourse['code']] = $vcourse['title']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} else { // if the course does not exists |
|
|
|
|
$errorMsg .= get_lang('CourseDoesNotExist').' : '.$CourseCode.'<br />'; |
|
|
|
|
} |
|
|
|
|
@ -456,18 +440,14 @@ if ($_POST['formSent']) { |
|
|
|
|
if(empty($racine->Users->User) && empty($racine->Courses->Course) && empty($racine->Session)) { |
|
|
|
|
$errorMsg=get_lang('NoNeededData'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
} else { |
|
|
|
|
$errorMsg .= get_lang('XMLNotValid'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///////////////////// |
|
|
|
|
// CSV ///////////// |
|
|
|
|
/////////////////// |
|
|
|
|
|
|
|
|
|
else { |
|
|
|
|
} else { |
|
|
|
|
///////////////////// |
|
|
|
|
// CSV ///////////// |
|
|
|
|
/////////////////// |
|
|
|
|
|
|
|
|
|
$content=file($_FILES['import_file']['tmp_name']); |
|
|
|
|
if(!strstr($content[0],';')) { |
|
|
|
|
$errorMsg=get_lang('NotCSV'); |
|
|
|
|
|