session_import.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722
  1. <?php // $Id: user_import.php,v 1.17 2005/06/22 08:00:31 bmol Exp $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2004 Dokeos S.A.
  6. Copyright (c) 2003 Ghent University (UGent)
  7. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  8. Copyright (c) Olivier Brouckaert
  9. For a full list of contributors, see "credits.txt".
  10. The full license can be read in "license.txt".
  11. This program is free software; you can redistribute it and/or
  12. modify it under the terms of the GNU General Public License
  13. as published by the Free Software Foundation; either version 2
  14. of the License, or (at your option) any later version.
  15. See the GNU General Public License for more details.
  16. Contact: Dokeos, 181 rue Royale, B-1000 Brussels, Belgium, info@dokeos.com
  17. ==============================================================================
  18. */
  19. /**
  20. ==============================================================================
  21. * @package dokeos.admin
  22. ==============================================================================
  23. */
  24. $language_file = array('admin','registration');
  25. $cidReset=true;
  26. include('../inc/global.inc.php');
  27. if(empty($charset))
  28. {
  29. $charset = 'ISO-8859-15';
  30. }
  31. api_protect_admin_script();
  32. include(api_get_path(LIBRARY_PATH).'/fileManage.lib.php');
  33. include (api_get_path(LIBRARY_PATH)."/add_course.conf.php");
  34. include_once (api_get_path(LIBRARY_PATH)."/add_course.lib.inc.php");
  35. $formSent=0;
  36. $errorMsg='';
  37. $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
  38. $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
  39. $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
  40. $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
  41. $tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
  42. $tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
  43. $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  44. $tool_name=get_lang('ImportSessionListXMLCSV');
  45. $interbreadcrumb[]=array("url" => "index.php","name" => get_lang('AdministrationTools'));
  46. set_time_limit(0);
  47. if($_POST['formSent'])
  48. {
  49. if(isset($_FILES['import_file']['tmp_name']))
  50. {
  51. $formSent=$_POST['formSent'];
  52. $file_type=$_POST['file_type'];
  53. $sendMail=$_POST['sendMail']?1:0;
  54. $sessions=array();
  55. ///////////////////////
  56. //XML/////////////////
  57. /////////////////////
  58. $countSessions = 0;
  59. if($file_type == 'xml')
  60. {
  61. $racine = simplexml_load_file($_FILES['import_file']['tmp_name']);
  62. if(is_object($racine))
  63. {
  64. foreach($racine->Users->User as $userNode)
  65. {
  66. $username = mb_convert_encoding($userNode->Username,$charset,'utf-8');
  67. $isCut = 0; // if the username given is too long
  68. if(strlen($username)>20)
  69. {
  70. $user_name_dist = $username;
  71. $username = substr($username,0,20);
  72. $isCut = 1;
  73. }
  74. $sql = "SELECT 1 FROM $tbl_user WHERE username='".addslashes($username)."'";
  75. $rs = api_sql_query($sql, __FILE__, __LINE__);
  76. if(mysql_affected_rows()==0)
  77. {
  78. if($isCut)
  79. {
  80. $errorMsg .= get_lang('UsernameTooLongWasCut').' '.get_lang('From').' '.$user_name_dist.' '.get_lang('To').' '.$username.' <br />';
  81. }
  82. $lastname = mb_convert_encoding($userNode->Lastname,$charset,'utf-8');
  83. $firstname = mb_convert_encoding($userNode->Firstname,$charset,'utf-8');
  84. $password = mb_convert_encoding($userNode->Password,$charset,'utf-8');
  85. if(empty($password))
  86. $password = base64_encode(rand(1000,10000));
  87. $email = mb_convert_encoding($userNode->Email,$charset,'utf-8');
  88. $official_code = mb_convert_encoding($userNode->OfficialCode,$charset,'utf-8');
  89. $phone = mb_convert_encoding($userNode->Phone,$charset,'utf-8');
  90. $status = mb_convert_encoding($userNode->Status,$charset,'utf-8');
  91. switch($status)
  92. {
  93. case 'student' : $status = 5; break;
  94. case 'teacher' : $status = 1; break;
  95. default : $status = 5; $errorMsg = get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />';
  96. }
  97. $sql = "INSERT INTO $tbl_user SET
  98. username = '".Database::escape_string($username)."',
  99. lastname = '".Database::escape_string($lastname)."',
  100. firstname = '".Database::escape_string($firstname)."',
  101. password = '".($userPasswordCrypted==true ? md5($password) : $password)."',
  102. email = '".Database::escape_string($email)."',
  103. official_code = '".Database::escape_string($official_code)."',
  104. phone = '".Database::escape_string($phone)."',
  105. status = '".Database::escape_string($status)."'";
  106. api_sql_query($sql, __FILE__, __LINE__);
  107. if(mysql_affected_rows()>0 && $sendMail)
  108. {
  109. $emailto='"'.$firstname.' '.$lastname.'" <'.$email.'>';
  110. $emailsubject='['.get_setting('siteName').'] '.get_lang('YourReg').' '.get_setting('siteName');
  111. $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');
  112. //#287 modifiée par Stéphane DEBIEVE - FOREM
  113. $emailheaders='From: '.get_setting('administratorName').' '.get_setting('administratorSurname').' <'.get_setting('emailAdministrator').">\n";
  114. $emailheaders.='Reply-To: '.get_setting('emailAdministrator');
  115. @api_send_mail($emailto,$emailsubject,$emailbody,$emailheaders);
  116. }
  117. }
  118. else
  119. {
  120. $lastname = mb_convert_encoding($userNode->Lastname,$charset,'utf-8');
  121. $firstname = mb_convert_encoding($userNode->Firstname,$charset,'utf-8');
  122. $password = mb_convert_encoding($userNode->Password,$charset,'utf-8');
  123. $email = mb_convert_encoding($userNode->Email,$charset,'utf-8');
  124. $official_code = mb_convert_encoding($userNode->OfficialCode,$charset,'utf-8');
  125. $phone = mb_convert_encoding($userNode->Phone,$charset,'utf-8');
  126. $status = mb_convert_encoding($userNode->Status,$charset,'utf-8');
  127. switch($status)
  128. {
  129. case 'student' : $status = 5; break;
  130. case 'teacher' : $status = 1; break;
  131. default : $status = 5; $errorMsg = get_lang('StudentStatusWasGivenTo').' : '.$username.'<br />';
  132. }
  133. $sql = "UPDATE $tbl_user SET
  134. lastname = '".Database::escape_string($lastname)."',
  135. firstname = '".Database::escape_string($firstname)."',
  136. ".(empty($password) ? "" : "password = '".($userPasswordCrypted==true ? md5($password) : $password)."',")."
  137. email = '".Database::escape_string($email)."',
  138. official_code = '".Database::escape_string($official_code)."',
  139. phone = '".Database::escape_string($phone)."',
  140. status = '".Database::escape_string($status)."'
  141. WHERE username = '".Database::escape_string($username)."'";
  142. api_sql_query($sql, __FILE__, __LINE__);
  143. }
  144. }
  145. foreach($racine->Courses->Course as $courseNode)
  146. {
  147. $course_code = mb_convert_encoding($courseNode->CourseCode,$charset,'utf-8');
  148. $title = mb_convert_encoding($courseNode->CourseTitle,$charset,'utf-8');
  149. $description = mb_convert_encoding($courseNode->CourseDescription,$charset,'utf-8');
  150. $language = mb_convert_encoding($courseNode->CourseLanguage,$charset,'utf-8');
  151. $username = mb_convert_encoding($courseNode->CourseTeacher,$charset,'utf-8');
  152. $sql = "SELECT user_id, lastname, firstname FROM $tbl_user WHERE username='$username'";
  153. $rs = api_sql_query($sql, __FILE__, __LINE__);
  154. list($user_id, $lastname, $firstname) = mysql_fetch_array($rs);
  155. $keys = define_course_keys($course_code, "", $dbNamePrefix);
  156. if (sizeof($keys))
  157. {
  158. $currentCourseCode = $keys['visual_code'];
  159. $currentCourseId = $keys["currentCourseId"];
  160. if(empty($currentCourseCode))
  161. $currentCourseCode = $currentCourseId;
  162. $currentCourseDbName = $keys["currentCourseDbName"];
  163. $currentCourseRepository = $keys["currentCourseRepository"];
  164. if($currentCourseId == strtoupper($course_code))
  165. {
  166. if (empty ($title))
  167. {
  168. $title = $keys["currentCourseCode"];
  169. }
  170. prepare_course_repository($currentCourseRepository, $currentCourseId);
  171. update_Db_course($currentCourseDbName);
  172. fill_course_repository($currentCourseRepository);
  173. fill_Db_course($currentCourseDbName, $currentCourseRepository, 'french');
  174. //register_course($currentCourseId, $currentCourseCode, $currentCourseRepository, $currentCourseDbName, "$lastname $firstname", $course['unit_code'], addslashes($course['FR']['title']), $language, $user_id);
  175. $sql = "INSERT INTO ".$tbl_course." SET
  176. code = '".$currentCourseId."',
  177. db_name = '".$currentCourseDbName."',
  178. directory = '".$currentCourseRepository."',
  179. course_language = '".$language."',
  180. title = '".$title."',
  181. description = '".lang2db($description)."',
  182. category_code = '',
  183. visibility = '".$defaultVisibilityForANewCourse."',
  184. show_score = '',
  185. disk_quota = NULL,
  186. creation_date = now(),
  187. expiration_date = NULL,
  188. last_edit = now(),
  189. last_visit = NULL,
  190. tutor_name = '".$lastname." ".$firstname."',
  191. visual_code = '".$currentCourseCode."'";
  192. api_sql_query($sql, __FILE__, __LINE__);
  193. $sql = "INSERT INTO ".$tbl_course_user." SET
  194. course_code = '".$currentCourseId."',
  195. user_id = '".$user_id."',
  196. status = '1',
  197. role = '".lang2db('Professor')."',
  198. tutor_id='1',
  199. sort='". ($sort +1)."',
  200. user_course_cat='0'";
  201. api_sql_query($sql, __FILE__, __LINE__);
  202. }
  203. }
  204. }
  205. foreach ($racine->Session as $sessionNode){ // foreach session
  206. $countCourses = 0;
  207. $countUsers = 0;
  208. $SessionName = mb_convert_encoding($sessionNode->SessionName,$charset,'utf-8');
  209. $Coach = mb_convert_encoding($sessionNode->Coach,$charset,'utf-8');
  210. if(!empty($Coach)){
  211. $sqlCoach = "SELECT user_id FROM $tbl_user WHERE username='$Coach'";
  212. $rsCoach = api_sql_query($sqlCoach);
  213. list($CoachId) = (mysql_fetch_array($rsCoach));
  214. if(empty($CoachId))
  215. {
  216. $errorMsg .= get_lang('UserDoesNotExist').' : '.$Coach.'<br />';
  217. }
  218. }
  219. $DateStart = $sessionNode->DateStart;
  220. if(!empty($DateStart))
  221. {
  222. list($YearStart,$MonthStart, $DayStart) = explode('-',$DateStart);
  223. if(empty($YearStart) || empty($MonthStart) || empty($DayStart))
  224. {
  225. $errorMsg .= get_lang('WrongDate').' : '.$DateStart.'<br />';
  226. break;
  227. }
  228. else
  229. {
  230. $timeStart = mktime(0,0,0,$MonthStart,$DayStart,$YearStart);
  231. }
  232. $DateEnd = $sessionNode->DateEnd;
  233. if(!empty($DateStart))
  234. {
  235. list($YearEnd,$MonthEnd, $DayEnd) = explode('-',$DateEnd);
  236. if(empty($YearEnd) || empty($MonthEnd) || empty($DayEnd))
  237. {
  238. $errorMsg .= get_lang('WrongDate').' : '.$DateEnd.'<br />';
  239. break;
  240. }
  241. else
  242. {
  243. $timeEnd = mktime(0,0,0,$MonthEnd,$DayEnd,$YearEnd);
  244. }
  245. }
  246. if($timeEnd - $timeStart < 0)
  247. {
  248. $errorMsg .= get_lang('StartDateShouldBeBeforeEndDate').' : '.$DateEnd.'<br />';
  249. }
  250. }
  251. // verify that session doesn't exist
  252. while(!$uniqueName)
  253. {
  254. if($i>1)
  255. $suffix = ' - '.$i;
  256. $sql = 'SELECT 1 FROM '.$tbl_session.' WHERE name="'.Database::escape_string($SessionName.$suffix).'"';
  257. $rs = api_sql_query($sql, __FILE__, __LINE__);
  258. if(mysql_result($rs,0,0))
  259. {
  260. $i++;
  261. }
  262. else
  263. {
  264. $uniqueName = true;
  265. $SessionName .= $suffix;
  266. }
  267. }
  268. $sqlSession = "INSERT IGNORE INTO $tbl_session SET
  269. name = '".Database::escape_string($SessionName)."',
  270. id_coach = '$CoachId',
  271. date_start = '$DateStart',
  272. date_end = '$DateEnd'";
  273. $rsSession = api_sql_query($sqlSession, __FILE__, __LINE__);
  274. $session_id = mysql_insert_id();
  275. $countSessions++;
  276. foreach ($sessionNode->User as $userNode){
  277. $username = mb_convert_encoding(substr($userNode->nodeValue,0,20),$charset,'utf-8');
  278. $sqlUser = "SELECT user_id FROM $tbl_user WHERE username='".Database::escape_string($username)."'";
  279. $rsUser = api_sql_query($sqlUser);
  280. list($user_id) = (mysql_fetch_array($rsUser));
  281. if(!empty($user_id)){
  282. $sql = "INSERT INTO $tbl_session_user SET
  283. id_user='$user_id',
  284. id_session = '$session_id'";
  285. $rsUser = api_sql_query($sql,__FILE__,__LINE__);
  286. if(mysql_affected_rows()){
  287. $countUsers++;
  288. }
  289. }
  290. }
  291. foreach($sessionNode->Course as $courseNode){
  292. $CourseCode = $courseNode->CourseCode;
  293. // verify that the course pointed by the course code node exists
  294. $sql = 'SELECT 1 FROM '.$tbl_course.' WHERE code="'.mysql_escape_string($CourseCode).'"';
  295. $rs = api_sql_query($sql, __FILE__, __LINE__);
  296. if(mysql_num_rows($rs)>0)
  297. { // if the course exists we continue
  298. $Coach = substr($courseNode->Coach,0,20);
  299. if(!empty($Coach)){
  300. $sqlCoach = "SELECT user_id FROM $tbl_user WHERE username='$Coach'";
  301. $rsCoach = api_sql_query($sqlCoach,__FILE__,__LINE__);
  302. list($CoachId) = (mysql_fetch_array($rsCoach));
  303. if(empty($CoachId))
  304. {
  305. $errorMsg .= get_lang('UserDoesNotExist').' : '.$Coach.'<br />';
  306. }
  307. }
  308. else {
  309. $Coach = '';
  310. }
  311. $sqlCourse = "INSERT INTO $tbl_session_course SET
  312. course_code = '$CourseCode',
  313. id_coach='$CoachId',
  314. id_session='$session_id'";
  315. $rsCourse = api_sql_query($sqlCourse,__FILE__,__LINE__);
  316. if(mysql_affected_rows()){
  317. $countCourses++;
  318. $countUsersCourses = 0;
  319. foreach ($courseNode->User as $userNode){
  320. $username = substr($userNode,0,20);
  321. $sqlUser = "SELECT user_id FROM $tbl_user WHERE username='".$username."'";
  322. $rsUser = api_sql_query($sqlUser);
  323. list($user_id) = (mysql_fetch_array($rsUser));
  324. if(!empty($user_id))
  325. {
  326. $sql = "INSERT IGNORE INTO $tbl_session_user SET
  327. id_user='$user_id',
  328. id_session = '$session_id'";
  329. if(mysql_affected_rows())
  330. $countUsers++;
  331. $rsUser = api_sql_query($sql,__FILE__,__LINE__);
  332. $sql = "INSERT IGNORE INTO $tbl_session_course_user SET
  333. id_user='$user_id',
  334. course_code='$CourseCode',
  335. id_session = '$session_id'";
  336. $rsUsers = api_sql_query($sql,__FILE__,__LINE__);
  337. if(mysql_affected_rows())
  338. $countUsersCourses++;
  339. }
  340. else
  341. {
  342. $errorMsg .= get_lang('UserDoesNotExist').' : '.$username.'<br />';
  343. }
  344. }
  345. api_sql_query("UPDATE $tbl_session_course SET nbr_users='$countUsersCourses' WHERE course_code='$CourseCode'",__FILE__,__LINE__);
  346. }
  347. }
  348. else
  349. { // if the course does not exists
  350. $errorMsg .= get_lang('CourseDoesNotExist').' : '.$CourseCode.'<br />';
  351. }
  352. }
  353. api_sql_query("UPDATE $tbl_session SET nbr_users='$countUsers', nbr_courses='$countCourses' WHERE id='$session_id'",__FILE__,__LINE__);
  354. }
  355. }
  356. else
  357. {
  358. $errorMsg .= get_lang('XMLNotValid');
  359. }
  360. }
  361. /////////////////////
  362. // CSV /////////////
  363. ///////////////////
  364. else
  365. {
  366. $content=file($_FILES['import_file']['tmp_name']);
  367. if(!strstr($content[0],';'))
  368. {
  369. $errorMsg=get_lang('NotCSV');
  370. }
  371. else
  372. {
  373. $tag_names=array();
  374. foreach($content as $key=>$enreg)
  375. {
  376. $enreg=explode(';',trim($enreg));
  377. if($key)
  378. {
  379. foreach($tag_names as $tag_key=>$tag_name)
  380. {
  381. $sessions[$key-1][$tag_name]=$enreg[$tag_key];
  382. }
  383. }
  384. else
  385. {
  386. foreach($enreg as $tag_name)
  387. {
  388. $tag_names[]=eregi_replace('[^a-z0-9_-]','',$tag_name);
  389. }
  390. if(!in_array('SessionName',$tag_names) || !in_array('DateStart',$tag_names) || !in_array('DateEnd',$tag_names))
  391. {
  392. $errorMsg=get_lang('NoNeededData');
  393. break;
  394. }
  395. }
  396. }
  397. foreach($sessions as $enreg) {
  398. $SessionName = $enreg['SessionName'];
  399. $DateStart = $enreg['DateStart'];
  400. $DateEnd = $enreg['DateEnd'];
  401. if(!empty($enreg['Coach'])){
  402. $sqlCoach = "SELECT user_id FROM $tbl_user WHERE username='".$enreg['Coach']."'";
  403. $rsCoach = api_sql_query($sqlCoach);
  404. list($Coach) = (mysql_fetch_array($rsCoach));
  405. }
  406. else {
  407. $Coach = '';
  408. }
  409. $sqlSession = "INSERT IGNORE INTO $tbl_session SET
  410. name = '$SessionName',
  411. id_coach = '$Coach',
  412. date_start = '$DateStart',
  413. date_end = '$DateEnd'";
  414. $rsSession = api_sql_query($sqlSession, __FILE__, __LINE__);
  415. $update = false;
  416. if(!mysql_affected_rows($rsSession)){
  417. $update = true;
  418. $sqlSession = "UPDATE $tbl_session SET
  419. id_coach = '$Coach',
  420. date_start = '$DateStart',
  421. date_end = '$DateEnd'
  422. WHERE name = '$SessionName'";
  423. $rsSession = api_sql_query($sqlSession, __FILE__, __LINE__);
  424. $session_id = api_sql_query("SELECT id FROM $tbl_session WHERE name='$SessionName'",__FILE__,__LINE__);
  425. list($session_id) = mysql_fetch_array($session_id);
  426. api_sql_query("DELETE FROM $tbl_session_user WHERE id_session='$session_id'",__FILE__,__LINE__);
  427. api_sql_query("DELETE FROM $tbl_session_course WHERE id_session='$session_id'",__FILE__,__LINE__);
  428. api_sql_query("DELETE FROM $tbl_session_course_user WHERE id_session='$session_id'",__FILE__,__LINE__);
  429. }
  430. else {
  431. $session_id = mysql_insert_id($rsSession);
  432. }
  433. $countSessions++;
  434. $users = explode('|',$enreg['Users']);
  435. foreach ($users as $user){
  436. $sqlUser = "SELECT user_id FROM $tbl_user WHERE username='".$user."'";
  437. $rsUser = api_sql_query($sqlUser);
  438. list($user_id) = (mysql_fetch_array($rsUser));
  439. $sql = "INSERT INTO $tbl_session_user SET
  440. id_user='$user_id',
  441. id_session = '$session_id'";
  442. $rsUser = api_sql_query($sql,__FILE__,__LINE__);
  443. if(mysql_affected_rows()){
  444. $countUsers++;
  445. }
  446. }
  447. $courses = explode('|',$enreg['Courses']);
  448. foreach($courses as $course){
  449. $CourseCode = substr($course,0,strpos($course,'['));
  450. $Coach = strstr($course,'[');
  451. $Coach = substr($Coach,1,strpos($Coach,']')-1);
  452. if(!empty($Coach)){
  453. $sqlCoach = "SELECT user_id FROM $tbl_user WHERE username='$Coach'";
  454. $rsCoach = api_sql_query($sqlCoach,__FILE__,__LINE__);
  455. list($Coach) = (mysql_fetch_array($rsCoach));
  456. }
  457. else {
  458. $Coach = '';
  459. }
  460. $sqlCourse = "INSERT INTO $tbl_session_course SET
  461. course_code = '$CourseCode',
  462. id_coach='$Coach',
  463. id_session='$session_id'";
  464. $rsCourse = api_sql_query($sqlCourse,__FILE__,__LINE__);
  465. if(mysql_affected_rows()){
  466. $countCourses++;
  467. $users = substr($course , strpos($course,'[',1)+1 , strpos($course,']',1));
  468. $users = explode('|',$enreg['Users']);
  469. $countUsersCourses = 0;
  470. foreach ($users as $user){
  471. $sqlUser = "SELECT user_id FROM $tbl_user WHERE username='".$user."'";
  472. $rsUser = api_sql_query($sqlUser);
  473. list($user_id) = (mysql_fetch_array($rsUser));
  474. $sql = "INSERT INTO $tbl_session_course_user SET
  475. id_user='$user_id',
  476. course_code='$CourseCode',
  477. id_session = '$session_id'";
  478. $rsUsers = api_sql_query($sql,__FILE__,__LINE__);
  479. if(mysql_affected_rows())
  480. $countUsersCourses++;
  481. }
  482. api_sql_query("UPDATE $tbl_session_course SET nbr_users='$countUsersCourses' WHERE course_code='$CourseCode'",__FILE__,__LINE__);
  483. }
  484. }
  485. api_sql_query("UPDATE $tbl_session SET nbr_users='$countUsers', nbr_courses='$countCourses' WHERE id='$session_id'",__FILE__,__LINE__);
  486. }
  487. }
  488. }
  489. if(!empty($errorMsg))
  490. {
  491. $errorMsg = get_lang('ButProblemsOccured').' :<br />'.$errorMsg;
  492. }
  493. if($countSessions == 1){
  494. header('Location: resume_session.php?id_session='.$session_id);
  495. exit;
  496. }
  497. else{
  498. header('Location: session_list.php?action=show_message&message='.urlencode(get_lang('FileImported').' '.$errorMsg));
  499. exit;
  500. }
  501. }
  502. else
  503. {
  504. $errorMsg = get_lang('NoInputFile');
  505. }
  506. }
  507. Display::display_header($tool_name);
  508. api_display_tool_title($tool_name);
  509. ?>
  510. <form method="post" action="<?php echo api_get_self(); ?>" enctype="multipart/form-data" style="margin:0px;">
  511. <input type="hidden" name="formSent" value="1">
  512. <table border="0" cellpadding="5" cellspacing="0">
  513. <?php
  514. if(!empty($errorMsg))
  515. {
  516. ?>
  517. <tr>
  518. <td colspan="2">
  519. <?php
  520. Display::display_normal_message($errorMsg,false); //main API
  521. ?>
  522. </td>
  523. </tr>
  524. <?php
  525. }
  526. ?>
  527. <tr>
  528. <td nowrap="nowrap"><?php echo get_lang('ImportFileLocation'); ?> :</td>
  529. <td><input type="file" name="import_file" size="30"></td>
  530. </tr>
  531. <tr>
  532. <td nowrap="nowrap" valign="top"><?php echo get_lang('FileType'); ?> :</td>
  533. <td>
  534. <input class="checkbox" type="radio" name="file_type" id="file_type_xml" value="xml" checked="checked" /> <label for="file_type_xml">XML</label> (<a href="exemple.xml" target="_blank"><?php echo get_lang('ExampleXMLFile'); ?></a>)<br>
  535. <input class="checkbox" type="radio" name="file_type" id="file_type_csv" value="csv" <?php if($formSent && $file_type == 'csv') echo 'checked="checked"'; ?>> <label for="file_type_csv">CSV</label> (<a href="exempleSession.csv" target="_blank"><?php echo get_lang('ExampleCSVFile'); ?></a>)<br>
  536. </td>
  537. </tr>
  538. <tr>
  539. <td nowrap="nowrap" valign="top"><?php echo get_lang('SendMailToUsers'); ?> :</td>
  540. <td>
  541. <input class="checkbox" type="checkbox" name="sendMail" id="sendMail" value="true" />
  542. </td>
  543. </tr>
  544. <tr>
  545. <td>&nbsp;</td>
  546. <td><input type="submit" value="<?php echo get_lang('Ok'); ?>"></td>
  547. </tr>
  548. </table>
  549. </form>
  550. <font color="gray">
  551. <p><?php echo get_lang('CSVMustLookLike').' ('.get_lang('MandatoryFields').')'; ?> :</p>
  552. <blockquote>
  553. <pre>
  554. <b>SessionName</b>;Coach;<b>DateStart</b>;<b>DateEnd</b>;Users;Courses
  555. <b>xxx</b>;xxx;<b>xxx;xxx</b>;username1|username2;course1[coach1][username1,username2,...]|course2[coach1][username1,username2,...]
  556. </pre>
  557. </blockquote>
  558. <p><?php echo get_lang('XMLMustLookLike').' ('.get_lang('MandatoryFields').')'; ?> :</p>
  559. <blockquote>
  560. <pre>
  561. &lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
  562. &lt;Sessions&gt;
  563. &lt;Users&gt;
  564. &lt;User&gt;
  565. &lt;Username&gt;<b>username1</b>&lt;/Username&gt;
  566. &lt;Lastname&gt;xxx&lt;/Lastname&gt;
  567. &lt;Firstname&gt;xxx&lt;/Firstname&gt;
  568. &lt;Password&gt;xxx&lt;/Password&gt;
  569. &lt;Email&gt;xxx@xx.xx&lt;/Email&gt;
  570. &lt;OfficialCode&gt;xxx&lt;/OfficialCode&gt;
  571. &lt;Phone&gt;xxx&lt;/Phone&gt;
  572. &lt;Status&gt;student|teacher&lt;/Status&gt;
  573. &lt;/User&gt;
  574. &lt;/Users&gt;
  575. &lt;Courses&gt;
  576. &lt;Course&gt;
  577. &lt;CourseCode&gt;<b>xxx</b>&lt;/CourseCode&gt;
  578. &lt;CourseTeacher&gt;xxx&lt;/CourseTeacher&gt;
  579. &lt;CourseLanguage&gt;xxx&lt;/CourseLanguage&gt;
  580. &lt;CourseTitle&gt;xxx&lt;/CourseTitle&gt;
  581. &lt;CourseDescription&gt;xxx&lt;/CourseDescription&gt;
  582. &lt;/Course&gt;
  583. &lt;/Courses&gt;
  584. &lt;Session&gt;
  585. <b>&lt;SessionName&gt;xxx&lt;/SessionName&gt;</b>
  586. &lt;Coach&gt;xxx&lt;/Coach&gt;
  587. <b>&lt;DateStart&gt;xxx&lt;/DateStart&gt;</b>
  588. <b>&lt;DateEnd&gt;xxx&lt;/DateEnd&gt;</b>
  589. &lt;User&gt;xxx&lt;/User&gt;
  590. &lt;User&gt;xxx&lt;/User&gt;
  591. &lt;Course&gt;
  592. &lt;CourseCode&gt;coursecode1&lt;/CourseCode&gt;
  593. &lt;Coach&gt;coach1&lt;/Coach&gt;
  594. &lt;User&gt;username1&lt;/User&gt;
  595. &lt;User&gt;username2&lt;/User&gt;
  596. &lt;/Course&gt;
  597. &lt;/Session&gt;
  598. &lt;/Sessions&gt;
  599. </pre>
  600. </blockquote>
  601. </font>
  602. <?php
  603. /*
  604. ==============================================================================
  605. FOOTER
  606. ==============================================================================
  607. */
  608. Display::display_footer();
  609. ?>