Ver código fonte

Adding c_id in track_* and session_rel_course and session_rel_course_rel_user tables see BT#5638

Julio Montoya 12 anos atrás
pai
commit
dad69fb238
100 arquivos alterados com 1416 adições e 1841 exclusões
  1. 7 16
      main/admin/add_many_session_to_category.php
  2. 1 4
      main/admin/calendar.lib.php
  3. 33 35
      main/admin/career_dashboard.php
  4. 1 1
      main/admin/course_information.php
  5. 5 10
      main/admin/inactive_user_list.php
  6. 164 140
      main/admin/ldap_synchro.php
  7. 1 6
      main/admin/ldap_users_synchro.php
  8. 11 9
      main/admin/session_course_list.php
  9. 1 2
      main/admin/special_exports.php
  10. 2 7
      main/admin/user_information.php
  11. 1 1
      main/admin/user_list.php
  12. 25 25
      main/admin/user_move_stats.php
  13. 1 1
      main/attendance/attendance_controller.php
  14. 1 1
      main/attendance/attendance_sheet.php
  15. 3 3
      main/auth/courses_controller.php
  16. 5 10
      main/auth/ldap/authldap.php
  17. 2 2
      main/auth/my_progress.php
  18. 2 2
      main/auth/shibboleth/lib/shibboleth_session.class.php
  19. 7 11
      main/calendar/agenda.inc.php
  20. 0 1
      main/calendar/agenda.php
  21. 0 2
      main/calendar/allagendas.php
  22. 1 1
      main/calendar/download.php
  23. 1 1
      main/calendar/myagenda.inc.php
  24. 2 2
      main/chat/chat_chat.php
  25. 1 1
      main/chat/chat_hidden.php
  26. 1 1
      main/chat/chat_message.php
  27. 8 7
      main/chat/chat_whoisonline.php
  28. 2 2
      main/course_home/3column.php
  29. 1 1
      main/course_home/activity.php
  30. 3 67
      main/course_home/course_home.php
  31. 0 2
      main/course_info/download.lib.php
  32. 2 3
      main/course_info/infocours.php
  33. 3 2
      main/course_info/legal.php
  34. 5 6
      main/coursecopy/classes/CourseArchiver.class.php
  35. 6 5
      main/coursecopy/classes/CourseBuilder.class.php
  36. 46 94
      main/coursecopy/copy_course_session.php
  37. 2 1
      main/coursecopy/import_backup.php
  38. 5 2
      main/document/create_audio.php
  39. 2 1
      main/document/document.inc.php
  40. 30 28
      main/document/document.php
  41. 1 1
      main/document/document_quota.php
  42. 1 1
      main/document/showinframes.php
  43. 44 42
      main/dropbox/dropbox_class.inc.php
  44. 16 17
      main/dropbox/dropbox_functions.inc.php
  45. 4 3
      main/dropbox/dropbox_init.inc.php
  46. 3 160
      main/dropbox/dropbox_submit.php
  47. 4 4
      main/dropbox/index.php
  48. 1 1
      main/exercice/addlimits.php
  49. 4 3
      main/exercice/admin.php
  50. 0 1
      main/exercice/adminhp.php
  51. 7 9
      main/exercice/exercise.class.php
  52. 9 4
      main/exercice/exercise.lib.php
  53. 11 5
      main/exercice/exercise_show.php
  54. 1 0
      main/exercice/exercise_submit.php
  55. 2 1
      main/exercice/export/exercise_import.inc.php
  56. 1 2
      main/exercice/hotpotatoes.lib.php
  57. 4 4
      main/exercice/question_pool.php
  58. 2 2
      main/exercice/stats.php
  59. 7 4
      main/exercice/testcategory.class.php
  60. 3 1
      main/exercice/upload_exercise.php
  61. 17 20
      main/forum/forumfunction.inc.php
  62. 18 18
      main/gradebook/gradebook_add_eval.php
  63. 1 1
      main/gradebook/gradebook_result.class.php
  64. 3 2
      main/gradebook/lib/be/result.class.php
  65. 3 3
      main/gradebook/lib/fe/evalform.class.php
  66. 11 11
      main/gradebook/lib/gradebook_functions_users.inc.php
  67. 1 1
      main/group/group_space.php
  68. 3 3
      main/inc/ajax/course_home.ajax.php
  69. 16 16
      main/inc/ajax/myspace.ajax.php
  70. 5 5
      main/inc/lib/announcements.inc.php
  71. 6 3
      main/inc/lib/attendance.lib.php
  72. 7 10
      main/inc/lib/auth.lib.php
  73. 5 6
      main/inc/lib/blog.lib.php
  74. 3 3
      main/inc/lib/course.class.php
  75. 105 108
      main/inc/lib/course.lib.php
  76. 0 2
      main/inc/lib/course_home.lib.php
  77. 7 7
      main/inc/lib/current_course.class.php
  78. 2 2
      main/inc/lib/display.lib.php
  79. 4 4
      main/inc/lib/document.lib.php
  80. 35 33
      main/inc/lib/events.lib.inc.php
  81. 2 1
      main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php
  82. 2 1
      main/inc/lib/fckeditor/editor/filemanager/connectors/php/io.php
  83. 7 8
      main/inc/lib/fckeditor/editor/plugins/ImageManager/Classes/ImageManager.php
  84. 1 0
      main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_get_file_listing.php
  85. 3 0
      main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/class.search.php
  86. 12 9
      main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php
  87. 1 1
      main/inc/lib/fckeditor/fcktemplates.xml.php
  88. 1 1
      main/inc/lib/fileManager.lib.php
  89. 6 9
      main/inc/lib/groupmanager.lib.php
  90. 7 5
      main/inc/lib/link.lib.php
  91. 8 11
      main/inc/lib/login.lib.php
  92. 26 70
      main/inc/lib/main_api.lib.php
  93. 1 1
      main/inc/lib/online.inc.php
  94. 113 207
      main/inc/lib/sessionmanager.lib.php
  95. 11 10
      main/inc/lib/statistics.lib.php
  96. 2 3
      main/inc/lib/template.lib.php
  97. 2 2
      main/inc/lib/thematic.lib.php
  98. 397 419
      main/inc/lib/tracking.lib.php
  99. 25 20
      main/inc/lib/usermanager.lib.php
  100. 18 24
      main/install/1.10.0/db_main.sql

+ 7 - 16
main/admin/add_many_session_to_category.php

@@ -9,7 +9,6 @@
 $language_file='admin';
 // resetting the course id
 $cidReset = true;
-
 require_once '../inc/global.inc.php';
 
 $xajax = new xajax();
@@ -26,19 +25,14 @@ $interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('PlatformAdm
 $interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('SessionList'));
 
 // Database Table Definitions
-$tbl_session_rel_course_rel_user	= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 $tbl_session						= Database::get_main_table(TABLE_MAIN_SESSION);
-$tbl_session_category				= Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
-$tbl_session_rel_user				= Database::get_main_table(TABLE_MAIN_SESSION_USER);
-$tbl_session_rel_course				= Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
-$tbl_course							= Database::get_main_table(TABLE_MAIN_COURSE);
 
 // setting the name of the tool
 $tool_name= get_lang('SubscribeSessionsToCategory');
 $id_session=intval($_GET['id_session']);
 
 $add_type = 'multiple';
-if(isset($_GET['add_type']) && $_GET['add_type']!=''){
+if (isset($_GET['add_type']) && $_GET['add_type']!=''){
 	$add_type = Security::remove_XSS($_REQUEST['add_type']);
 }
 
@@ -52,8 +46,7 @@ if (!api_is_platform_admin() && !api_is_session_admin()) {
 
 $xajax -> processRequests();
 $htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
-$htmlHeadXtra[] = '
-<script type="text/javascript">
+$htmlHeadXtra[] = '<script>
 function add_course_to_session (code, content) {
 	document.getElementById("course_to_add").value = "";
 	document.getElementById("ajax_list_courses_single").innerHTML = "";
@@ -99,7 +92,6 @@ if ($_POST['formSent']) {
 		$session_id = join(',', $SessionCategoryList);
 		$sql = "UPDATE $tbl_session SET session_category_id = $Categoryid WHERE id in ($session_id) ";
 		Database::query($sql);
-		//header('Location: session_list.php?id_category='.$Categoryid);
 		header('Location: add_many_session_to_category.php?id_category='.$Categoryid.'&msg=ok');
 		exit;
 	} else {
@@ -112,11 +104,11 @@ if (isset($_GET['id_category'])) {
 	$Categoryid = intval($_GET['id_category']);
 }
 
-if(isset($_GET['msg']) && $_GET['msg']=='error'){
+if (isset($_GET['msg']) && $_GET['msg']=='error'){
 	$errorMsg = get_lang('MsgErrorSessionCategory');
 }
 
-if(isset($_GET['msg']) && $_GET['msg']=='ok'){
+if (isset($_GET['msg']) && $_GET['msg']=='ok'){
 	$OkMsg = get_lang('SessionCategoryUpdate');
 }
 
@@ -127,7 +119,7 @@ Display::display_header($tool_name);
 
 $where ='';
 $rows_category_session = array();
-if((isset($_POST['CategorySessionId']) && $_POST['formSent'] == 0) || isset($_GET['id_category']) ) {
+if ((isset($_POST['CategorySessionId']) && $_POST['formSent'] == 0) || isset($_GET['id_category']) ) {
 
 	$where = 'WHERE session_category_id !='.$Categoryid;
 	$sql = 'SELECT id, name  FROM '.$tbl_session .' WHERE session_category_id ='.$Categoryid.' ORDER BY name';
@@ -150,11 +142,11 @@ $rows_session = Database::store_result($result);
     <?php echo '<legend>'.$tool_name.'</legend>'; ?>
 <input type="hidden" name="formSent" value="1" />
 <?php
-if(!empty($errorMsg)) {
+if (!empty($errorMsg)) {
 	Display::display_error_message($errorMsg); //main API
 }
 
-if(!empty($OkMsg)) {
+if (!empty($OkMsg)) {
 	Display::display_confirmation_message($OkMsg); //main API
 }
 
@@ -246,7 +238,6 @@ if(!empty($OkMsg)) {
   </select></td>
 </tr>
 </table>
-
 </form>
 <script>
 function valide(){

+ 1 - 4
main/admin/calendar.lib.php

@@ -613,8 +613,7 @@ function save_edit_agenda_item($id, $title, $content, $start_date, $end_date)
  */
 function delete_agenda_item($id)
 {
-    global $_course;
-
+    $_course = api_get_course_info();
     $t_agenda = Database::get_main_table(TABLE_MAIN_SYSTEM_CALENDAR);
     $id = intval($id);
     $sql = "SELECT * FROM $t_agenda WHERE id = '$id'";
@@ -661,7 +660,6 @@ function display_agenda_items()
 {
     global $select_month, $select_year;
     global $DaysShort, $DaysLong, $MonthsLong;
-    global $is_courseAdmin;
     global $dateFormatLong, $timeNoSecFormat, $charset, $_user, $_course;
 
     $TABLEAGENDA = Database::get_main_table(TABLE_MAIN_SYSTEM_CALENDAR);
@@ -971,7 +969,6 @@ function display_one_agenda_item($agenda_id)
 {
     global $select_month, $select_year;
     global $DaysShort, $DaysLong, $MonthsLong;
-    global $is_courseAdmin;
     global $dateFormatLong, $timeNoSecFormat, $charset;
     global $_user;
 

+ 33 - 35
main/admin/career_dashboard.php

@@ -37,8 +37,8 @@ $career = new Career();
 
 $condition = array('status = ?' => 1);
 if ($form->validate()) {
-    $data = $form->getSubmitValues(); 
-    $filter = intval($data['filter']);   
+    $data = $form->getSubmitValues();
+    $filter = intval($data['filter']);
     if (!empty($filter)) {
         $condition = array('status = ? AND id = ? ' => array(1, $filter));
     }
@@ -47,7 +47,7 @@ if ($form->validate()) {
 $careers = $career->get_all(array('status = ?' => 1)); //only status =1
 $career_select_list = array();
 $career_select_list[0] = ' -- '.get_lang('Select').' --';
-foreach ($careers as $item) {    
+foreach ($careers as $item) {
     $career_select_list[$item['id']] = $item['name'];
 }
 
@@ -59,7 +59,7 @@ $form->addElement('style_submit_button', 'submit', get_lang('Filter'), 'class="s
 echo '<div class="actions" style="margin-bottom:20px">';
     echo  '<a href="../admin/index.php">'.Display::return_icon('back.png', get_lang('BackTo').' '.get_lang('PlatformAdmin'),'',ICON_SIZE_MEDIUM).'</a>';
     echo '<a href="careers.php">'.Display::return_icon('career.png',get_lang('Careers'),'',ICON_SIZE_MEDIUM).'</a>';
-    echo '<a href="promotions.php">'.Display::return_icon('promotion.png',get_lang('Promotions'),'',ICON_SIZE_MEDIUM).'</a>'; 
+    echo '<a href="promotions.php">'.Display::return_icon('promotion.png',get_lang('Promotions'),'',ICON_SIZE_MEDIUM).'</a>';
 echo '</div>';
 
 $form->display();
@@ -71,80 +71,78 @@ $i = 0;
 $grid_js = '';
 $career_array = array();
 if (!empty($careers)) {
-    foreach($careers as $career_item) {   
+    foreach($careers as $career_item) {
         $promotion = new Promotion();
         //Getting all promotions
-        $promotions = $promotion->get_all_promotions_by_career_id($career_item['id'], 'name DESC');        
-        $career_content = '';        
+        $promotions = $promotion->get_all_promotions_by_career_id($career_item['id'], 'name DESC');
+        $career_content = '';
         $promotion_array = array();
-        if (!empty($promotions)) {            
+        if (!empty($promotions)) {
             foreach($promotions as $promotion_item) {
                 if (!$promotion_item['status']) {
                     continue; //avoid status = 0
                 }
-                //Getting all sessions from this promotion      
-                $sessions = SessionManager::get_all_sessions_by_promotion($promotion_item['id']); 
-                   
-                $session_list = array();    
-                foreach($sessions as $session_item) {       
+                //Getting all sessions from this promotion
+                $sessions = SessionManager::get_all_sessions_by_promotion($promotion_item['id']);
+
+                $session_list = array();
+                foreach($sessions as $session_item) {
                     $course_list = SessionManager::get_course_list_by_session_id($session_item['id']);
                     $session_list[] = array('data'=>$session_item,'courses'=>$course_list);
-                }   
-                $promotion_array[$promotion_item['id']] =array('name'=>$promotion_item['name'], 'sessions'=>$session_list);  
+                }
+                $promotion_array[$promotion_item['id']] =array('name'=>$promotion_item['name'], 'sessions'=>$session_list);
             }
         }
         $career_array[$career_item['id']] = array('name'=>$career_item['name'],'promotions'=>$promotion_array);
-    }   
+    }
 }
 
 echo '<table class="data_table">';
 
 foreach($career_array as $career_id => $data) {
     $career     = $data['name'];
-    $promotions = $data['promotions'];        
+    $promotions = $data['promotions'];
     $career = Display::url($career,'careers.php?action=edit&id='.$career_id);
     $career = Display::tag('h3',$career);
-    echo '<tr><td style="background-color:#eee" colspan="3">'.$career.'</td></tr>';   
-    foreach($promotions as $promotion_id => $promotion) {         
+    echo '<tr><td style="background-color:#eee" colspan="3">'.$career.'</td></tr>';
+    foreach($promotions as $promotion_id => $promotion) {
     	$promotion_name = $promotion['name'];
         $promotion_url  = Display::url($promotion_name,'promotions.php?action=edit&id='.$promotion_id);
         $sessions       = $promotion['sessions'];
         echo '<tr>';
         $count = count($sessions);
         $rowspan = '';
-        if (!empty($count)) {     
+        if (!empty($count)) {
             $count++;
         	$rowspan = 'rowspan="'.$count.'"';
         }
-        echo '<td '.$rowspan.'>';        
-        //echo $promotion_url;
-          echo Display::tag('h4',$promotion_url);
+        echo '<td '.$rowspan.'>';
+        echo Display::tag('h4',$promotion_url);
         echo '</td>';
-        echo '</tr>';      
-         
+        echo '</tr>';
+
         if (!empty($sessions))
         foreach($sessions as $session) {
             $course_list = $session['courses'];
-            
-            $url = Display::url($session['data']['name'], 'resume_session.php?id_session='.$session['data']['id']); 
+
+            $url = Display::url($session['data']['name'], 'resume_session.php?id_session='.$session['data']['id']);
             echo '<tr>';
                 //Session name
-                echo Display::tag('td',$url);         
+                echo Display::tag('td',$url);
                 echo '<td>';
                     //Courses
                     echo '<table>';
                     foreach($course_list as $course) {
-                       echo '<tr>';
-                       
-                       $url = Display::url($course['title'], api_get_path(WEB_COURSE_PATH).$course['directory'].'/?id_session='.$session['data']['id']);                       
+                        echo '<tr>';
+                       $url = Display::url($course['title'], api_get_path(WEB_COURSE_PATH).$course['directory'].'/?id_session='.$session['data']['id']);
                        echo Display::tag('td',$url);
-                       echo '</tr>';	
+                       echo '</tr>';
                     }
                     echo '</table>';
-                echo '</td>';    
-            echo '</tr>';       
+                echo '</td>';
+            echo '</tr>';
         }
     }
 }
 echo '</table>';
-Display::display_footer();
+Display::display_footer();

+ 1 - 1
main/admin/course_information.php

@@ -123,7 +123,7 @@ if (Database::num_rows($res) > 0) {
 	echo Display::display_warning_message(get_lang('NoUsersInCourse'));
 }
 
-$session_list = SessionManager::get_session_by_course($course_info['code']);
+$session_list = SessionManager::get_session_by_course($course_info['real_id']);
 
 $url = api_get_path(WEB_CODE_PATH);
 if (!empty($session_list)) {

+ 5 - 10
main/admin/inactive_user_list.php

@@ -2,9 +2,9 @@
 /* For licensing terms, see /license.txt */
 /**
     @author Andre Boivin base code
-	@author Julio Montoya fixing lot of little details  
+	@author Julio Montoya fixing lot of little details
 	@todo this script is not ready for a production use that's why I'm commenting the function delete_inactive_student
-	
+
 *	@package chamilo.admin
 *	script pour effacer les user inactif depuis x temps
 */
@@ -14,14 +14,9 @@ $language_file = array ('registration','admin');
 $cidReset = true;
 require_once '../inc/global.inc.php';
 
-$tbl_stats_access 		= Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS);
 $this_section = SECTION_PLATFORM_ADMIN;
 api_protect_admin_script(true);
 
-/**
-*	Make sure this function is protected because it does NOT check password!
-*
-*/
 
 /**		INIT SECTION
 */
@@ -30,12 +25,12 @@ Display :: display_header($tool_name, "");
 //On sélectionne les user élèves
 $sql = "SELECT user_id FROM ".$table_user." user WHERE user.status= '5' ORDER by lastname " ;
 $result = Database::query($sql);
-	
-while($row = Database::fetch_array($result)) {   
+
+while($row = Database::fetch_array($result)) {
     $user_id = $row['user_id'];
     //  pour chaque élève, on trouve la dernière connexion
     //$last_connection_date = UserManager:: delete_inactive_student($user_id, 2, true);
 }
-    
+
 /*  		FOOTER    */
 Display :: display_footer();

+ 164 - 140
main/admin/ldap_synchro.php

@@ -1,169 +1,193 @@
 <?php
 /* For licensing terms, see /license.txt */
 /**
-*	@package chamilo.admin
-*/
+ * @package chamilo.admin
+ * @deprecated ?
+ */
 /**
  * Code
  */
 exit(); //not yet functional, needs to be revised
 // name of the language file that needs to be included
-$language_file='admin';
+$language_file = 'admin';
 
-$cidReset=true;
+$cidReset = true;
 
 require('../inc/global.inc.php');
 $libpath = api_get_path(LIBRARY_PATH);
 require_once($libpath.'formvalidator/FormValidator.class.php');
 require_once($libpath.'usermanager.lib.php');
 require_once('../auth/ldap/authldap.php');
-$annee_base=date('Y');
+$annee_base = date('Y');
 // setting the section (for the tabs)
 $this_section = SECTION_PLATFORM_ADMIN;
 //api_protect_admin_script(); // on vire la secu... qui n'a pas lieu d'etre ici (script de synchro)
 
 // setting breadcrumbs
-$interbreadcrumb[]=array('url' => 'index.php',"name" => get_lang('PlatformAdmin'));
-$interbreadcrumb[]=array('url' => api_get_self(),"name" => "Liste des sessions");
+$interbreadcrumb[] = array('url' => 'index.php', "name" => get_lang('PlatformAdmin'));
+$interbreadcrumb[] = array('url' => api_get_self(), "name" => "Liste des sessions");
 
 // Database Table Definitions
-$tbl_session						= Database::get_main_table(TABLE_MAIN_SESSION);
-$tbl_session_rel_class				= Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
-$tbl_session_rel_course				= Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
-$tbl_session_rel_course_rel_user	= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-$tbl_course							= Database::get_main_table(TABLE_MAIN_COURSE);
-$tbl_user							= Database::get_main_table(TABLE_MAIN_USER);
-$tbl_session_rel_user				= Database::get_main_table(TABLE_MAIN_SESSION_USER);
-$tbl_class							= Database::get_main_table(TABLE_MAIN_CLASS);
-$tbl_class_user						= Database::get_main_table(TABLE_MAIN_CLASS_USER);
+$tbl_session                     = Database::get_main_table(TABLE_MAIN_SESSION);
+$tbl_session_rel_class           = Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
+$tbl_session_rel_course          = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
+$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
+$tbl_course                      = Database::get_main_table(TABLE_MAIN_COURSE);
+$tbl_user                        = Database::get_main_table(TABLE_MAIN_USER);
+$tbl_session_rel_user            = Database::get_main_table(TABLE_MAIN_SESSION_USER);
+$tbl_class                       = Database::get_main_table(TABLE_MAIN_CLASS);
+$tbl_class_user                  = Database::get_main_table(TABLE_MAIN_CLASS_USER);
 
-$tbl_session_rel_etape 				= "session_rel_etape";
+$tbl_session_rel_etape = "session_rel_etape";
 
-$message="";
+$message = "";
 
-$result=Database::query("SELECT id, name FROM $tbl_session");
-$Sessions=Database::store_result($result);
+$result   = Database::query("SELECT id, name FROM $tbl_session");
+$Sessions = Database::store_result($result);
 
-$result=Database::query($sql);
-$users=Database::store_result($result);
+$result = Database::query($sql);
+$users  = Database::store_result($result);
 
-foreach($Sessions as $session){
-	$id_session = $session['id'];
-	$name_session = $session['name'];
-	$UserList=array();
-	$UserUpdate=array();
-	$UserAdd=array();
+foreach ($Sessions as $session) {
+    $id_session   = $session['id'];
+    $name_session = $session['name'];
+    $UserList     = array();
+    $UserUpdate   = array();
+    $UserAdd      = array();
 
-	// Parse des code etape de la session
-	/*
-	$sql = "SELECT  id_session, code_etape, etape_description, code_ufr, annee
-		FROM $tbl_session_rel_etape
-		WHERE id_session='$id_session'
-		ORDER BY code_ufr, code_etape";
-	$result = Database::query($sql);
-	*/
-	$ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError'));
-	ldap_set_version($ds);
-	// Import des utilisateurs des etapes dans la session
-	if ($ds)
-	{
-		$r = false;
-		$res = ldap_handle_bind($ds, $r);
-		$UserList=array();
-		if($result !== false)
-		{
-			//while($row = Database::fetch_array($result))
-			//{
-				/*
-				$annee = $row['annee'];
-				$code_ufr = $row['code_ufr'];
-				$etape = $row['code_etape'];
-				*/
-				// LDAP Query
-				// edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr
-				//etapescommented
-				//$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,$LDAPbasedn");
-				$sr = @ ldap_search($ds, $ldap_basedn, '(uid=*)');
-				$info = ldap_get_entries($ds, $sr);
-				for ($key = 0; $key < $info["count"]; $key ++)
-				{
-					echo "<pre>";
-					print_r($info[$key]);
-					echo "</pre>";
-					$lastname = api_utf8_decode($info[$key]["sn"][0], api_get_system_encoding());
-					$firstname = api_utf8_decode($info[$key]["givenname"][0], api_get_system_encoding());
-					$email = $info[$key]["mail"][0];
-					// Get uid from dn
-					$dn_array=ldap_explode_dn($info[$key]["dn"],1);
-					$username = $dn_array[0]; // uid is first key
-					$outab[] = $info[$key]["edupersonprimaryaffiliation"][0]; // Ici "student"
-					$val = ldap_get_values_len($ds, $sr, "userPassword");
-					$password = $val[0];
-					// Pour faciliter la gestion on ajoute le code "etape-annee"
-					$official_code=$etape."-".$annee;
-					$auth_source="ldap";
-					// Pas de date d'expiration d'etudiant (a recuperer par rapport au shadow expire LDAP)
-					$expiration_date='0000-00-00 00:00:00';
-					$active=1;
-					// Ajout de l'utilisateur
-					if (UserManager::is_username_available($username)) {
-						$user_id = UserManager::create_user($firstname,$lastname,$status,$email,$username,$password,$official_code,api_get_setting('platformLanguage'),$phone,$picture_uri,$auth_source,$expiration_date,$active);
-						$UserAdd[]=$user_id;
-					} else {
-						$user = UserManager::get_user_info($username);
-						$user_id=$user['user_id'];
-						UserManager::update_user($user_id, $firstname, $lastname, $username, null, null, $email, $status, $official_code, $phone, $picture_uri, $expiration_date, $active);
-						$UserUpdate[]=$user_id;
-					}
-					$UserList[]=$user_id;
-				}
-			//}
-		}
-		if (isset($included) && ($included))
-		{
-			$message .= "> $name_session: ".count($UserAdd)." ".get_lang('Added').' '.get_lang('And').' '.count($UserUpdate).' '.get_lang('Modified').'<br/>';
-		}
-		else
-		{
-			print "> $name_session: ".count($UserAdd).get_lang('Added').' '.get_lang('And').' '.count($UserUpdate).' '.get_lang('Modified')."\n";
-		}
+    // Parse des code etape de la session
+    /*
+    $sql = "SELECT  id_session, code_etape, etape_description, code_ufr, annee
+        FROM $tbl_session_rel_etape
+        WHERE id_session='$id_session'
+        ORDER BY code_ufr, code_etape";
+    $result = Database::query($sql);
+    */
+    $ds = ldap_connect($ldap_host, $ldap_port) or die(get_lang('LDAPConnectionError'));
+    ldap_set_version($ds);
+    // Import des utilisateurs des etapes dans la session
+    if ($ds) {
+        $r        = false;
+        $res      = ldap_handle_bind($ds, $r);
+        $UserList = array();
+        if ($result !== false) {
+            //while($row = Database::fetch_array($result))
+            //{
+            /*
+            $annee = $row['annee'];
+            $code_ufr = $row['code_ufr'];
+            $etape = $row['code_etape'];
+            */
+            // LDAP Query
+            // edupersonorgunitdn=ou=12CI1,ou=2006,ou=diploma,o=Paris1,dc=univ-paris1,dc=fr
+            //etapescommented
+            //$sr = @ ldap_search($ds, "ou=people,$LDAPbasedn", "edupersonorgunitdn=ou=$etape,ou=$annee,ou=diploma,$LDAPbasedn");
+            $sr   = @ ldap_search($ds, $ldap_basedn, '(uid=*)');
+            $info = ldap_get_entries($ds, $sr);
+            for ($key = 0; $key < $info["count"]; $key++) {
+                echo "<pre>";
+                print_r($info[$key]);
+                echo "</pre>";
+                $lastname  = api_utf8_decode($info[$key]["sn"][0], api_get_system_encoding());
+                $firstname = api_utf8_decode($info[$key]["givenname"][0], api_get_system_encoding());
+                $email     = $info[$key]["mail"][0];
+                // Get uid from dn
+                $dn_array = ldap_explode_dn($info[$key]["dn"], 1);
+                $username = $dn_array[0]; // uid is first key
+                $outab[]  = $info[$key]["edupersonprimaryaffiliation"][0]; // Ici "student"
+                $val      = ldap_get_values_len($ds, $sr, "userPassword");
+                $password = $val[0];
+                // Pour faciliter la gestion on ajoute le code "etape-annee"
+                $official_code = $etape."-".$annee;
+                $auth_source   = "ldap";
+                // Pas de date d'expiration d'etudiant (a recuperer par rapport au shadow expire LDAP)
+                $expiration_date = '0000-00-00 00:00:00';
+                $active          = 1;
+                // Ajout de l'utilisateur
+                if (UserManager::is_username_available($username)) {
+                    $user_id   = UserManager::create_user(
+                        $firstname,
+                        $lastname,
+                        $status,
+                        $email,
+                        $username,
+                        $password,
+                        $official_code,
+                        api_get_setting('platformLanguage'),
+                        $phone,
+                        $picture_uri,
+                        $auth_source,
+                        $expiration_date,
+                        $active
+                    );
+                    $UserAdd[] = $user_id;
+                } else {
+                    $user    = UserManager::get_user_info($username);
+                    $user_id = $user['user_id'];
+                    UserManager::update_user(
+                        $user_id,
+                        $firstname,
+                        $lastname,
+                        $username,
+                        null,
+                        null,
+                        $email,
+                        $status,
+                        $official_code,
+                        $phone,
+                        $picture_uri,
+                        $expiration_date,
+                        $active
+                    );
+                    $UserUpdate[] = $user_id;
+                }
+                $UserList[] = $user_id;
+            }
+            //}
+        }
+        if (isset($included) && ($included)) {
+            $message .= "> $name_session: ".count($UserAdd)." ".get_lang('Added').' '.get_lang('And').' '.count(
+                $UserUpdate
+            ).' '.get_lang('Modified').'<br/>';
+        } else {
+            print "> $name_session: ".count($UserAdd).get_lang('Added').' '.get_lang('And').' '.count(
+                $UserUpdate
+            ).' '.get_lang('Modified')."\n";
+        }
 
-		// Une fois les utilisateurs importer dans la base des utilisateurs, on peux les affecter a� la session
-		$result=Database::query("SELECT course_code FROM $tbl_session_rel_course " .
-				"WHERE id_session='$id_session'");
-		$CourseList=array();
-		while($row=Database::fetch_array($result))
-		{
-			$CourseList[]=$row['course_code'];
-		}
-		foreach($CourseList as $enreg_course)
-		{
-			// On ajoute la relation entre l'utilisateur et le cours
-			foreach($UserList as $enreg_user)
-			{
-				Database::query("INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')");
-			}
-			$sql = "SELECT COUNT(id_user) as nbUsers " .
-					"FROM $tbl_session_rel_course_rel_user " .
-					"WHERE id_session='$id_session' AND course_code='$enreg_course'";
-			$rs = Database::query($sql);
-			list($nbr_users) = Database::fetch_array($rs);
-			$sql = "UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'";
-			Database::query($sql);
-		}
-		// On ajoute la relation entre l'utilisateur et la session
-		foreach($UserList as $enreg_user){
-			$sql = "INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) " .
-					"VALUES('$id_session','$enreg_user')";
-			Database::query($sql);
-		}
-		$sql = "SELECT COUNT(id_user) as nbUsers " .
-				"FROM $tbl_session_rel_user " .
-				"WHERE id_session='$id_session' AND relation_type<>".SESSION_RELATION_TYPE_RRHH."";
-		$rs = Database::query($sql);
-		list($nbr_users) = Database::fetch_array($rs);
-		$sql = "UPDATE $tbl_session SET nbr_users=$nbr_users WHERE id='$id_session'";
-		Database::query($sql);
-	}
-}
-?>
+        // Une fois les utilisateurs importer dans la base des utilisateurs, on peux les affecter a� la session
+        $result     = Database::query("SELECT c_id FROM $tbl_session_rel_course WHERE id_session='$id_session'");
+        $CourseList = array();
+        while ($row = Database::fetch_array($result)) {
+            $CourseList[] = $row['c_id'];
+        }
+        foreach ($CourseList as $courseId) {
+            // On ajoute la relation entre l'utilisateur et le cours
+            foreach ($UserList as $enreg_user) {
+                Database::query(
+                    "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,c_id,id_user) VALUES('$id_session','$courseId','$enreg_user')"
+                );
+            }
+            $sql = "SELECT COUNT(id_user) as nbUsers ".
+                "FROM $tbl_session_rel_course_rel_user ".
+                "WHERE id_session='$id_session' AND c_id='$courseId'";
+            $rs  = Database::query($sql);
+            list($nbr_users) = Database::fetch_array($rs);
+            $sql = "UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND c_id='$courseId'";
+            Database::query($sql);
+        }
+        // On ajoute la relation entre l'utilisateur et la session
+        foreach ($UserList as $enreg_user) {
+            $sql = "INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) ".
+                "VALUES('$id_session','$enreg_user')";
+            Database::query($sql);
+        }
+        $sql = "SELECT COUNT(id_user) as nbUsers ".
+            "FROM $tbl_session_rel_user ".
+            "WHERE id_session='$id_session' AND relation_type<>".SESSION_RELATION_TYPE_RRHH."";
+        $rs  = Database::query($sql);
+        list($nbr_users) = Database::fetch_array($rs);
+        $sql = "UPDATE $tbl_session SET nbr_users=$nbr_users WHERE id='$id_session'";
+        Database::query($sql);
+    }
+}

+ 1 - 6
main/admin/ldap_users_synchro.php

@@ -2,6 +2,7 @@
 /* For licensing terms, see /license.txt */
 /**
  * @package chamilo.admin
+ * @deprecated ?
  */
 /**
  * Code
@@ -28,14 +29,8 @@ $interbreadcrumb[]=array('url' => api_get_self(),"name" => get_lang('SessionsLis
 
 // Database Table Definitions
 $tbl_session						= Database::get_main_table(TABLE_MAIN_SESSION);
-$tbl_session_rel_class				= Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
-$tbl_session_rel_course				= Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
-$tbl_session_rel_course_rel_user	= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 $tbl_course							= Database::get_main_table(TABLE_MAIN_COURSE);
 $tbl_user							= Database::get_main_table(TABLE_MAIN_USER);
-$tbl_session_rel_user				= Database::get_main_table(TABLE_MAIN_SESSION_USER);
-$tbl_class							= Database::get_main_table(TABLE_MAIN_CLASS);
-$tbl_class_user						= Database::get_main_table(TABLE_MAIN_CLASS_USER);
 
 $tbl_session_rel_etape 				= "session_rel_etape";
 

+ 11 - 9
main/admin/session_course_list.php

@@ -47,9 +47,9 @@ if ($action == 'delete') {
 		}
 		$idChecked = $my_temp;
 		$idChecked="'".implode("','", $idChecked)."'";
-		Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session='$id_session' AND course_code IN($idChecked)");
+		Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session='$id_session' AND c_id IN($idChecked)");
 		$nbr_affected_rows=Database::affected_rows();
-		Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code IN($idChecked)");
+		Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND c_id IN($idChecked)");
 		Database::query("UPDATE $tbl_session SET nbr_courses=nbr_courses-$nbr_affected_rows WHERE id='$id_session'");
 	}
 	header('Location: '.api_get_self().'?id_session='.$id_session.'&sort='.$sort);
@@ -59,7 +59,9 @@ if ($action == 'delete') {
 $limit  = 20;
 $from   = $page * $limit;
 
-$sql = "SELECT code, title, nbr_users FROM $tbl_session_rel_course, $tbl_course WHERE course_code=code AND id_session='$id_session' ORDER BY $sort LIMIT $from,".($limit+1);
+$sql = "SELECT c_id, title, nbr_users FROM $tbl_session_rel_course, $tbl_course  c
+        WHERE c_id = c.id AND id_session='$id_session'
+        ORDER BY $sort LIMIT $from,".($limit+1);
 $result=Database::query($sql);
 $Courses=Database::store_result($result);
 $tool_name = api_htmlentities($session_name,ENT_QUOTES,$charset).' : '.get_lang('CourseListInSession');
@@ -80,14 +82,14 @@ $tableHeader[] = array(get_lang('NbUsers'));
 $tableHeader[] = array(get_lang('Actions'));
 
 $tableCourses = array();
-foreach($Courses as $key=>$enreg) {
+foreach ($Courses as $key=>$enreg) {
 	$course = array();
-	$course[] = '<input type="checkbox" name="idChecked[]" value="'.$enreg['code'].'">';
+	$course[] = '<input type="checkbox" name="idChecked[]" value="'.$enreg['c_id'].'">';
 	$course[] = api_htmlentities($enreg['title'],ENT_QUOTES,$charset);
-	$course[] = '<a href="session_course_user_list.php?id_session='.$id_session.'&course_code='.$enreg['code'].'">'.$enreg['nbr_users'].' '.get_lang('Users').'</a>';
-	$course[] = '<a href="'.api_get_path(WEB_COURSE_PATH).$enreg['code'].'/?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('Course')).'</a>
-                <a href="session_course_edit.php?id_session='.$id_session.'&page=session_course_list.php&course_code='.$enreg['code'].'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>
-				<a href="'.api_get_self().'?id_session='.$id_session.'&sort='.$sort.'&action=delete&idChecked[]='.$enreg['code'].'" onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
+	$course[] = '<a href="session_course_user_list.php?id_session='.$id_session.'&course_code='.$enreg['c_id'].'">'.$enreg['nbr_users'].' '.get_lang('Users').'</a>';
+	$course[] = '<a href="'.api_get_path(WEB_COURSE_PATH).$enreg['c_id'].'/?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('Course')).'</a>
+                <a href="session_course_edit.php?id_session='.$id_session.'&page=session_course_list.php&course_code='.$enreg['c_id'].'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>
+				<a href="'.api_get_self().'?id_session='.$id_session.'&sort='.$sort.'&action=delete&idChecked[]='.$enreg['c_id'].'" onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
 	$tableCourses[] = $course;
 }
 echo '<form method="post" action="'.api_get_self().'">';

+ 1 - 2
main/admin/special_exports.php

@@ -242,10 +242,9 @@ function fullexportspecial(){
                                 );
             }
             //Add tem to the zip file session course
-            $code_course = $_course['code'];
             $sql_session = "SELECT id, name, course_code FROM $tbl_session_course
                 INNER JOIN  $tbl_session ON id_session = id
-                WHERE course_code = '$code_course' ";
+                WHERE c_id = '$course_id' ";
             $query_session = Database::query($sql_session);
             while ($rows_session = Database::fetch_assoc($query_session)) {
                 $session_id = $rows_session['id'];

+ 2 - 7
main/admin/user_information.php

@@ -68,9 +68,6 @@ echo '<p>'.Display :: encrypted_mailto_link($user['mail'], $user['mail']).'</p>'
  */
 
 echo Display::page_subheader(get_lang('SessionList'));
-
-$tbl_session_course         = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
-$tbl_session_course_user    = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 $tbl_session                = Database :: get_main_table(TABLE_MAIN_SESSION);
 $tbl_course                 = Database :: get_main_table(TABLE_MAIN_COURSE);
 $tbl_user                   = Database :: get_main_table(TABLE_MAIN_USER);
@@ -99,10 +96,8 @@ if (count($sessions) > 0) {
             $row[] = $course_info['title'];
             //$row[] = $my_course['status'] == STUDENT ? get_lang('Student') : get_lang('Teacher');
 
-            $roles = api_detect_user_roles($user['user_id'], $my_course['code'], $id_session);
+            $roles = api_detect_user_roles($user['user_id'], $my_course['real_id'], $id_session);
             $row[] = api_get_roles_to_string($roles);
-
-
             $tools = '<a href="course_information.php?code='.$course_info['code'].'&id_session='.$id_session.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>'.
                     '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'</a>';
 
@@ -137,7 +132,7 @@ if (Database::num_rows($res) > 0) {
         $row[] = $course->title;
 
         //$row[] = $course->status == STUDENT ? get_lang('Student') : get_lang('Teacher');
-        $roles = api_detect_user_roles($user['user_id'], $course->code);
+        $roles = api_detect_user_roles($user['user_id'], $course->id);
         $row[] = api_get_roles_to_string($roles);
         $tools = '<a href="course_information.php?code='.$course->code.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>'.
                 '<a href="'.api_get_path(WEB_COURSE_PATH).$course->directory.'">'.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'</a>' .

+ 1 - 1
main/admin/user_list.php

@@ -163,7 +163,7 @@ function login_user($user_id) {
     }
 
     //Load $_user to be sure we clean it before logging in
-	global $uidReset, $loginFailed, $_configuration, $_user;
+	global $uidReset, $loginFailed, $_user;
 
 	$main_user_table      = Database::get_main_table(TABLE_MAIN_USER);
 	$main_admin_table     = Database::get_main_table(TABLE_MAIN_ADMIN);

+ 25 - 25
main/admin/user_move_stats.php

@@ -77,7 +77,7 @@ if (isset($_REQUEST['load_ajax'])) {
         } else {
             $course_info            = api_get_course_info_by_id($combination_result['c_id']);
             $origin_course_code     = $course_info['code'];
-            $course_id 					= $course_info['real_id'];
+            $course_id 				= $course_info['real_id'];
             $origin_session_id      = intval($combination_result['session_id']);
             $new_session_id         = intval($_REQUEST['session_id']);
 
@@ -93,7 +93,7 @@ if (isset($_REQUEST['load_ajax'])) {
 
             $course_founded = false;
             foreach ($new_course_list as $course_item) {
-                if ($origin_course_code == $course_item['code']) {
+                if ($course_id == $course_item['id']) {
                     $course_founded = true;
                 }
             }
@@ -196,7 +196,7 @@ if (isset($_REQUEST['load_ajax'])) {
                 //3. track_e_course_access
 
                 $sql = "SELECT * FROM $TBL_TRACK_E_COURSE_ACCESS
-                        WHERE course_code = '$origin_course_code' AND session_id = $origin_session_id AND user_id = $user_id ";
+                        WHERE c_id = '$course_id' AND session_id = $origin_session_id AND user_id = $user_id ";
                 $res = Database::query($sql);
                 $list = array();
                 while($row = Database::fetch_array($res,'ASSOC')) {
@@ -218,7 +218,8 @@ if (isset($_REQUEST['load_ajax'])) {
 
                 //4. track_e_lastaccess
 
-                $sql = "SELECT access_id FROM $TBL_TRACK_E_LAST_ACCESS WHERE access_cours_code = '$origin_course_code' AND access_session_id = $origin_session_id  AND access_user_id = $user_id ";
+                $sql = "SELECT access_id FROM $TBL_TRACK_E_LAST_ACCESS
+                        WHERE c_id = '$course_id' AND access_session_id = $origin_session_id  AND access_user_id = $user_id ";
                 $res = Database::query($sql);
                 $list = array();
                 while($row = Database::fetch_array($res,'ASSOC')) {
@@ -264,8 +265,8 @@ if (isset($_REQUEST['load_ajax'])) {
                           $result_message[$TBL_LP_VIEW]++;
                     } else {
                           //Getting all information of that lp_item_id
-                          $score    = Tracking::get_avg_student_score($user_id, $origin_course_code, array($data['lp_id']),$origin_session_id);
-                          $progress = Tracking::get_avg_student_progress($user_id, $origin_course_code, array($data['lp_id']),$origin_session_id);
+                          $score    = Tracking::get_avg_student_score($user_id, $course_id, array($data['lp_id']),$origin_session_id);
+                          $progress = Tracking::get_avg_student_progress($user_id, $course_id, array($data['lp_id']),$origin_session_id);
                     	  $result_message['LP_VIEW'][$data['lp_id']] = array('score' => $score, 'progress' =>$progress);
                     }
                 }
@@ -273,30 +274,29 @@ if (isset($_REQUEST['load_ajax'])) {
 
                 //CHECk DESTINY
                 if (!$update_database) {
-                        $sql = "SELECT * FROM $TBL_LP_VIEW WHERE user_id = $user_id AND session_id = $new_session_id AND c_id = $course_id";
-                        $res = Database::query($sql);
+                    $sql = "SELECT * FROM $TBL_LP_VIEW WHERE user_id = $user_id AND session_id = $new_session_id AND c_id = $course_id";
+                    $res = Database::query($sql);
 
-                        //Getting the list of LPs in the new session
-                        $lp_list = new LearnpathList($user_id, $origin_course_code, $new_session_id);
-                        $flat_list = $lp_list->get_flat_list();
+                    //Getting the list of LPs in the new session
+                    $lp_list = new LearnpathList($user_id, $origin_course_code, $new_session_id);
+                    $flat_list = $lp_list->get_flat_list();
 
-                        $list = array();
-                        while($row = Database::fetch_array($res,'ASSOC')) {
-                            //Checking if the LP exist in the new session
-                            if (in_array($row['lp_id'], array_keys($flat_list))) {
-                                $list[$row['id']] = $row;
-                            }
-                        }
-                        if (!empty($list))
-                        foreach ($list as $id=>$data) {
-                              //Getting all information of that lp_item_id
-                              $score    = Tracking::get_avg_student_score($user_id, $origin_course_code,        array($data['lp_id']), $new_session_id);
-                              $progress = Tracking::get_avg_student_progress($user_id, $origin_course_code,     array($data['lp_id']), $new_session_id);
-                              $result_message_compare['LP_VIEW'][$data['lp_id']] = array('score' => $score, 'progress' =>$progress);
+                    $list = array();
+                    while($row = Database::fetch_array($res,'ASSOC')) {
+                        //Checking if the LP exist in the new session
+                        if (in_array($row['lp_id'], array_keys($flat_list))) {
+                            $list[$row['id']] = $row;
                         }
+                    }
+                    if (!empty($list))
+                    foreach ($list as $id=>$data) {
+                          //Getting all information of that lp_item_id
+                          $score    = Tracking::get_avg_student_score($user_id, $course_id,        array($data['lp_id']), $new_session_id);
+                          $progress = Tracking::get_avg_student_progress($user_id, $course_id,     array($data['lp_id']), $new_session_id);
+                          $result_message_compare['LP_VIEW'][$data['lp_id']] = array('score' => $score, 'progress' =>$progress);
+                    }
                 }
 
-
                 //6. Agenda
 
                 //calendar_event_attachment no problems no session_id

+ 1 - 1
main/attendance/attendance_controller.php

@@ -243,7 +243,7 @@
                 $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id);
             }
         } else {
-            if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api_get_course_id())) {
+            if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api_get_course_int_id())) {
                 $data['users_presence']  = $attendance->get_users_attendance_sheet($attendance_id);
             } else {
                 $data['users_presence']  = $attendance->get_users_attendance_sheet($attendance_id, $user_id);

+ 1 - 1
main/attendance/attendance_sheet.php

@@ -11,7 +11,7 @@
 // protect a course script
 api_protect_course_script(true);
 
-if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api_get_course_id())) {
+if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api_get_course_int_id())) {
 
     $param_gradebook = '';
     if (isset($_SESSION['gradebook'])) {

+ 3 - 3
main/auth/courses_controller.php

@@ -171,7 +171,6 @@ class CoursesController
      *
      */
     public function subscribe_user($course_code, $search_term, $category_code) {
-        $data = array();
         $result = $this->model->subscribe_user($course_code);
         if (!$result) {
             $error = get_lang('CourseRegistrationCodeIncorrect');
@@ -278,8 +277,9 @@ class CoursesController
      * render to listing view
      * @param string    Course code
      */
-    public function unsubscribe_user_from_course($course_code, $search_term = null, $category_code = null) {
-        $result = $this->model->remove_user_from_course($course_code);
+    public function unsubscribe_user_from_course($courseCode, $search_term = null, $category_code = null) {
+        $courseInfo = api_get_course_info($courseCode);
+        $result = $this->model->remove_user_from_course($courseInfo['real_id']);
         $message = '';
         if ($result) { $message = get_lang('YouAreNowUnsubscribed'); }
         $action = 'sortmycourses';

+ 5 - 10
main/auth/ldap/authldap.php

@@ -550,41 +550,36 @@ function ldap_add_user_to_session($UserList, $id_session) {
 
     // Database Table Definitions
     $tbl_session                        = Database::get_main_table(TABLE_MAIN_SESSION);
-    $tbl_session_rel_class                = Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
     $tbl_session_rel_course                = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
     $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-    $tbl_course                            = Database::get_main_table(TABLE_MAIN_COURSE);
-    $tbl_user                            = Database::get_main_table(TABLE_MAIN_USER);
     $tbl_session_rel_user                = Database::get_main_table(TABLE_MAIN_SESSION_USER);
-    $tbl_class                            = Database::get_main_table(TABLE_MAIN_CLASS);
-    $tbl_class_user                        = Database::get_main_table(TABLE_MAIN_CLASS_USER);
 
     $id_session = (int) $id_session;
     // Once users are imported in the users base, we can assign them to the session
-    $result=Database::query("SELECT course_code FROM $tbl_session_rel_course " .
+    $result=Database::query("SELECT c_id FROM $tbl_session_rel_course " .
             "WHERE id_session='$id_session'");
     $CourseList=array();
     while ($row=Database::fetch_array($result)) {
-        $CourseList[]=$row['course_code'];
+        $CourseList[]=$row['c_id'];
     }
     foreach ($CourseList as $enreg_course) {
         foreach ($UserList as $enreg_user) {
             $enreg_user = (int) $enreg_user;
             Database::query("INSERT IGNORE ".
               " INTO $tbl_session_rel_course_rel_user ".
-              "(id_session,course_code,id_user) VALUES ".
+              "(id_session,c_id,id_user) VALUES ".
               "('$id_session','$enreg_course','$enreg_user')");
         }
         $sql = "SELECT COUNT(id_user) as nbUsers ".
                " FROM $tbl_session_rel_course_rel_user " .
                " WHERE id_session='$id_session' ".
-               " AND course_code='$enreg_course'";
+               " AND c_id='$enreg_course'";
         $rs = Database::query($sql);
         list($nbr_users) = Database::fetch_array($rs);
         Database::query("UPDATE $tbl_session_rel_course  ".
                " SET nbr_users=$nbr_users " .
                " WHERE id_session='$id_session' ".
-               " AND course_code='$enreg_course'");
+               " AND c_id='$enreg_course'");
     }
     foreach ($UserList as $enreg_user) {
         $enreg_user = (int) $enreg_user;

+ 2 - 2
main/auth/my_progress.php

@@ -67,14 +67,14 @@ if (!empty($course_user_list)) {
         if ($count == $last_item) {
             $last = '<a href="#'.$login.'">'.get_lang('Last').'</a>';
         }
-        $course_info = api_get_course_info($result['course_code']);
+        $course_info = api_get_course_info_by_id($result['real_id']);
         $course_image = '<img src="'.$course_info['course_image'].'">';
         $dates .= '<li><a href="#'.$login.'">'.api_get_utc_datetime($login).'</a></li>';
         $issues .= '<li id ="'.$login.'">
                         <div class="row">
                             <div class="span2"><div class="thumbnail">'.$course_image.'</div>
                         </div>
-                        <div class="span3">'.sprintf(get_lang('YouHaveEnteredTheCourseXInY'), $result['course_code'], api_convert_and_format_date($login, DATE_FORMAT_LONG)).'</div>
+                        <div class="span3">'.sprintf(get_lang('YouHaveEnteredTheCourseXInY'), $course_info['code'], api_convert_and_format_date($login, DATE_FORMAT_LONG)).'</div>
                     </li>';
         $count++;
     }

+ 2 - 2
main/auth/shibboleth/lib/shibboleth_session.class.php

@@ -57,8 +57,8 @@ class ShibbolethSession
         /* This must be set for local.inc.php to register correctly the global variables in session
          * This is BAD. Logic should be migrated into a function and stop relying on global variables.
          */
-        global $_uid, $is_allowedCreateCourse, $is_platformAdmin, $_real_cid, $_courseUser, $is_courseAdmin;
-        global $is_courseMember, $is_courseTutor, $is_courseCoach, $is_allowed_in_course, $is_sessionAdmin, $_gid;
+        global $_uid, $is_allowedCreateCourse, $_real_cid, $_courseUser;
+        global $is_courseMember, $is_courseTutor, $is_allowed_in_course, $_gid;
         $_uid = $uid;
 
         //is_allowedCreateCourse

+ 7 - 11
main/calendar/agenda.inc.php

@@ -991,7 +991,7 @@ function get_course_users()
 				FROM $tbl_session_course_user AS session_course_user
 				INNER JOIN $tbl_user u ON u.user_id = session_course_user.id_user
 				WHERE id_session = ".$session_id."
-				AND course_code  = '".api_get_course_id()."'";
+				AND c_id  = '".api_get_course_int_id()."'";
 
         $result = Database::query($sql);
         while ($user = Database::fetch_array($result)) {
@@ -1009,9 +1009,7 @@ function get_course_users()
  */
 function get_course_groups()
 {
-    $group_list = array();
     $group_list = CourseManager::get_group_list_of_course(api_get_course_id(), api_get_session_id());
-
     return $group_list;
 }
 
@@ -1215,7 +1213,7 @@ function construct_selected_select_form($group_list = null, $user_list = null, $
  */
 function store_new_agenda_item()
 {
-    global $_course;
+    $_course = api_get_course_info();
     $TABLEAGENDA = Database::get_course_table(TABLE_AGENDA);
     $t_agenda_repeat = Database::get_course_Table(TABLE_AGENDA_REPEAT);
 
@@ -1683,7 +1681,7 @@ function load_edit_users($tool, $id)
  */
 function change_visibility($tool, $id, $visibility)
 {
-    global $_course;
+    $_course = api_get_course_info();
     $TABLE_ITEM_PROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY);
     $tool = Database::escape_string($tool);
     $id = Database::escape_string($id);
@@ -1931,7 +1929,7 @@ function save_edit_agenda_item($id, $title, $content, $start_date, $end_date)
  */
 function delete_agenda_item($id)
 {
-    global $_course;
+    $_course = api_get_course_info();
     $id = Database::escape_string($id);
     if (api_is_allowed_to_edit(false, true) OR (api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous())
     ) {
@@ -2269,7 +2267,6 @@ function display_one_agenda_item($agenda_id)
     global $TABLE_ITEM_PROPERTY;
     global $select_month, $select_year;
     global $DaysShort, $DaysLong, $MonthsLong;
-    global $is_courseAdmin;
     global $dateFormatLong, $timeNoSecFormat, $charset;
 
     // getting the name of the groups
@@ -4686,7 +4683,7 @@ function agenda_add_item(
  */
 function delete_attachment_file($id_attach)
 {
-    global $_course;
+    $_course = api_get_course_info();
     $agenda_table_attachment = Database::get_course_table(TABLE_AGENDA_ATTACHMENT);
     $id_attach = intval($id_attach);
 
@@ -4715,7 +4712,7 @@ function delete_attachment_file($id_attach)
 function add_agenda_attachment_file($file_comment, $last_id)
 {
 
-    global $_course;
+    $_course = api_get_course_info();
     $agenda_table_attachment = Database::get_course_table(TABLE_AGENDA_ATTACHMENT);
     $last_id = intval($last_id);
     // Storing the attachments
@@ -4776,8 +4773,7 @@ function add_agenda_attachment_file($file_comment, $last_id)
  */
 function edit_agenda_attachment_file($file_comment, $agenda_id, $id_attach)
 {
-
-    global $_course;
+    $_course = api_get_course_info();
     $agenda_table_attachment = Database::get_course_table(TABLE_AGENDA_ATTACHMENT);
     // Storing the attachments
 

+ 0 - 1
main/calendar/agenda.php

@@ -165,7 +165,6 @@ $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
 $tbl_courseUser = Database::get_main_table(TABLE_MAIN_COURSE_USER);
 $tbl_group = Database::get_course_table(TABLE_GROUP);
 $tbl_groupUser = Database::get_course_table(TABLE_GROUP_USER);
-$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
 /*   			ACCESS RIGHTS */
 // permission stuff - also used by loading from global in agenda.inc.php

+ 0 - 2
main/calendar/allagendas.php

@@ -372,9 +372,7 @@ if (isset ($_user['user_id'])) {
 				echo '<h1>'.$sessions[$session_id]['name'].'</h1>';
 			}
 			if (is_array($course_list) && count($course_list) > 0) {
-
 				$agendaitems = get_agenda_items_by_course_list($course_list, $month, $year, $session_id);
-				//$agendaitems = get_global_agenda_items($agendaitems, $day, $month, $year, $week, "month_view");
 				display_mymonthcalendar_2($agendaitems, $month, $year, array(), $monthName, $session_id);
 			} else {
 				Display::display_warning_message(get_lang('PleaseSelectACourseOrASessionInTheLeftColumn'));

+ 1 - 1
main/calendar/download.php

@@ -37,7 +37,7 @@ if (empty($course_id) || empty($doc_url)) {
     api_not_allowed();
 }
 
-$is_user_is_subscribed = CourseManager::is_user_subscribed_in_course($user_id, $course_info['code'], true, $session_id);
+$is_user_is_subscribed = CourseManager::is_user_subscribed_in_course($user_id, $course_id, true, $session_id);
 
 if (!api_is_allowed_to_edit() && !$is_user_is_subscribed) {
     api_not_allowed();

+ 1 - 1
main/calendar/myagenda.inc.php

@@ -556,7 +556,7 @@ function get_all_courses_of_user() {
                                   c.db_name db, c.directory dir, '5' as status
                             FROM $TABLECOURS c, $tbl_session_course_user srcu
                             WHERE srcu.id_user='".api_get_user_id()."'
-                            AND c.code=srcu.course_code
+                            AND c.id = srcu.c_id
                             UNION
                            SELECT c.code k, c.visual_code  vc, c.title i, c.tutor_name t,
                                   c.db_name db, c.directory dir, cru.status status

+ 2 - 2
main/chat/chat_chat.php

@@ -30,7 +30,7 @@ if (!empty($course)) {
     list($pseudo_user) = Database::fetch_row($result);
 
     $isAllowed = !(empty($pseudo_user) || !$_cid);
-    $isMaster = (bool)$is_courseAdmin;
+    $isMaster = (bool)api_is_course_admin();
 
     $date_now = date('Y-m-d');
     $basepath_chat = '';
@@ -203,7 +203,7 @@ if (!empty($course)) {
 <a name="bottom" style="text-decoration:none;">&nbsp;</a>
 
 <?php
-    if ($isMaster || $is_courseCoach) {
+    if ($isMaster || api_is_course_coach()) {
         $rand = mt_rand(1, 1000);
         echo '<div style="margin-left: 5px;">';
         echo '<a href="'.api_get_self(

+ 1 - 1
main/chat/chat_hidden.php

@@ -29,7 +29,7 @@ $result = Database::query($query);
 list($pseudo_user) = Database::fetch_row($result);
 
 $isAllowed = !(empty($pseudo_user) || !$_cid);
-$isMaster = (bool)$is_courseAdmin;
+$isMaster = (bool)api_is_course_admin();
 
 $date_now = date('Y-m-d');
 

+ 1 - 1
main/chat/chat_message.php

@@ -76,7 +76,7 @@ if (!empty($course) && !empty($_user['user_id'])) {
     list($pseudo_user) = Database::fetch_row($result);
 
     $isAllowed = !(empty($pseudo_user) || !$_cid);
-    $isMaster = (bool)$is_courseAdmin;
+    $isMaster = (bool)api_is_course_admin();
 
     $firstname = Database::result($result, 0, 'firstname');
     $lastname = Database::result($result, 0, 'lastname');

+ 8 - 7
main/chat/chat_whoisonline.php

@@ -16,7 +16,7 @@ require_once '../inc/global.inc.php';
 
 $course = api_get_course_id();
 $group_id = intval($_SESSION['_gid']);
-$session_id = intval($_SESSION['id_session']);
+$session_id = api_get_session_id();
 $session_condition = api_get_session_condition($session_id);
 $group_condition = " AND to_group_id = '$group_id'";
 
@@ -44,7 +44,7 @@ if (!empty($course)) {
 	list($pseudo_user) = Database::fetch_array($result);
 
 	$isAllowed = !(empty($pseudo_user) || !$_cid);
-	$isMaster = (bool)$is_courseAdmin;
+	$isMaster = api_is_course_admin();
 
 	$date_inter = date('Y-m-d H:i:s', time() - 120);
 
@@ -67,10 +67,11 @@ if (!empty($course)) {
 		// select learners
 		$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_session_course_user t3
 		          WHERE
-		          t2.c_id = $course_id AND
-		          t1.user_id=t2.user_id AND t3.id_user=t2.user_id AND
-		          t3.id_session = '".$session_id."' AND
-		          t3.c_id = '".$course_id."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
+                      t2.c_id = $course_id AND
+                      t1.user_id=t2.user_id AND t3.id_user=t2.user_id AND
+                      t3.id_session = '".$session_id."' AND
+                      t3.c_id = '".$course_id."' AND t2.last_connection>'".$date_inter."' $extra_condition
+		          ORDER BY username";
 		$result = Database::query($query);
 		while ($learner = Database::fetch_array($result)) {
 			$users[$learner['user_id']] = $learner;
@@ -94,7 +95,7 @@ if (!empty($course)) {
 				t1.user_id=t2.user_id
 				AND t3.id_user=t2.user_id AND t3.status=2
 				AND t3.id_session = '".$session_id."'
-				AND t3.course_code = '".$_course['sysCode']."'
+				AND t3.c_id = '".api_get_course_int_id()."'
 				AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
 
 		$result = Database::query($query);

+ 2 - 2
main/course_home/3column.php

@@ -165,7 +165,7 @@ elseif (isset($update) && $update) {
 
 // Work with data post askable by admin of  course
 
-if ($is_platformAdmin && api_is_allowed_to_edit(null, true) && !api_is_coach()) {
+if (api_is_platform_admin() && api_is_allowed_to_edit(null, true) && !api_is_coach()) {
 	// Show message to confirm that a tools must be hide  from aivailable tools
 	// visibility 0,1->2
 	if ($askDelete) {
@@ -219,7 +219,7 @@ if (api_is_allowed_to_edit(null, true) && !api_is_coach()) {
 
 /*	TOOLS FOR PLATFORM ADMIN ONLY */
 
-if ($is_platformAdmin && api_is_allowed_to_edit(null, true) && !api_is_coach()) {
+if (api_is_platform_admin() && api_is_allowed_to_edit(null, true) && !api_is_coach()) {
 	$content .=  "<tr>"."<td colspan=\"6\">".
 		"<hr noshade size=\"1\" />".
 		"</td>"."</tr>\n".

+ 1 - 1
main/course_home/activity.php

@@ -18,7 +18,6 @@ $course_id = api_get_course_int_id();
 $session_id = api_get_session_id();
 
 //	MAIN CODE
-
 if (api_is_allowed_to_edit(null, true)) {
 	// HIDE
 	if (!empty($_GET['hide'])) {
@@ -73,6 +72,7 @@ if (api_is_allowed_to_edit(null, true) && !api_is_coach()) {
         </div>';
 	}
     $my_list = CourseHome::get_tools_category(TOOL_AUTHORING);
+
 	$items = CourseHome::show_tools_category($my_list);
     $content .= return_block(get_lang('Authoring'),  $items);
 

+ 3 - 67
main/course_home/course_home.php

@@ -46,70 +46,6 @@ require_once dirname(__FILE__).'/../inc/global.inc.php';
 //unset($_SESSION['oLP']);
 //unset($_SESSION['lpobject']);
 
-$htmlHeadXtra[] ='<script>
-$(document).ready(function() {
-	$(".make_visible_and_invisible").attr("href", "javascript:void(0);");
-	$(".make_visible_and_invisible > img").click(function () {
-
-		make_visible = "visible.gif";
-		make_invisible = "invisible.gif";
-		path_name = $(this).attr("src");
-		list_path_name = path_name.split("/");
-		image_link = list_path_name[list_path_name.length - 1];
-		tool_id = $(this).attr("id");
-		tool_info = tool_id.split("_");
-		my_tool_id = tool_info[1];
-
-		$.ajax({
-			contentType: "application/x-www-form-urlencoded",
-			beforeSend: function(objeto) {
-				$(".normal-message").show();
-				$("#id_confirmation_message").hide();
-			},
-			type: "GET",
-			url: "'.api_get_path(WEB_AJAX_PATH).'course_home.ajax.php?'.api_get_cidreq().'&a=set_visibility",
-			data: "id=" + my_tool_id + "&sent_http_request=1",
-			success: function(data) {
-				eval("var info=" + data);
-				new_current_tool_image = info.image;
-				new_current_view = "'.api_get_path(WEB_IMG_PATH).'" + info.view;
-				//eyes
-				$("#" + tool_id).attr("src", new_current_view);
-				//tool
-				$("#toolimage_" + my_tool_id).attr("src", new_current_tool_image);
-				//clase
-				$("#tooldesc_" + my_tool_id).attr("class", info.tclass);
-				$("#istooldesc_" + my_tool_id).attr("class", info.tclass);
-
-				if (image_link == "visible.gif") {
-					$("#" + tool_id).attr("alt", "'.get_lang('Activate', '').'");
-					$("#" + tool_id).attr("title", "'.get_lang('Activate', '').'");
-				} else {
-					$("#" + tool_id).attr("alt", "'.get_lang('Deactivate', '').'");
-					$("#" + tool_id).attr("title", "'.get_lang('Deactivate', '').'");
-				}
-				if (info.message == "is_active") {
-					message = "'.get_lang('ToolIsNowVisible', '').'";
-				} else {
-					message = "'.get_lang('ToolIsNowHidden', '').'";
-				}
-				$(".normal-message").hide();
-				$("#id_confirmation_message").html(message);
-				$("#id_confirmation_message").show();
-			}
-		});
-	});
-});
-
-/* toogle for post-it in course home */
-$(function() {
-	$(".thematic-postit-head").click(function() {
-		$(".thematic-postit-center").slideToggle("fast");
-	});
-});
-
-</script>';
-
 // The section for the tabs
 $this_section = SECTION_COURSES;
 
@@ -129,7 +65,6 @@ define('TOOL_STUDENT_VIEW',              'toolstudentview');
 define('TOOL_ADMIN_VISIBLE',             'tooladminvisible');
 
 $user_id 		= api_get_user_id();
-//$course_code 	= api_get_course_id();
 $show_message = '';
 
 //Deleting group session
@@ -168,7 +103,7 @@ if (!isset($coursesAlreadyVisited[$course_code])) {
 
 $show_autolaunch_exercise_warning = false;
 
-//Exercise autolaunch
+//Exercise auto-launch
 $auto_launch = api_get_course_setting('enable_exercise_auto_launch');
 if (!empty($auto_launch)) {
     $session_id = api_get_session_id();
@@ -224,7 +159,8 @@ if (!empty($auto_launch)) {
         }
     }
 }
-/*Auto launch code */
+
+/* Auto launch code */
 $show_autolaunch_lp_warning = false;
 $auto_launch = api_get_course_setting('enable_lp_auto_launch');
 if (!empty($auto_launch)) {

+ 0 - 2
main/course_info/download.lib.php

@@ -13,8 +13,6 @@
 //require '../inc/global.inc.php';
 
 function create_backup_is_admin($_cid) {
-
-	$this_section = SECTION_COURSES;
 	if (isset($_GET['session']) && $_GET['session']) {
 		$archive_path = api_get_path(SYS_ARCHIVE_PATH);
 		$_cid = true;

+ 2 - 3
main/course_info/infocours.php

@@ -29,7 +29,7 @@ define('MODULE_HELP_NAME', 'Settings');
 define('COURSE_CHANGE_PROPERTIES', 'COURSE_CHANGE_PROPERTIES');
 
 $currentCourseRepository    = $_course['path'];
-$is_allowedToEdit 			= $is_courseAdmin || $is_platformAdmin;
+$is_allowedToEdit 			= api_is_course_admin() || api_is_platform_admin();
 
 $course_code 				= api_get_course_id();
 $courseId = api_get_course_int_id();
@@ -91,7 +91,7 @@ while ($a_titulars = Database::fetch_array($q_result_titulars)) {
         $s_selected_tutor = api_get_person_name($s_firstname, $s_lastname);
     }
     $s_disabled_select_titular = '';
-    if (!$is_courseAdmin) {
+    if (!api_is_course_admin()) {
         $s_disabled_select_titular = 'disabled=disabled';
     }
     $a_profs[api_get_person_name($s_firstname, $s_lastname)] = api_get_person_name($s_lastname, $s_firstname).' ('.$s_username.')';
@@ -331,7 +331,6 @@ $group[]=$form->createElement('radio', 'allow_fast_exercise_edition', get_lang('
 $form->addGroup($group, '', array(get_lang("AllowFastExerciseEdition")), '');
 
 //Auto-launch Exercise LP
-$form->addElement('html', '<div><h3>'.Display::return_icon('quiz.png', get_lang('ConfigExercise'),'',ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('ConfigExercise')).'</h3><div>');
 $group = array();
 $group[]=$form->createElement('radio', 'enable_exercise_auto_launch', get_lang('ExerciseAutoLaunch'), get_lang('RedirectToExercise'), 1);
 $group[]=$form->createElement('radio', 'enable_exercise_auto_launch', get_lang('ExerciseAutoLaunch'), get_lang('RedirectToTheExerciseList'), 2);

+ 3 - 2
main/course_info/legal.php

@@ -19,6 +19,7 @@ if (empty($course_code)) {
 }
 
 $course_info = CourseManager::get_course_information($course_code);
+$courseId = $course_info['real_id'];
 $course_legal = $course_info['legal'];
 
 // Build the form
@@ -51,7 +52,7 @@ if (api_check_user_access_to_legal($course_info['visibility']) && Session::read(
 $url = api_get_course_url($course_code, $session_id);
 
 if (empty($session_id)) {
-    if (CourseManager::is_user_subscribed_in_course($user_id, $course_code) || api_check_user_access_to_legal($course_info['visibility'])) {
+    if (CourseManager::is_user_subscribed_in_course($user_id, $courseId) || api_check_user_access_to_legal($course_info['visibility'])) {
         $user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_info);
         if ($user_accepted_legal || $user_pass_open_course) {
             //Redirect to course home
@@ -67,7 +68,7 @@ if (empty($session_id)) {
         header('Location: '.$url);
     }
 
-    $user_session_status = SessionManager::get_user_status_in_course_session($user_id, $course_code, $session_id);
+    $user_session_status = SessionManager::get_user_status_in_course_session($user_id, $courseId, $session_id);
 
     if (isset($user_session_status) || api_check_user_access_to_legal($course_info['visibility'])) {
         $user_accepted_legal = CourseManager::is_user_accepted_legal($user_id, $course_info, $session_id);

+ 5 - 6
main/coursecopy/classes/CourseArchiver.class.php

@@ -12,7 +12,7 @@ require_once 'Course.class.php';
  *
  * @todo Use archive-folder of Chamilo?
  */
-class CourseArchiver 
+class CourseArchiver
 {
 
     /**
@@ -70,10 +70,10 @@ class CourseArchiver
         if ($res === false) {
             error_log(__FILE__ . ' line ' . __LINE__ . ': ' . (ini_get('track_errors') != false ? $php_errormsg : 'error not recorded because track_errors is off in your php.ini'), 0);
         }
-        
+
         //Documents
-        
-        // Copy all documents to the temp-dir        
+
+        // Copy all documents to the temp-dir
         if (is_array($course->resources[RESOURCE_DOCUMENT])) {
             foreach ($course->resources[RESOURCE_DOCUMENT] as $id => $document) {
                 if ($document->file_type == DOCUMENT) {
@@ -105,7 +105,7 @@ class CourseArchiver
             FileManager::copyDirTo($course->path . 'upload/calendar/', $doc_dir, false);
         }
 
-        //Copy learningpath author image		
+        //Copy learningpath author image
         if (is_array($course->resources[RESOURCE_LEARNPATH])) {
             $doc_dir = dirname($backup_dir . '/upload/learning_path/');
             @mkdir($doc_dir, $perm_dirs, true);
@@ -133,7 +133,6 @@ class CourseArchiver
      *
      */
     static function get_available_backups($user_id = null) {
-        global $dateTimeFormatLong;
         $backup_files = array();
         $dirname = api_get_path(SYS_ARCHIVE_PATH) . '';
         if ($dir = opendir($dirname)) {

+ 6 - 5
main/coursecopy/classes/CourseBuilder.class.php

@@ -60,7 +60,7 @@ class CourseBuilder {
 	 * Create a new CourseBuilder
 	 */
 	function __construct($type='', $course = null) {
-		global $_course;
+        $_course = api_get_course_info();
 
 		if (!empty($course['official_code'])){
 			$_course = $course;
@@ -915,10 +915,11 @@ class CourseBuilder {
 			$this->course->path = api_get_path(SYS_COURSE_PATH).$_course['directory'].'/';
 			$this->course->backup_path = api_get_path(SYS_COURSE_PATH).$_course['directory'];
 			$this->course->encoding = api_get_system_encoding(); //current platform encoding
-			$code_course = $_course['code'];
-			$sql_session = "SELECT id, name, course_code  FROM $tbl_session_course
-				INNER JOIN  $tbl_session ON id_session = id
-				WHERE course_code = '$code_course' ";
+			//$code_course = $_course['code'];
+            $courseId = $_course['real_id'];
+			$sql_session = "SELECT id, name, c_id
+                FROM $tbl_session_course INNER JOIN  $tbl_session ON id_session = id
+				WHERE c_id = '$courseId' ";
 			$query_session = Database::query($sql_session);
 			while ($rows_session = Database::fetch_assoc($query_session)) {
 				$session = new CourseSession($rows_session['id'], $rows_session['name']);

+ 46 - 94
main/coursecopy/copy_course_session.php

@@ -45,17 +45,13 @@ $nameTools = get_lang('CopyCourse');
 $interbreadcrumb[] = array('url' => '../admin/index.php', 'name' => get_lang('PlatformAdmin'));
 
 // Database Table Definitions
-$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
-$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
 $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
 $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
 
 /* FUNCTIONS */
 
-function make_select_session_list($name, $sessions, $attr = array())
-{
-
+function make_select_session_list($name, $sessions, $attr = array()) {
     $attrs = '';
     if (count($attr) > 0) {
         foreach ($attr as $key => $value) {
@@ -85,11 +81,9 @@ function make_select_session_list($name, $sessions, $attr = array())
     return $output;
 }
 
-function display_form()
-{
+function display_form() {
     $html = '';
     $sessions = SessionManager::get_sessions_list(null, array('name ASC'));
-
     // Actions
     $html .= '<div class="actions">';
     // Link back to the documents overview
@@ -144,8 +138,7 @@ function display_form()
     echo $html;
 }
 
-function search_courses($id_session, $type)
-{
+function search_courses($id_session, $type) {
     global $tbl_course, $tbl_session_rel_course, $course_list;
     $xajax_response = new XajaxResponse();
     $select_destination = '';
@@ -158,7 +151,7 @@ function search_courses($id_session, $type)
             $course_list = SessionManager::get_course_list_by_session_id($id_session);
 
             $temp_course_list = array();
-            $return .= '<select id="origin" name="SessionCoursesListOrigin[]" style="width:380px;" onclick="javascript: checkSelected(this.id,\'copy_option_2\',\'title_option2\',\'destination\');">';
+            $return = '<select id="origin" name="SessionCoursesListOrigin[]" style="width:380px;" onclick="javascript: checkSelected(this.id,\'copy_option_2\',\'title_option2\',\'destination\');">';
 
             foreach ($course_list as $course) {
                 $temp_course_list[] = "'{$course['code']}'";
@@ -221,65 +214,28 @@ function search_courses($id_session, $type)
         } else {
             //Left Select - Destination
 
-            $list_courses_origin = implode(',', $_SESSION['course_list']);
-            $session_origin = $_SESSION['session_origin'];
-
             // Search courses by id_session where course codes is include en courses list destination
             $sql = "SELECT c.code, c.visual_code, c.title, src.id_session
 					FROM $tbl_course c, $tbl_session_rel_course src
-					WHERE src.course_code = c.code
+					WHERE src.c_id = c.id
 					AND src.id_session = '".intval($id_session)."'";
             //AND c.code IN ($list_courses_origin)";
             $rs = Database::query($sql);
 
             $course_list_destination = array();
-            //onmouseover="javascript: this.disabled=true;" onmouseout="javascript: this.disabled=false;"
-            $return .= '<select id="destination" name="SessionCoursesListDestination[]" style="width:380px;" >';
+            $return = '<select id="destination" name="SessionCoursesListDestination[]" style="width:380px;" >';
             while ($course = Database :: fetch_array($rs)) {
-                $course_list_destination[] = $course['code'];
+                $course_list_destination[] = $course['c_id'];
                 $course_title = str_replace("'", "\'", $course_title);
-                $return .= '<option value="'.$course['code'].'" title="'.@htmlspecialchars(
-                    $course['title'].' ('.$course['visual_code'].')',
-                    ENT_QUOTES,
-                    api_get_system_encoding()
-                ).'">'.$course['title'].' ('.$course['visual_code'].')</option>';
+                $return .= '<option value="'.$course['c_id'].'" title="'.@htmlspecialchars($course['title'].' ('.$course['visual_code'].')',ENT_QUOTES,api_get_system_encoding()).'">'.$course['title'].' ('.$course['visual_code'].')</option>';
             }
             $return .= '</select>';
             $_SESSION['course_list_destination'] = $course_list_destination;
 
             // Send response by ajax
             $xajax_response->addAssign('ajax_list_courses_destination', 'innerHTML', api_utf8_encode($return));
-            /*
-                        // Disable option from session courses list origin where if no the same con the destination
-                        $sql = "SELECT c.code, c.visual_code, c.title, src.id_session
-                                FROM $tbl_course c, $tbl_session_rel_course src
-                                WHERE src.course_code = c.code
-                                AND src.id_session = '".intval($session_origin)."'";
-                        $result = Database::query($sql);
-
-                        $return_option_disabled = '<select id="origin" name="SessionCoursesListOrigin[]" multiple="multiple" size="20" style="width:320px;" onclick="javascript: checkSelected(this.id,\'copy_option_2\',\'title_option2\',\'destination\');">';
-                        while ($cours = Database :: fetch_array($result)) {
-                            $course_title=str_replace("'", "\'", $course_title);
-                            if (count($course_list_destination) > 0) {
-                                if (!in_array($cours['code'], $course_list_destination)) {
-                                    $return_option_disabled .= '<optgroup style="color:#ccc" label="'.$cours['title'].' ('.$cours['visual_code'].')" >'.$cours['title'].' ('.$cours['visual_code'].')</optgroup>';
-                                } else {
-                                    $return_option_disabled .= '<option value="'.$cours['code'].'" title="'.@htmlspecialchars($cours['title'].' ('.$cours['visual_code'].')', ENT_QUOTES, api_get_system_encoding()).'">'.$cours['title'].' ('.$cours['visual_code'].')</option>';
-                                }
-                            } else {
-                                if (empty($id_session)) {
-                                    $return_option_disabled .= '<option value="'.$cours['code'].'" title="'.@htmlspecialchars($cours['title'].' ('.$cours['visual_code'].')', ENT_QUOTES, api_get_system_encoding()).'">'.$cours['title'].' ('.$cours['visual_code'].')</option>';
-                                } else {
-                                    $return_option_disabled .= '<optgroup style="color:#ccc" label="'.$cours['title'].'('.$cours['visual_code'].')" >'.$cours['title'].' ('.$cours['visual_code'].')</optgroup>';
-                                }
-                            }
-                        }
-                        $return_option_disabled .= '</select>';*/
-            // Send response by ajax
-            //$xajax_response -> addAssign('ajax_list_courses_origin', 'innerHTML', api_utf8_encode($return_option_disabled));
         }
     }
-
     return $xajax_response;
 }
 
@@ -288,45 +244,43 @@ $xajax->processRequests();
 /* HTML head extra */
 
 $htmlHeadXtra[] = $xajax->getJavascript(api_get_path(WEB_LIBRARY_PATH).'xajax/');
-$htmlHeadXtra[] = '<script type="text/javascript">
-
-						function checkSelected(id_select,id_radio,id_title,id_destination) {
-						   var num=0;
-						   obj_origin = document.getElementById(id_select);
-						   obj_destination = document.getElementById(id_destination);
-
-						   for (x=0;x<obj_origin.options.length;x++) {
-						      if (obj_origin.options[x].selected) {
-						      		if (obj_destination.options.length > 0) {
-										for (y=0;y<obj_destination.options.length;y++) {
-												if (obj_origin.options[x].value == obj_destination.options[y].value) {
-													obj_destination.options[y].selected = true;
-												}
-									   	}
-									}
-						      		num++;
-						      	} else {
-						      		if (obj_destination.options.length > 0) {
-										for (y=0;y<obj_destination.options.length;y++) {
-												if (obj_origin.options[x].value == obj_destination.options[y].value) {
-													obj_destination.options[y].selected = false;
-												}
-									   		}
-									}
-						      	}
-						   }
-
-						   if (num == 1) {
-						      document.getElementById(id_radio).disabled = false;
-						      document.getElementById(id_title).style.color = \'#000\';
-						   } else {
-						   	  document.getElementById(id_radio).disabled = true;
-						      document.getElementById(id_title).style.color = \'#aaa\';
-						   }
-
-						}
-</script>';
+$htmlHeadXtra[] = '<script>
+
+function checkSelected(id_select,id_radio,id_title,id_destination) {
+    var num=0;
+    obj_origin = document.getElementById(id_select);
+    obj_destination = document.getElementById(id_destination);
+
+    for (x=0;x<obj_origin.options.length;x++) {
+      if (obj_origin.options[x].selected) {
+            if (obj_destination.options.length > 0) {
+                for (y=0;y<obj_destination.options.length;y++) {
+                        if (obj_origin.options[x].value == obj_destination.options[y].value) {
+                            obj_destination.options[y].selected = true;
+                        }
+                }
+            }
+            num++;
+        } else {
+            if (obj_destination.options.length > 0) {
+                for (y=0;y<obj_destination.options.length;y++) {
+                        if (obj_origin.options[x].value == obj_destination.options[y].value) {
+                            obj_destination.options[y].selected = false;
+                        }
+                    }
+            }
+        }
+    }
 
+    if (num == 1) {
+      document.getElementById(id_radio).disabled = false;
+      document.getElementById(id_title).style.color = \'#000\';
+    } else {
+      document.getElementById(id_radio).disabled = true;
+      document.getElementById(id_title).style.color = \'#aaa\';
+    }
+}
+</script>';
 
 Display::display_header($nameTools);
 
@@ -335,13 +289,10 @@ if (isset($_POST['copy_only_session_items']) && $_POST['copy_only_session_items'
     $with_base_content = false;
 }
 
-
 /*  MAIN CODE  */
 
 if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (isset($_POST['copy_option']) && $_POST['copy_option'] == 'full_copy')) {
-
     $destination_course = $origin_course = $destination_session = $origin_session = '';
-
     if (isset ($_POST['action']) && $_POST['action'] == 'course_select_form') {
 
         $destination_course = $_POST['destination_course'];
@@ -352,7 +303,6 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
         $course = CourseSelectForm :: get_posted_course('copy_course', $origin_session, $origin_course);
 
         $cr = new CourseRestorer($course);
-        //$cr->set_file_option($_POST['same_file_name_option']);
         $cr->restore($destination_course, $destination_session);
         Display::display_confirmation_message(get_lang('CopyFinished'));
         display_form();
@@ -385,6 +335,8 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
                 //first element of the array
                 $course_code = $arr_course_origin[0];
                 $course_destinatination = $arr_course_destination[0];
+                $courseDestinationInfo = api_get_course_info_by_id($course_destinatination);
+                $course_destinatination = $courseDestinationInfo['code'];
 
                 $course_origin = api_get_course_info($course_code);
                 $cb = new CourseBuilder('', $course_origin);

+ 2 - 1
main/coursecopy/import_backup.php

@@ -127,7 +127,8 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
     }
 } else {
     $user = api_get_user_info();
-    $backups = CourseArchiver::get_available_backups($is_platformAdmin ? null : $user['user_id']);
+    $user = $is_platformAdmin ? null : $user['user_id'];
+    $backups = CourseArchiver::get_available_backups($user);
     $backups_available = count($backups) > 0;
 
     $form = new FormValidator('import_backup_form', 'post', 'import_backup.php', '', 'multipart/form-data');

+ 5 - 2
main/document/create_audio.php

@@ -423,7 +423,9 @@ function downloadMP3_google($filepath, $dir)
 
         return;
     }
-    global $_course, $_user;
+    global $_user;
+    $_course = api_get_course_info();
+
     $clean_title = trim($_POST['title']);
     $clean_text = trim($_POST['text']);
     if (empty($clean_title) || empty($clean_text)) {
@@ -591,7 +593,8 @@ function downloadMP3_pediaphon($filepath, $dir)
 
         return;
     }
-    global $_course, $_user;
+    global $_user;
+    $_course = api_get_course_info();
     $clean_title = trim($_POST['title']);
     $clean_title = Database::escape_string($clean_title);
     $clean_text = trim($_POST['text']);

+ 2 - 1
main/document/document.inc.php

@@ -1283,7 +1283,8 @@ function check_and_create_resource_directory($repository_path, $resource_directo
         if (@mkdir($resource_directory_full_path, $permissions_for_new_directories)) {
             // While we are in a course: Registering the newly created folder in the course's database.
             if (api_is_in_course()) {
-                global $_course, $_user;
+                global $_user;
+                $_course = api_get_course_info();
                 global $group_properties, $to_group_id;
                 $group_directory = !empty($group_properties['directory']) ? $group_properties['directory'] : '';
 

+ 30 - 28
main/document/document.php

@@ -71,7 +71,7 @@ if (empty($course_info)) {
 $course_dir = $course_info['path'].'/document';
 $sys_course_path = api_get_path(SYS_COURSE_PATH);
 $base_work_dir = $sys_course_path.$course_dir;
-$http_www = api_get_path(WEB_COURSE_PATH).$_course['path'].'/document';
+$http_www = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/document';
 
 $dbl_click_id = 0; // Used for avoiding double-click
 
@@ -202,9 +202,7 @@ switch ($action) {
         break;
     case 'copytomyfiles':
         // Copy a file to general my files user's
-        if (api_get_setting('allow_social_tool') == 'true' && api_get_setting(
-            'users_copy_files'
-        ) == 'true' && api_get_user_id() != 0 && !api_is_anonymous()
+        if (api_get_setting('allow_social_tool') == 'true' && api_get_setting('users_copy_files') == 'true' && api_get_user_id() != 0 && !api_is_anonymous()
         ) {
             $document_info = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id(), true);
             $parent_id = $document_info['parent_id'];
@@ -217,7 +215,7 @@ switch ($action) {
                 @mkdir($user_folder, $perm, true);
             }
 
-            $file = $sys_course_path.$_course['path'].'/document'.$document_info['path'];
+            $file = $sys_course_path.$course_info['path'].'/document'.$document_info['path'];
             $copyfile = $user_folder.basename($document_info['path']);
             $cidReq = Security::remove_XSS($_GET['cidReq']);
             $id_session = Security::remove_XSS($_GET['id_session']);
@@ -241,7 +239,7 @@ switch ($action) {
                 ).'&amp;action=copytomyfiles&amp;id='.$document_info['id'].'&amp;copy=yes">'.get_lang('Yes').'</a></p>';
                 if (!isset($_GET['copy'])) {
                     $message = Display::return_message($message, 'warning', false);
-                }
+                } var_dump($file, $copyfile);exit;
                 if (Security::remove_XSS($_GET['copy']) == 'yes') {
                     if (!copy($file, $copyfile)) {
                         $message = Display::return_message(get_lang('CopyFailed'), 'error');
@@ -254,6 +252,7 @@ switch ($action) {
                     }
                 }
             } else {
+
                 if (!copy($file, $copyfile)) {
                     $message = Display::return_message(get_lang('CopyFailed'), 'error');
                 } else {
@@ -439,7 +438,7 @@ if ($to_group_id != 0 && $curdirpath == '/') {
 //if (!$is_allowed_to_edit || api_is_coach()) { before
 
 if (!$is_allowed_to_edit && api_is_coach()) {
-    if ($curdirpath != '/' && !(DocumentManager::is_visible($curdirpath, $_course, api_get_session_id(), 'folder'))) {
+    if ($curdirpath != '/' && !(DocumentManager::is_visible($curdirpath, $course_info, api_get_session_id(), 'folder'))) {
         api_not_allowed(true);
     }
 }
@@ -453,7 +452,7 @@ if ($session_id == 0) {
         $to_group_id = 0;
         $visibility = 0;
         FileManager::create_unexisting_directory(
-            $_course,
+            $course_info,
             api_get_user_id(),
             api_get_session_id(),
             $to_group_id,
@@ -471,7 +470,7 @@ if ($session_id == 0) {
         $to_group_id = 0;
         $visibility = 1;
         FileManager::create_unexisting_directory(
-            $_course,
+            $course_info,
             api_get_user_id(),
             api_get_session_id(),
             $to_group_id,
@@ -490,7 +489,7 @@ if ($session_id == 0) {
         $to_group_id = 0;
         $visibility = 0;
         FileManager::create_unexisting_directory(
-            $_course,
+            $course_info,
             api_get_user_id(),
             api_get_session_id(),
             $to_group_id,
@@ -510,7 +509,7 @@ if ($session_id == 0) {
         $to_group_id = 0;
         $visibility = 1;
         FileManager::create_unexisting_directory(
-            $_course,
+            $course_info,
             api_get_user_id(),
             api_get_session_id(),
             $to_group_id,
@@ -577,7 +576,7 @@ $htmlHeadXtra[] = '<script type="text/javascript" src="'.$js_path.'jquery-jplaye
 
 $mediaplayer_path = api_get_path(WEB_LIBRARY_PATH).'mediaplayer/player.swf';
 $docs_and_folders = DocumentManager::get_all_document_data(
-    $_course,
+    $course_info,
     $curdirpath,
     $to_group_id,
     null,
@@ -633,13 +632,14 @@ if ($to_group_id != 0) { // Add group name after for group documents
 
 /* Introduction section (editable by course admins) */
 
-if (!empty($_SESSION['_gid'])) {
-    Display::display_introduction_section(TOOL_DOCUMENT.$_SESSION['_gid']);
+if (!empty($to_group_id)) {
+    Display::display_introduction_section(TOOL_DOCUMENT.$to_group_id);
 } else {
     Display::display_introduction_section(TOOL_DOCUMENT);
 }
 
 // ACTION MENU
+$moveTo = isset($_POST['move_to']) ? Security::remove_XSS($_POST['move_to']) : null;
 
 /* 	MOVE FILE OR DIRECTORY */
 //Only teacher and all users into their group and each user into his/her shared folder
@@ -647,7 +647,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
     api_get_user_id(),
     $curdirpath,
     $session_id
-) || is_my_shared_folder(api_get_user_id(), Security::remove_XSS($_POST['move_to']), $session_id)
+) || is_my_shared_folder(api_get_user_id(), $moveTo, $session_id)
 ) {
 
     if (isset($_GET['move']) && $_GET['move'] != '') {
@@ -666,7 +666,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
         }
 
         if (!$is_allowed_to_edit) {
-            if (DocumentManager::check_readonly($_course, api_get_user_id(), $my_get_move)) {
+            if (DocumentManager::check_readonly($course_info, api_get_user_id(), $my_get_move)) {
                 api_not_allowed();
             }
         }
@@ -674,7 +674,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
         $move_path = $document_to_move['path'];
         if (!empty($document_to_move)) {
             $folders = DocumentManager::get_all_document_folders(
-                $_course,
+                $course_info,
                 $to_group_id,
                 $is_allowed_to_edit || $group_member_with_upload_rights
             );
@@ -709,7 +709,7 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
     if (isset($_POST['move_to']) && isset($_POST['move_file'])) {
 
         if (!$is_allowed_to_edit) {
-            if (DocumentManager::check_readonly($_course, api_get_user_id(), $_POST['move_file'])) {
+            if (DocumentManager::check_readonly($course_info, api_get_user_id(), $_POST['move_file'])) {
                 api_not_allowed();
             }
         }
@@ -1501,16 +1501,18 @@ $column_show[] = 0;
 
 $column_order = array();
 
-if (count($row) == 12) {
-    //teacher
-    $column_order[2] = 8; //name
-    $column_order[3] = 7;
-    $column_order[4] = 6;
-} elseif (count($row) == 10) {
-    //student
-    $column_order[1] = 6;
-    $column_order[2] = 5;
-    $column_order[3] = 4;
+if (isset($row)) {
+    if (count($row) == 12) {
+        //teacher
+        $column_order[2] = 8; //name
+        $column_order[3] = 7;
+        $column_order[4] = 6;
+    } elseif (count($row) == 10) {
+        //student
+        $column_order[1] = 6;
+        $column_order[2] = 5;
+        $column_order[3] = 4;
+    }
 }
 
 $default_column = $is_allowed_to_edit ? 2 : 1;

+ 1 - 1
main/document/document_quota.php

@@ -39,7 +39,7 @@ $session = array();
 $user_name = $user_info['complete_name'];
 
 $course_list =  SessionManager::get_course_list_by_session_id ($session_id);
-$session_list = SessionManager::get_session_by_course($course_code);
+$session_list = SessionManager::get_session_by_course($course_id);
 
 $total_quota_bytes = DocumentManager::get_course_quota();
 

+ 1 - 1
main/document/showinframes.php

@@ -136,7 +136,7 @@ header('Pragma: no-cache');
 $browser_display_title = 'Documents - '.Security::remove_XSS($_GET['cidReq']).' - '.$file;
 // Only admins get to see the "no frames" link in pageheader.php, so students get a header that's not so high
 $frameheight = 135;
-if ($is_courseAdmin) {
+if (api_is_course_admin()) {
     $frameheight = 165;
 }
 

+ 44 - 42
main/dropbox/dropbox_class.inc.php

@@ -104,7 +104,7 @@ class Dropbox_Work {
 		$this->description = $description;
 		$this->author = api_get_person_name($_user['firstName'], $_user['lastName']);
 		$this->last_upload_date = api_get_utc_datetime();
-		
+
 		$course_id = api_get_course_int_id();
 
 		// Check if object exists already. If it does, the old object is used
@@ -121,10 +121,10 @@ class Dropbox_Work {
 		if ($this->isOldWork) {
 			$this->id = $res['id'];
 			$this->upload_date = $res['upload_date'];
-		    $sql = "UPDATE ".$dropbox_cnf["tbl_file"]." SET 
-					filesize			= '".Database::escape_string($this->filesize)."' , 
-					title 				= '".Database::escape_string($this->title)."', 
-					description 		= '".Database::escape_string($this->description)."', 
+		    $sql = "UPDATE ".$dropbox_cnf["tbl_file"]." SET
+					filesize			= '".Database::escape_string($this->filesize)."' ,
+					title 				= '".Database::escape_string($this->title)."',
+					description 		= '".Database::escape_string($this->description)."',
 					author 				= '".Database::escape_string($this->author)."',
 					last_upload_date 	= '".Database::escape_string($this->last_upload_date)."'
 					WHERE c_id = $course_id AND id='".Database::escape_string($this->id)."'";
@@ -132,7 +132,7 @@ class Dropbox_Work {
 		} else {
 			$this->upload_date = $this->last_upload_date;
 			$sql = "INSERT INTO ".$dropbox_cnf['tbl_file']." (c_id, uploader_id, filename, filesize, title, description, author, upload_date, last_upload_date, session_id)
-				VALUES ( $course_id, 
+				VALUES ( $course_id,
 						'".Database::escape_string($this->uploader_id)."'
 						, '".Database::escape_string($this->filename)."'
 						, '".Database::escape_string($this->filesize)."'
@@ -150,7 +150,7 @@ class Dropbox_Work {
 
 		// Insert entries into person table
 		$sql = "INSERT INTO ".$dropbox_cnf['tbl_person']." (c_id, file_id, user_id)
-				VALUES ($course_id, 
+				VALUES ($course_id,
 						'".Database::escape_string($this->id)."'
 						, '".Database::escape_string($this->uploader_id)."'
 						)";
@@ -163,8 +163,8 @@ class Dropbox_Work {
 	 * @param unknown_type $id
 	 */
 	function _createExistingWork($id) {
-	    $course_id = api_get_course_int_id(); 
-        
+	    $course_id = api_get_course_int_id();
+
 		global $_user, $dropbox_cnf;
 
 		// Do some sanity checks
@@ -255,7 +255,7 @@ class Dropbox_SentWork extends Dropbox_Work
 		global $dropbox_cnf;
 		// Call constructor of Dropbox_Work object
 		$this->Dropbox_Work($uploader_id, $title, $description, $author, $filename, $filesize);
-		
+
 		$course_id = api_get_course_int_id();
 
 		// Do sanity checks on recipient_ids array & property fillin
@@ -287,14 +287,14 @@ class Dropbox_SentWork extends Dropbox_Work
 		// Insert data in dropbox_post and dropbox_person table for each recipient
 		foreach ($this->recipients as $rec) {
             $file_id = (int)$this->id;
-            $user_id = (int)$rec['id'];            
-			$sql = "INSERT INTO $table_post (c_id, file_id, dest_user_id, session_id) 
+            $user_id = (int)$rec['id'];
+			$sql = "INSERT INTO $table_post (c_id, file_id, dest_user_id, session_id)
                     VALUES ($course_id, $file_id, $user_id, $session_id)";
-	        $result = Database::query($sql);	
+	        $result = Database::query($sql);
             // If work already exists no error is generated
 
             /**
-             * Poster is already added when work is created - not so good to split logic 
+             * Poster is already added when work is created - not so good to split logic
              */
             //if ($user_id != $user_id) {
                 // Insert entries into person table
@@ -308,7 +308,8 @@ class Dropbox_SentWork extends Dropbox_Work
             //}
 
 			// Update item_property table for each recipient
-			global $_course, $dropbox_cnf;
+			global $dropbox_cnf;
+            $_course = api_get_course_info();
 			if (($ownerid = $this->uploader_id) > $dropbox_cnf['mailingIdBase']) {
 			    $ownerid = getUserOwningThisMailing($ownerid);
 			}
@@ -326,10 +327,10 @@ class Dropbox_SentWork extends Dropbox_Work
 	 */
 	function _createExistingSentWork ($id) {
 		global $dropbox_cnf;
-        
+
         $id = intval($id);
-		
-		$course_id = api_get_course_int_id(); 
+
+		$course_id = api_get_course_int_id();
 
 		// Call constructor of Dropbox_Work object
 		$this->Dropbox_Work($id);
@@ -341,7 +342,7 @@ class Dropbox_SentWork extends Dropbox_Work
 				WHERE c_id = $course_id AND file_id='".Database::escape_string($id)."'";
         $result = Database::query($sql);
 		while ($res = Database::fetch_array($result, 'ASSOC')) {
-            
+
 			// Check for deleted users
 			$dest_user_id = $res['dest_user_id'];
 			$user_info = api_get_user_info($dest_user_id);
@@ -350,10 +351,10 @@ class Dropbox_SentWork extends Dropbox_Work
 				$this->recipients[] = array('id' => -1, 'name' => get_lang('Unknown', ''));
 			} else {
 				$this->recipients[] = array(
-                    'id' => $dest_user_id, 
-                    'name' => $user_info['complete_name'], 
+                    'id' => $dest_user_id,
+                    'name' => $user_info['complete_name'],
                     'user_id' => $dest_user_id,
-				    'feedback_date' => $res['feedback_date'], 
+				    'feedback_date' => $res['feedback_date'],
                     'feedback' => $res['feedback']);
 			}
 		}
@@ -380,8 +381,8 @@ class Dropbox_Person
 	 * @return Dropbox_Person
 	 */
 	function Dropbox_Person($userId, $isCourseAdmin, $isCourseTutor) {
-	    $course_id = api_get_course_int_id(); 
-        
+	    $course_id = api_get_course_int_id();
+
 		// Fill in properties
 		$this->userId           = $userId;
 		$this->isCourseAdmin    = $isCourseAdmin;
@@ -393,32 +394,32 @@ class Dropbox_Person
 
 		$session_id = api_get_session_id();
 		$condition_session = api_get_session_condition($session_id);
-				
+
 		$post_tbl = Database::get_course_table(TABLE_DROPBOX_POST);
 		$person_tbl = Database::get_course_table(TABLE_DROPBOX_PERSON);
 		$file_tbl = Database::get_course_table(TABLE_DROPBOX_FILE);
-               
+
         // Find all entries where this person is the recipient
-		$sql = "SELECT DISTINCT r.file_id, r.cat_id 
-                FROM $post_tbl r INNER JOIN $person_tbl p 
+		$sql = "SELECT DISTINCT r.file_id, r.cat_id
+                FROM $post_tbl r INNER JOIN $person_tbl p
                     ON (r.file_id = p.file_id AND r.c_id = $course_id AND p.c_id = $course_id )
                 WHERE
                      p.user_id = ".intval($this->userId)." AND
                      r.dest_user_id = ".intval($this->userId)." $condition_session ";
-        
+
         $result = Database::query($sql);
 		while ($res = Database::fetch_array($result)) {
 			$temp = new Dropbox_Work($res['file_id']);
 			$temp->category = $res['cat_id'];
 			$this->receivedWork[] = $temp;
-		}        
+		}
 		// Find all entries where this person is the sender/uploader
         $sql = "SELECT DISTINCT f.id
 				FROM $file_tbl f INNER JOIN $person_tbl p
 				ON (f.id = p.file_id AND f.c_id = $course_id AND p.c_id = $course_id)
-                WHERE 
-                    f.uploader_id 	= '".Database::escape_string($this->userId)."' AND 
-                    p.user_id       = '".Database::escape_string($this->userId)."'            
+                WHERE
+                    f.uploader_id 	= '".Database::escape_string($this->userId)."' AND
+                    p.user_id       = '".Database::escape_string($this->userId)."'
                     $condition_session
                 ";
         $result = Database::query($sql);
@@ -523,7 +524,7 @@ class Dropbox_Person
 	 * Deletes all the received work of this person
 	 */
 	function deleteAllReceivedWork () {
-	    $course_id = api_get_course_int_id(); 
+	    $course_id = api_get_course_int_id();
 		global $dropbox_cnf;
 		// Delete entries in person table concerning received works
 		foreach ($this->receivedWork as $w) {
@@ -537,8 +538,8 @@ class Dropbox_Person
 	 */
 	function deleteReceivedWorkFolder($id) {
 		global $dropbox_cnf;
-        $course_id = api_get_course_int_id(); 
-        
+        $course_id = api_get_course_int_id();
+
 		$id = intval($id);
 		$sql = "DELETE FROM ".$dropbox_cnf['tbl_file']." WHERE c_id = $course_id AND cat_id = '".$id."' ";
 		if (!Database::query($sql)) return false;
@@ -555,7 +556,7 @@ class Dropbox_Person
 	 * @param integer $id
 	 */
 	function deleteReceivedWork($id) {
-	    $course_id = api_get_course_int_id(); 
+	    $course_id = api_get_course_int_id();
 		global $dropbox_cnf;
 		$id = intval($id);
 
@@ -573,7 +574,7 @@ class Dropbox_Person
 			}
 		}
 		// Delete entries in person table concerning received works
-        $sql = "DELETE FROM ".$dropbox_cnf['tbl_person']." WHERE c_id = $course_id AND user_id = '".$this->userId."' AND file_id ='".$id."'";        
+        $sql = "DELETE FROM ".$dropbox_cnf['tbl_person']." WHERE c_id = $course_id AND user_id = '".$this->userId."' AND file_id ='".$id."'";
 		Database::query($sql);
 		removeUnusedFiles();	// Check for unused files
 	}
@@ -582,7 +583,7 @@ class Dropbox_Person
 	 * Deletes all the sent dropbox files of this person
 	 */
 	function deleteAllSentWork() {
-	    $course_id = api_get_course_int_id(); 
+	    $course_id = api_get_course_int_id();
 		global $dropbox_cnf;
 		//delete entries in person table concerning sent works
 		foreach ($this->sentWork as $w) {
@@ -599,7 +600,7 @@ class Dropbox_Person
 	 */
 	function deleteSentWork($id) {
 	    $course_id = api_get_course_int_id();
-        
+
 		global $dropbox_cnf;
 		$id = intval($id);
 
@@ -631,8 +632,9 @@ class Dropbox_Person
 	 */
 	function updateFeedback($id, $text) {
 	    $course_id = api_get_course_int_id();
-	    
-		global $_course, $dropbox_cnf;
+
+		global $dropbox_cnf;
+        $_course = api_get_course_info();
 		$id = intval($id);
 
 		// index check

+ 16 - 17
main/dropbox/dropbox_functions.inc.php

@@ -27,7 +27,7 @@ $(document).ready(function () {
  */
 function handle_multiple_actions()
 {
-    global $_user, $is_courseAdmin, $is_courseTutor;
+    global $_user, $is_courseTutor;
 
     // STEP 1: are we performing the actions on the received or on the sent files?
     if ($_POST['action'] == 'delete_received' || $_POST['action'] == 'download_received') {
@@ -56,7 +56,7 @@ function handle_multiple_actions()
 
     // STEP 3A: deleting
     if ($_POST['action'] == 'delete_received' || $_POST['action'] == 'delete_sent') {
-        $dropboxfile = new Dropbox_Person($_user['user_id'], $is_courseAdmin, $is_courseTutor);
+        $dropboxfile = new Dropbox_Person($_user['user_id'], api_is_course_admin(), $is_courseTutor);
         foreach ($checked_file_ids as $key => $value) {
             if ($_GET['view'] == 'received') {
                 $dropboxfile->deleteReceivedWork($value);
@@ -114,7 +114,7 @@ function delete_category($action, $id, $user_id = null)
     $course_id = api_get_course_int_id();
 
     global $dropbox_cnf;
-    global $is_courseAdmin, $is_courseTutor;
+    global $is_courseTutor;
 
     if (empty($user_id)) {
         $user_id = api_get_user_id();
@@ -154,7 +154,7 @@ function delete_category($action, $id, $user_id = null)
     $result = Database::query($sql);
 
     while ($row = Database::fetch_array($result)) {
-        $dropboxfile = new Dropbox_Person($_user['user_id'], $is_courseAdmin, $is_courseTutor);
+        $dropboxfile = new Dropbox_Person($_user['user_id'], api_is_course_admin(), $is_courseTutor);
         if ($action == 'deletereceivedcategory') {
             $dropboxfile->deleteReceivedWork($row[$id_field]);
         }
@@ -492,10 +492,10 @@ function display_addcategory_form($category_name = '', $id = '', $action)
  */
 function display_add_form()
 {
-    global $_user, $is_courseAdmin, $is_courseTutor, $course_info, $origin, $dropbox_unid;
+    global $_user, $is_courseTutor, $course_info, $origin, $dropbox_unid;
 
     $token = Security::get_token();
-    $dropbox_person = new Dropbox_Person(api_get_user_id(), $is_courseAdmin, $is_courseTutor);
+    $dropbox_person = new Dropbox_Person(api_get_user_id(), api_is_course_admin(), $is_courseTutor);
     ?>
 	<form method="post" action="index.php?view_received_category=<?php echo Security::remove_XSS(
         $_GET['view_received_category']
@@ -561,7 +561,7 @@ function display_add_form()
             );
         }
         $complete_user_list2 = CourseManager::get_coach_list_from_course_code(
-            $course_info['code'],
+            $course_info['real_id'],
             api_get_session_id()
         );
         $complete_user_list_for_dropbox = array_merge($complete_user_list_for_dropbox, $complete_user_list2);
@@ -708,10 +708,7 @@ function getLoginFromId($id)
  */
 function isCourseMember($user_id)
 {
-    global $_course;
-    $course_code = $_course['sysCode'];
-    $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, true);
-
+    $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, api_get_course_int_id(), true);
     return $is_course_member;
 }
 
@@ -834,7 +831,7 @@ function store_add_dropbox()
 {
     global $dropbox_cnf;
     global $_user;
-    global $_course;
+    $_course = api_get_course_info();
 
     // Validating the form data
 
@@ -1174,7 +1171,7 @@ function store_feedback()
  */
 function zip_download($array)
 {
-    global $_course;
+    $_course = api_get_course_info();
     global $dropbox_cnf;
     global $files;
 
@@ -1351,14 +1348,16 @@ function check_number_feedback($key, $array)
  *
  * @todo consider moving this function to a more appropriate place.
  */
-function get_last_tool_access($tool, $course_code = '', $user_id = '')
+function get_last_tool_access($tool, $courseId = '', $user_id = '')
 {
     global $_course, $_user;
 
     // The default values of the parameters
-    if ($course_code == '') {
-        $course_code = $_course['id'];
+    if ($courseId == '') {
+        $courseId = api_get_course_int_id();
     }
+    $courseId = intval($courseId);
+
     if ($user_id == '') {
         $user_id = $_user['user_id'];
     }
@@ -1367,7 +1366,7 @@ function get_last_tool_access($tool, $course_code = '', $user_id = '')
     $table_last_access = Database::get_statistic_table('track_e_lastaccess');
 
     $sql = "SELECT access_date FROM $table_last_access WHERE access_user_id='".Database::escape_string($user_id)."'
-				AND access_cours_code='".Database::escape_string($course_code)."'
+				AND c_id ='".Database::escape_string($courseId)."'
 				AND access_tool='".Database::escape_string($tool)."'
 				ORDER BY access_date DESC
 				LIMIT 1";

+ 4 - 3
main/dropbox/dropbox_init.inc.php

@@ -63,13 +63,14 @@ require_once api_get_path(SYS_CODE_PATH).'document/document.inc.php';  // we use
 
 $user_id = api_get_user_id();
 $course_code = api_get_course_id();
+$courseId = api_get_course_int_id();
 $course_info = Database::get_course_info($course_code);
 
 $session_id = api_get_session_id();
 if (empty($session_id)) {
-    $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, false);
+    $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $courseId, false);
 } else {
-    $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, true, $session_id);
+    $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $courseId, true, $session_id);
 }
 
 /*	Object Initialisation */
@@ -79,7 +80,7 @@ if (empty($session_id)) {
 // @todo consider moving the javascripts in a function that displays the javascripts
 // only when it is needed.
 if ($_GET['action'] == 'add') {
-	$dropbox_person = new Dropbox_Person($_user['user_id'], $is_courseAdmin, $is_courseTutor);
+	$dropbox_person = new Dropbox_Person($_user['user_id'], api_is_course_admin(), $is_courseTutor);
 }
 
 /*	Create javascript and htmlHeaders */

+ 3 - 160
main/dropbox/dropbox_submit.php

@@ -107,7 +107,7 @@ if (isset($_POST['submitWork'])) {
                 }
 
                 if ($dropbox_overwrite) {
-                    $dropbox_person = new Dropbox_Person($_user['user_id'], $is_courseAdmin, $is_courseTutor);
+                    $dropbox_person = new Dropbox_Person($_user['user_id'], api_is_course_admin(), $is_courseTutor);
 
                     foreach ($dropbox_person->sentWork as $w) {
                         if ($w->title == $dropbox_filename) {
@@ -205,163 +205,6 @@ if (isset($_POST['submitWork'])) {
     }
 } // end if ( isset( $_POST['submitWork']))
 
-
-/**
- * EXAMINE OR SEND MAILING (NEW)
- * @deprecated The $_GET[mailingIndex] is never called
- */
-
-/*
-if (isset($_GET['mailingIndex'])) {
-    // examine or send
-    $dropbox_person = new Dropbox_Person( $_user['user_id'], $is_courseAdmin, $is_courseTutor);
-	if (isset($_SESSION['sentOrder'])) {
-		$dropbox_person->orderSentWork($_SESSION['sentOrder']);
-	}
-    $i = $_GET['mailingIndex'];
-    $mailing_item = $dropbox_person->sentWork[$i];
-    $mailing_title = $mailing_item->title;
-    $mailing_file = dropbox_cnf('sysPath') . '/' . $mailing_item->filename;
-    $errormsg = '<b>' . $mailing_item->recipients[0]['name'] . ' ('
-    	. "<a href='dropbox_download.php?origin=$origin&id=".urlencode($mailing_item->id)."'>"
-		. htmlspecialchars($mailing_title, ENT_QUOTES, api_get_system_encoding()) . '</a>):</b><br /><br />';
-
-    if (preg_match( dropbox_cnf('mailingZipRegexp'), $mailing_title, $nameParts)) {
-		$var = api_strtoupper($nameParts[2]);  // the variable part of the name
-		$course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
-		$sel = "SELECT u.user_id, u.lastname, u.firstname, cu.status
-				FROM ".$_configuration['main_database'].".user u
-				LEFT JOIN $course_user cu
-				ON cu.user_id = u.user_id AND cu.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND cu.course_code = '".$_course['sysCode']."'";
-		$sel .= " WHERE u.".dropbox_cnf("mailingWhere".$var)." = '";
-
-		$preFix = $nameParts[1]; $postFix = $nameParts[3];
-		$preLen = api_strlen($preFix); $postLen = api_strlen($postFix);
-
-	    require api_get_path(LIBRARY_PATH) . 'pclzip/pclzip.lib.php';
-
-		$zipFile = new PclZip($mailing_file);
-		$goodFiles  = array();
-		$zipContent = $zipFile->listContent();
-		$ucaseFiles = array();
-
-		if ($zipContent) {
-			foreach( $zipFile->listContent() as $thisContent) {
-	            $thisFile = substr(strrchr('/' . $thisContent['filename'], '/'), 1);
-	            $thisFileUcase = strtoupper($thisFile);
-				if (preg_match("~.(php.*|phtml)$~i", $thisFile)) {
-		            $error = true;
-		            $errormsg .= $thisFile . ': ' . get_lang('MailingZipPhp');
-					break;
-				} elseif (!$thisContent['folder']) {
-		            if ($ucaseFiles[$thisFileUcase]) {
-			            $error = true;
-			            $errormsg .= $thisFile . ': ' . get_lang('MailingZipDups');
-						break;
-		            } else {
-			            $goodFiles[$thisFile] = findRecipient($thisFile);
-			            $ucaseFiles[$thisFileUcase] = 'yep';
-		            }
-				}
-			}
-		} else {
-            $error = true;
-            $errormsg .= get_lang('MailingZipEmptyOrCorrupt');
-        }
-
-		if (!$error) {
-			$students = array();  // collect all recipients in this course
-
-			foreach ($goodFiles as $thisFile => $thisRecip) {
-				$errormsg .= htmlspecialchars($thisFile, ENT_QUOTES, api_get_system_encoding()) . ': ';
-	            if (is_string($thisRecip)) { // see findRecipient
-					$errormsg .= '<font color="#FF0000">'
-						. htmlspecialchars($thisRecip, ENT_QUOTES, api_get_system_encoding()) . '</font><br />';
-	            } else {
-					if ( isset( $_GET['mailingSend'])) {
-			            $errormsg .= get_lang('MailingFileSentTo');
-		            } else {
-						$errormsg .= get_lang('MailingFileIsFor');
-		            }
-					$errormsg .= htmlspecialchars(api_get_person_name($thisRecip[2], $thisRecip[1]), ENT_QUOTES, api_get_system_encoding());
-
-					if (is_null($thisRecip[3])) {
-						$errormsg .= get_lang('MailingFileNotRegistered');
-					} else {
-						$students[] = $thisRecip[0];
-					}
-					$errormsg .= '<br />';
-	            }
-			}
-
-			// find student course members not among the recipients
-
-			$course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
-			$sql = "SELECT u.lastname, u.firstname
-					FROM $course_user cu
-					LEFT JOIN  ".$_configuration['main_database'].".user u
-					ON cu.user_id = u.user_id AND cu.course_code = '".$_course['sysCode']."'
-					WHERE cu.status = 5
-					AND u.user_id NOT IN ('" . implode("', '" , $students) . "')";
-	        $result = Database::query($sql);
-
-	        if (Database::num_rows($result) > 0) {
-		        $remainingUsers = '';
-		        while ($res = Database::fetch_array($result)) {
-					$remainingUsers .= ', ' . htmlspecialchars(api_get_person_name($res[1], $res[0]), ENT_QUOTES, api_get_system_encoding());
-		        }
-		        $errormsg .= '<br />' . get_lang('MailingNothingFor') . api_substr($remainingUsers, 1) . '.<br />';
-	        }
-
-			if (isset($_GET['mailingSend'])) {
-				chdir(dropbox_cnf('sysPath'));
-				$zipFile->extract(PCLZIP_OPT_REMOVE_ALL_PATH);
-
-				$mailingPseudoId = dropbox_cnf('mailingIdBase') + $mailing_item->id;
-
-				foreach ($goodFiles as $thisFile => $thisRecip) {
-		            if (is_string($thisRecip)) { // remove problem file
-			            @unlink(dropbox_cnf('sysPath') . '/' . $thisFile);
-		            } else {
-				        $newName = getLoginFromId( $_user['user_id']) . '_' . $thisFile . '_' . uniqid('');
-				        if (rename(dropbox_cnf('sysPath') . '/' . $thisFile, dropbox_cnf('sysPath') . '/' . $newName))
-							new Dropbox_SentWork($mailingPseudoId, $thisFile, $mailing_item->description, $mailing_item->author, $newName, $thisContent['size'], array($thisRecip[0]));
-		            }
-				}
-
-			    $sendDT = api_get_utc_datetime();
-			    // set filesize to zero on send, to avoid 2nd send (see index.php)
-				$sql = "UPDATE ".dropbox_cnf("tbl_file")."
-						SET filesize = '0' , upload_date = '".$sendDT."', last_upload_date = '".$sendDT."'
-						WHERE id='".addslashes($mailing_item->id)."'";
-				$result = Database::query($sql);
-			} elseif ($mailing_item->filesize != 0) {
-		        $errormsg .= '<br />' . get_lang('MailingNotYetSent') . '<br />';
-			}
-        }
-    } else {
-        $error = true;
-        $errormsg .= get_lang('MailingWrongZipfile');
-    }
-
-
-    //EXAMINE OR SEND MAILING RESULTMESSAGE
-
-
-    if ($error) {
-        ?>
-		<b><font color="#FF0000"><?php echo $errormsg?></font></b><br /><br />
-		<a href="index.php<?php echo "?origin=$origin"; ?>"><?php echo get_lang('BackList'); ?></a><br />
-		<?php
-    } else {
-        ?>
-		<?php echo $errormsg?><br /><br />
-		<a href="index.php<?php echo "?origin=$origin"; ?>"><?php echo get_lang('BackList'); ?></a><br />
-		<?php
-    }
-}
-*/
-
 function findRecipient($thisFile)
 {
     // string result = error message, array result = [user_id, lastname, firstname, status]
@@ -425,9 +268,9 @@ if (isset($_GET['deleteReceived']) || isset($_GET['deleteSent'])
 ) {
     if ($_GET['mailing']) {
         getUserOwningThisMailing($_GET['mailing'], $_user['user_id'], '408');
-        $dropbox_person = new Dropbox_Person($_GET['mailing'], $is_courseAdmin, $is_courseTutor);
+        $dropbox_person = new Dropbox_Person($_GET['mailing'], api_is_course_admin(), $is_courseTutor);
     } else {
-        $dropbox_person = new Dropbox_Person($_user['user_id'], $is_courseAdmin, $is_courseTutor);
+        $dropbox_person = new Dropbox_Person($_user['user_id'], api_is_course_admin(), $is_courseTutor);
     }
 
     if (isset($_SESSION['sentOrder'])) {

+ 4 - 4
main/dropbox/index.php

@@ -98,7 +98,7 @@ require_once 'dropbox_init.inc.php';
 
 // get the last time the user accessed the tool
 if ($_SESSION[$_course['id']]['last_access'][TOOL_DROPBOX] == '') {
-	$last_access = get_last_tool_access(TOOL_DROPBOX, $_course['code'], $_user['user_id']);
+	$last_access = get_last_tool_access(TOOL_DROPBOX, api_get_course_int_id(), $_user['user_id']);
 	$_SESSION[$_course['id']]['last_access'][TOOL_DROPBOX] = $last_access;
 } else {
 	$last_access = $_SESSION[$_course['id']]['last_access'][TOOL_DROPBOX];
@@ -204,7 +204,7 @@ if (($action == 'deletereceivedfile' OR $action == 'deletesentfile') AND isset($
 	if (api_get_session_id() != 0 && !api_is_allowed_to_session_edit(false, true)) {
 		api_not_allowed();
 	}
-	$dropboxfile = new Dropbox_Person(api_get_user_id(), $is_courseAdmin, $is_courseTutor);
+	$dropboxfile = new Dropbox_Person(api_get_user_id(), api_is_course_admin(), $is_courseTutor);
 	if ($action == 'deletereceivedfile') {
 		$dropboxfile->deleteReceivedWork($_GET['id']);
 		$message = get_lang('ReceivedFileDeleted');
@@ -374,7 +374,7 @@ if ($action != 'add') {
 		}
 
 		// Object initialisation
-		$dropbox_person = new Dropbox_Person(api_get_user_id(), $is_courseAdmin, $is_courseTutor); // note: are the $is_courseAdmin and $is_courseTutor parameters needed????
+		$dropbox_person = new Dropbox_Person(api_get_user_id(), api_is_course_admin(), $is_courseTutor); // note: are the $is_courseAdmin and $is_courseTutor parameters needed????
 
 		// Constructing the array that contains the total number of feedback messages per document.
 		$number_feedback = get_total_number_feedback();
@@ -525,7 +525,7 @@ if ($action != 'add') {
 		}
 
 		// Object initialisation
-		$dropbox_person = new Dropbox_Person(api_get_user_id(), $is_courseAdmin, $is_courseTutor);
+		$dropbox_person = new Dropbox_Person(api_get_user_id(), api_is_course_admin(), $is_courseTutor);
 
 		// Constructing the array that contains the total number of feedback messages per document.
 		$number_feedback = get_total_number_feedback();

+ 1 - 1
main/exercice/addlimits.php

@@ -76,7 +76,7 @@ if ( empty ( $objExercise ) )
     $objExercise = $_SESSION['objExercise'];
 }
 $exercise_id = intval($_GET['exercise_id']);
-$is_allowedToEdit=$is_courseAdmin;
+$is_allowedToEdit=api_is_course_admin();
 
 if (isset($_SESSION['gradebook'])){
 	$gradebook=	$_SESSION['gradebook'];

+ 4 - 3
main/exercice/admin.php

@@ -249,6 +249,7 @@ if (!empty($cancelQuestion)) {
 
 if (!empty($clone_question) && !empty($objExercise->id)) {
     $old_question_obj = Question::read($clone_question, api_get_course_int_id());
+
     $old_question_obj->question = $old_question_obj->question.' - '.get_lang('Copy');
 
     $new_id = $old_question_obj->duplicate();
@@ -333,9 +334,9 @@ function multiple_answer_true_false_onchange(variable) {
 
 $htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
 $htmlHeadXtra[] = '<link href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
-$htmlHeadXtra[] = "<script type=\"text/javascript\" src=\"../plugin/hotspot/JavaScriptFlashGateway.js\"></script>
-<script src=\"../plugin/hotspot/hotspot.js\" type=\"text/javascript\"></script>
-<script language=\"JavaScript\" type=\"text/javascript\">
+$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_CODE_PATH).'plugin/hotspot/JavaScriptFlashGateway.js"></script>';
+$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_CODE_PATH).'plugin/hotspot/hotspot.js"></script>';
+$htmlHeadXtra[] = "<script>
 <!--
 // Globals
 // Major version of Flash required

+ 0 - 1
main/exercice/adminhp.php

@@ -26,7 +26,6 @@ if (isset($_REQUEST["cancel"])) {
     }
 }
 
-//$is_courseAdmin = $_SESSION['is_courseAdmin'];
 $newName = (!empty($_REQUEST['newName'])?$_REQUEST['newName']:'');
 $hotpotatoesName = (!empty($_REQUEST['hotpotatoesName'])?$_REQUEST['hotpotatoesName']:'');
 

+ 7 - 9
main/exercice/exercise.class.php

@@ -463,9 +463,9 @@ class Exercise
             $TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
             $TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
 
-            $sql = "SELECT q.id
+            $sql = "SELECT q.iid
                     FROM $TBL_EXERCICE_QUESTION e INNER JOIN $TBL_QUESTIONS  q
-                        ON (e.question_id= q.id AND e.c_id = ".$this->course_id." AND q.c_id = ".$this->course_id.")
+                        ON (e.question_id = q.iid AND e.c_id = ".$this->course_id." AND q.c_id = ".$this->course_id.")
 					WHERE e.exercice_id	= '".Database::escape_string($this->id)."'
 					ORDER BY question_order";
 
@@ -475,13 +475,11 @@ class Exercise
             }
             $sql .= $limitCondition;
 
-            $columns = array('question', 'type', 'category', 'level', 'score', 'actions');
-
             $result = Database::query($sql);
             $questions = array();
             if (Database::num_rows($result)) {
                 while ($question = Database::fetch_array($result, 'ASSOC')) {
-                    $objQuestionTmp = Question::read($question['id']);
+                    $objQuestionTmp = Question::read($question['iid']);
                     $category_labels = Testcategory::return_category_labels($objQuestionTmp->category_list, $category_list);
 
                     if (empty($category_labels)) {
@@ -500,7 +498,7 @@ class Exercise
                     $questionType = Display::tag('div', Display::return_icon($typeImg, $typeExpl, array(), ICON_SIZE_MEDIUM).$question_media);
 
                     $question = array(
-                        'id' => $question['id'],
+                        'id' => $question['iid'],
                         'question' => $objQuestionTmp->selectTitle(),
                         'type' => $questionType,
                         'category' => Display::tag('div', '<a href="#" style="padding:0px; margin:0px;">'.$category_labels.'</a>'),
@@ -908,7 +906,7 @@ class Exercise
      */
     function save($type_e = '')
     {
-        global $_course;
+        $_course = api_get_course_info();
         $TBL_EXERCICES = Database::get_course_table(TABLE_QUIZ_TEST);
 
         $id = $this->id;
@@ -4231,7 +4229,7 @@ class Exercise
             $subject = get_lang('OpenQuestionsAttempted');
 
             if (api_get_session_id()) {
-                $teachers = CourseManager::get_coach_list_from_course_code($coursecode, api_get_session_id());
+                $teachers = CourseManager::get_coach_list_from_course_code($course_info['real_id'], api_get_session_id());
             } else {
                 $teachers = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
             }
@@ -4313,7 +4311,7 @@ class Exercise
             $subject = get_lang('OralQuestionsAttempted');
 
             if (api_get_session_id()) {
-                $teachers = CourseManager::get_coach_list_from_course_code($coursecode, api_get_session_id());
+                $teachers = CourseManager::get_coach_list_from_course_code($course_info['real_id'], api_get_session_id());
             } else {
                 $teachers = CourseManager::get_teacher_list_from_course_code($course_info['real_id']);
             }

+ 9 - 4
main/exercice/exercise.lib.php

@@ -1541,7 +1541,6 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_publicat
 {
     $TBL_EXERCICES = Database :: get_course_table(TABLE_QUIZ_TEST);
     $course_id = api_get_course_int_id();
-
     if (!empty($course_info) && !empty($course_info['real_id'])) {
         $course_id = $course_info['real_id'];
     }
@@ -1554,7 +1553,7 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_publicat
     $time_conditions = '';
 
     if ($check_publication_dates) {
-        $time_conditions = " AND ((start_time <> '0000-00-00 00:00:00' AND start_time < '$now'  AND end_time <> '0000-00-00 00:00:00' AND end_time > '$now' )  OR "; //start and end are set
+        $time_conditions = " AND ((start_time <> '0000-00-00 00:00:00' AND start_time < '$now'  AND end_time <> '0000-00-00 00:00:00' AND end_time > '$now' ) OR "; //start and end are set
         $time_conditions .= " (start_time <> '0000-00-00 00:00:00' AND start_time < '$now'  AND end_time = '0000-00-00 00:00:00') OR "; // only start is set
         $time_conditions .= " (start_time = '0000-00-00 00:00:00'   AND end_time <> '0000-00-00 00:00:00'  AND end_time > '$now') OR   "; // only end is set
         $time_conditions .= " (start_time = '0000-00-00 00:00:00'   AND end_time =  '0000-00-00 00:00:00'))  "; // nothing is set
@@ -1566,7 +1565,8 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_publicat
         //All exercises
         $conditions = array('where' => array('active = ? AND  (session_id = 0 OR session_id = ? ) AND c_id = ? '.$time_conditions => array('1', $session_id, $course_id)), 'order' => 'title');
     }
-    return Database::select('*', $TBL_EXERCICES, $conditions);
+    $result = Database::select('*', $TBL_EXERCICES, $conditions);
+    return $result;
 }
 
 /**
@@ -2397,7 +2397,12 @@ function display_question_list_by_attempt($objExercise, $exe_id, $save_user_resu
 
             // No category for this question!
             if ($category_was_added_for_this_test == false) {
-                $category_list['none'] = array();
+                if (!isset($category_list['none'])) {
+                    $category_list['none'] = array();
+                    $category_list['none']['score'] = 0;
+                    $category_list['none']['total'] = 0;
+                }
+
                 $category_list['none']['score'] += $my_total_score;
                 $category_list['none']['total'] += $my_total_weight;
             }

+ 11 - 5
main/exercice/exercise_show.php

@@ -64,7 +64,7 @@ if (empty($id)) {
 }
 
 
-if (api_is_course_session_coach(api_get_user_id(), api_get_course_id(), api_get_session_id())) {
+if (api_is_course_session_coach(api_get_user_id(), api_get_course_int_id(), api_get_session_id())) {
     if (!api_coach_can_edit_view_results(api_get_course_id(), api_get_session_id())) {
         api_not_allowed(true);
     }
@@ -79,7 +79,7 @@ if (empty($track_exercise_info)) {
     api_not_allowed(true);
 }
 
-$exercise_id        = $track_exercise_info['id'];
+$exercise_id        = $track_exercise_info['iid'];
 $exercise_date      = $track_exercise_info['start_date'];
 $student_id         = $track_exercise_info['exe_user_id'];
 $learnpath_id       = $track_exercise_info['orig_lp_id'];
@@ -222,13 +222,14 @@ $arrans  = array();
 $user_restriction = $is_allowedToEdit ? '' :  "AND user_id=".intval($student_id)." ";
 $query = "SELECT attempts.question_id, answer
           FROM ".$TBL_TRACK_ATTEMPT." as attempts
-            INNER JOIN ".$TBL_TRACK_EXERCICES." AS stats_exercices ON stats_exercices.exe_id=attempts.exe_id
+            INNER JOIN ".$TBL_TRACK_EXERCICES." AS stats_exercices
+                ON stats_exercices.exe_id=attempts.exe_id
             INNER JOIN ".$TBL_EXERCICE_QUESTION." AS quizz_rel_questions
                 ON quizz_rel_questions.exercice_id=stats_exercices.exe_exo_id AND
                 quizz_rel_questions.question_id = attempts.question_id AND
                 quizz_rel_questions.c_id=".api_get_course_int_id()."
             INNER JOIN ".$TBL_QUESTIONS." AS questions
-                ON questions.id=quizz_rel_questions.question_id AND
+                ON questions.iid=quizz_rel_questions.question_id AND
                 questions.c_id = ".api_get_course_int_id()."
 		  WHERE attempts.exe_id='".Database::escape_string($id)."' $user_restriction
 		  GROUP BY quizz_rel_questions.question_order, attempts.question_id";
@@ -588,7 +589,7 @@ foreach ($questionList as $questionId) {
     }
 
     if (isset($objQuestionTmp->category_list) && !empty($objQuestionTmp->category_list)) {
-        foreach($objQuestionTmp->category_list as $category_id) {
+        foreach ($objQuestionTmp->category_list as $category_id) {
             $category_list[$category_id]['score'] += $my_total_score;
             $category_list[$category_id]['total'] += $my_total_weight;
             $category_was_added_for_this_test = true;
@@ -597,6 +598,11 @@ foreach ($questionList as $questionId) {
 
     //No category for this question!
     if ($category_was_added_for_this_test == false) {
+        if (!isset($category_list['none'])) {
+            $category_list['none'] = array();
+            $category_list['none']['score'] = 0;
+            $category_list['none']['total'] = 0;
+        }
         $category_list['none']['score'] += $my_total_score;
         $category_list['none']['total'] += $my_total_weight;
     }

+ 1 - 0
main/exercice/exercise_submit.php

@@ -1334,6 +1334,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
                 //Show questions that belongs to a media
                 if (!empty($media_question_list)) {
                     foreach ($media_question_list as $my_question_id) {
+                        $last_question_in_media = false;
                         if ($counter == $count_of_questions_inside_media) {
                             $last_question_in_media = true;
                         }

+ 2 - 1
main/exercice/export/exercise_import.inc.php

@@ -39,7 +39,8 @@ function tempdir($dir, $prefix = 'tmp', $mode = 0777)
 
 function get_and_unzip_uploaded_exercise($baseWorkDir, $uploadPath)
 {
-    global $_course, $_user;
+    global $_user;
+    $_course = api_get_course_info();
     //Check if the file is valid (not to big and exists)
     if (!isset ($_FILES['userFile']) || !is_uploaded_file($_FILES['userFile']['tmp_name'])) {
         // upload failed

+ 1 - 2
main/exercice/hotpotatoes.lib.php

@@ -18,7 +18,6 @@ $dbTable = Database::get_course_table(TABLE_DOCUMENT); // TODO: This is a global
  * @return  boolean     Always true so far
  */
 function hotpotatoes_init($base_work_dir) {
-    //global $_course, $_user;
     $document_path = $base_work_dir.'/';
     if (!is_dir($document_path)) {
         if (is_file($document_path)) {
@@ -132,7 +131,7 @@ function ReadFileCont($full_file_path) {
  */
 function WriteFileCont($full_file_path, $content) {
     // Check if this is not an attack, trying to get into other directories or something like that.
-    global $_course;
+    $_course = api_get_course_info();
     if (Security::check_abs_path(dirname($full_file_path).'/', api_get_path(SYS_COURSE_PATH).$_course['path'].'/')) {
         // Check if this is not an attack, trying to upload a php file or something like that.
         if (basename($full_file_path) != Security::filter_filename(basename($full_file_path))) { return false; }

+ 4 - 4
main/exercice/question_pool.php

@@ -281,11 +281,11 @@ if (!empty($session_id) && $session_id != '-1') {
 }
 $course_select_list = array();
 foreach ($course_list as $item) {
-	$course_select_list[$item['id']] = "";
-	if ($item['id'] == api_get_course_int_id()) {
-		$course_select_list[$item['id']] = ">&nbsp;&nbsp;&nbsp;&nbsp;";
+	$course_select_list[$item['real_id']] = "";
+	if ($item['real_id'] == api_get_course_int_id()) {
+		$course_select_list[$item['real_id']] = ">&nbsp;&nbsp;&nbsp;&nbsp;";
 	}
-	$course_select_list[$item['id']] .= $item['title'];
+	$course_select_list[$item['real_id']] .= $item['title'];
 }
 
 $select_course_html =  Display::select('selected_course', $course_select_list, $selected_course, array('class'=>'chzn-select','onchange'=>'mark_course_id_changed(); submit_form(this);'));

+ 2 - 2
main/exercice/stats.php

@@ -21,9 +21,9 @@ if (!$result) {
 $session_id = api_get_session_id();
 
 if (empty($session_id)) {
-    $students = CourseManager :: get_student_list_from_course_code(api_get_course_id(), false);
+    $students = CourseManager :: get_student_list_from_course_code(api_get_course_int_id(), false);
 } else {
-    $students = CourseManager :: get_student_list_from_course_code(api_get_course_id(), true, $session_id);
+    $students = CourseManager :: get_student_list_from_course_code(api_get_course_int_id(), true, $session_id);
 }
 $count_students = count($students);
 

+ 7 - 4
main/exercice/testcategory.class.php

@@ -253,7 +253,7 @@ class Testcategory
 	If in_field=="" Return an array of all category objects in the database
 	Otherwise, return an array of all in_field value in the database (in_field = id or name or description)
 	 */
-	public static function getCategoryListInfo($in_field="", $in_courseid="") {
+	public static function getCategoryListInfo($in_field = "", $in_courseid="") {
 		if (empty($in_courseid) || $in_courseid=="") {
 			$in_courseid = api_get_course_int_id();
 		}
@@ -261,14 +261,17 @@ class Testcategory
 		$in_field = Database::escape_string($in_field);
 		$tabres = array();
 		if ($in_field=="") {
-			$sql = "SELECT * FROM $t_cattable WHERE c_id=$in_courseid ORDER BY title ASC";
+			$sql = "SELECT * FROM $t_cattable WHERE c_id = $in_courseid ORDER BY title ASC";
 			$res = Database::query($sql);
 			while ($row = Database::fetch_array($res)) {
                 $tmpcat = new Testcategory($row['iid'], $row['title'], $row['description'], $row['parent_id']);
 				$tabres[] = $tmpcat;
 			}
         } else {
-			$sql = "SELECT $in_field FROM $t_cattable WHERE c_id=$in_courseid ORDER BY $in_field ASC";
+			$sql = "SELECT $in_field
+			FROM $t_cattable WHERE c_id=$in_courseid
+			ORDER BY $in_field ASC";
+
 			$res = Database::query($sql);
 			while ($row = Database::fetch_array($res)) {
 				$tabres[] = $row[$in_field];
@@ -681,7 +684,7 @@ class Testcategory
         $category_list = self::getCategoryListInfo(null, $course_id);
         $category_name_list = array();
         if (!empty($category_list)) {
-            foreach($category_list as $category) {
+            foreach ($category_list as $category) {
                 $category_name_list[$category->id] = $category->name;
             }
         }

+ 3 - 1
main/exercice/upload_exercise.php

@@ -105,7 +105,9 @@ function lp_upload_quiz_main() {
  */
 function lp_upload_quiz_action_handling()
 {
-    global $_course, $debug;
+    global $debug;
+    $_course = api_get_course_info();
+
     if (!isset($_POST['submit_upload_quiz'])) {
         return;
     }

+ 17 - 20
main/forum/forumfunction.inc.php

@@ -197,7 +197,7 @@ function show_add_forumcategory_form($inputvalues = array(), $lp_id)
  */
 function show_add_forum_form($inputvalues = array(), $lp_id)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $gradebook = Security::remove_XSS($_GET['gradebook']);
     // Initialize the object.
@@ -480,7 +480,7 @@ function show_edit_forumcategory_form($inputvalues = array())
  */
 function store_forumcategory($values)
 {
-    global $_course;
+    $_course = api_get_course_info();
     global $_user;
 
     $course_id = api_get_course_int_id();
@@ -546,7 +546,7 @@ function store_forumcategory($values)
  */
 function store_forum($values)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $course_id = api_get_course_int_id();
     $session_id = api_get_session_id();
@@ -735,7 +735,7 @@ function store_forum($values)
  */
 function delete_forum_forumcategory_thread($content, $id)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $table_forums = Database::get_course_table(TABLE_FORUM);
     $table_forums_post = Database::get_course_table(TABLE_FORUM_POST);
@@ -1057,7 +1057,7 @@ function display_up_down_icon($content, $id, $list)
  */
 function change_visibility($content, $id, $target_visibility)
 {
-    global $_course;
+    $_course = api_get_course_info();
     $constants = array('forumcategory' => TOOL_FORUM_CATEGORY, 'forum' => TOOL_FORUM, 'thread' => TOOL_FORUM_THREAD);
     api_item_property_update(
         $_course,
@@ -2091,7 +2091,7 @@ function count_number_of_forums_in_category($cat_id)
 function store_thread($values)
 {
     global $_user;
-    global $_course;
+    $_course = api_get_course_info();
     global $current_forum;
     global $origin;
 
@@ -2704,7 +2704,7 @@ function current_qualify_of_thread($thread_id, $session_id)
  */
 function store_reply($values)
 {
-    global $_course;
+    $_course = api_get_course_info();
     global $current_forum;
     global $origin;
 
@@ -3272,7 +3272,7 @@ function forum_not_allowed_here()
 function get_whats_new()
 {
     global $_user;
-    global $_course;
+    $_course = api_get_course_info();
 
     $table_posts = Database :: get_course_table(TABLE_FORUM_POST);
     $tracking_last_tool_access = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
@@ -3288,11 +3288,7 @@ function get_whats_new()
 
     if (!$_SESSION['last_forum_access']) {
         $sql = "SELECT * FROM ".$tracking_last_tool_access."
-                WHERE access_user_id='".Database::escape_string(
-            $_user['user_id']
-        )."' AND access_cours_code='".Database::escape_string(
-            $_course['sysCode']
-        )."' AND access_tool='".Database::escape_string($tool)."'";
+                WHERE access_user_id='".Database::escape_string($_user['user_id'])."' AND c_id='".$course_id."' AND access_tool='".Database::escape_string($tool)."'";
         $result = Database::query($sql);
         $row = Database::fetch_array($result);
         $_SESSION['last_forum_access'] = $row['access_date'];
@@ -3615,7 +3611,7 @@ function handle_mail_cue($content, $id)
  */
 function send_mail($user_info = array(), $thread_information = array())
 {
-    global $_course;
+    $_course = api_get_course_info();
     $user_id = api_get_user_id();
     $subject = get_lang('NewForumPost').' - '.$_course['official_code'];
     if (isset($thread_information) && is_array($thread_information)) {
@@ -3770,7 +3766,7 @@ function move_post_form()
  */
 function store_move_post($values)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $table_forums = Database :: get_course_table(TABLE_FORUM);
     $table_threads = Database :: get_course_table(TABLE_FORUM_THREAD);
@@ -3899,7 +3895,7 @@ function store_move_post($values)
  */
 function store_move_thread($values)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $table_forums = Database :: get_course_table(TABLE_FORUM);
     $table_threads = Database :: get_course_table(TABLE_FORUM_THREAD);
@@ -4144,7 +4140,7 @@ function search_link()
  */
 function add_forum_attachment_file($file_comment, $last_id)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $agenda_forum_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT);
 
@@ -4208,7 +4204,7 @@ function add_forum_attachment_file($file_comment, $last_id)
  */
 function edit_forum_attachment_file($file_comment, $post_id, $id_attach)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $table_forum_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT);
     $course_id = api_get_course_int_id();
@@ -4293,7 +4289,7 @@ function get_attachment($post_id)
  */
 function delete_attachment($post_id, $id_attach = 0)
 {
-    global $_course;
+    $_course = api_get_course_info();
 
     $forum_table_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT);
     $course_id = api_get_course_int_id();
@@ -4563,7 +4559,8 @@ function get_notifications($content, $id)
  */
 function send_notifications($forum_id = 0, $thread_id = 0, $post_id = 0)
 {
-    global $_course, $_user;
+    global $_user;
+    $_course = api_get_course_info();
 
     // The content of the mail
     $thread_link = api_get_path(WEB_CODE_PATH).'forum/viewthread.php?'.api_get_cidreq(

+ 18 - 18
main/gradebook/gradebook_add_eval.php

@@ -19,7 +19,7 @@ api_block_anonymous_users();
 block_students();
 
 $select_cat=isset($_GET['selectcat']) ? Security::remove_XSS($_GET['selectcat']) : '';
-$is_allowedToEdit = $is_courseAdmin;
+$is_allowedToEdit = api_is_course_admin();
 $evaladd = new Evaluation();
 $evaladd->set_user_id($_user['user_id']);
 if (isset ($_GET['selectcat']) && (!empty ($_GET['selectcat']))) {
@@ -38,24 +38,24 @@ if ($form->validate()) {
 	$eval->set_name($values['name']);
 	$eval->set_description($values['description']);
 	$eval->set_user_id($values['hid_user_id']);
-	
+
 	if (!empty ($values['hid_course_code'])) {
 		$eval->set_course_code($values['hid_course_code']);
 	}
-	
+
 	//Always add the gradebook to the course
-	$eval->set_course_code(api_get_course_id());	
+	$eval->set_course_code(api_get_course_id());
 	$eval->set_category_id($values['hid_category_id']);
-    
-    $parent_cat = Category :: load($values['hid_category_id']);            
+
+    $parent_cat = Category :: load($values['hid_category_id']);
     $global_weight = $cat[0]->get_weight();
-    //$values['weight'] = $values['weight_mask']/$global_weight*$parent_cat[0]->get_weight();    
+    //$values['weight'] = $values['weight_mask']/$global_weight*$parent_cat[0]->get_weight();
     $values['weight'] = $values['weight_mask'];
-    
-    
-	$eval->set_weight($values['weight']);	
+
+
+	$eval->set_weight($values['weight']);
 	$eval->set_max($values['max']);
-    
+
 	if (empty ($values['visible'])) {
 		$visible = 0;
 	} else {
@@ -94,18 +94,18 @@ $htmlHeadXtra[] = '<script type="text/javascript">
 $(document).ready( function() {
 
     $("#hid_category_id").change(function(){
-        
+
        $("#hid_category_id option:selected").each(function () {
            var cat_id = $(this).val();
-            $.ajax({ 
-                url: "'.api_get_path(WEB_AJAX_PATH).'gradebook.ajax.php?a=get_gradebook_weight", 
+            $.ajax({
+                url: "'.api_get_path(WEB_AJAX_PATH).'gradebook.ajax.php?a=get_gradebook_weight",
                 data: "cat_id="+cat_id,
                 success: function(return_value) {
                     if (return_value != 0 ) {
-                        $("#max_weight").html(return_value);                                             
-                    }                    
-                },            
-            });    
+                        $("#max_weight").html(return_value);
+                    }
+                },
+            });
        });
     });
 });

+ 1 - 1
main/gradebook/gradebook_result.class.php

@@ -277,7 +277,7 @@ class GradeBookResult
 	 * @return	boolean		False on error
 	 */
 	public function exportCompleteReportDOC($data) {
-        global $_course;
+        $_course = api_get_course_info();
         $filename = 'gb_results_'.$_course['code'].'_'.gmdate('YmdGis');
         $filepath = api_get_path(SYS_ARCHIVE_PATH).$filename;
         //build the results

+ 3 - 2
main/gradebook/lib/be/result.class.php

@@ -90,8 +90,9 @@ class Result
 			if ($info_verified_if_exist_evaluation != 0 ) {
 
 				if (api_get_session_id()) {
-					$sql_course_rel_user = 'SELECT course_code, id_user as user_id, status FROM '.$tbl_session_rel_course_user.'
-												 WHERE status=0 AND course_code="'.api_get_course_id().'" AND id_session='.api_get_session_id();
+					$sql_course_rel_user = 'SELECT course_code, id_user as user_id, status
+					                        FROM '.$tbl_session_rel_course_user.'
+											WHERE status=0 AND c_id="'.api_get_course_int_id().'" AND id_session='.api_get_session_id();
 				} else {
 					$sql_course_rel_user = 'SELECT course_code, user_id, status
 					                        FROM '.$tbl_course_rel_course.'

+ 3 - 3
main/gradebook/lib/fe/evalform.class.php

@@ -17,7 +17,7 @@ require_once dirname(__FILE__).'/../gradebook_functions.inc.php';
  * @package chamilo.gradebook
  */
 
-$htmlHeadXtra[] = '<script type="text/javascript">
+$htmlHeadXtra[] = '<script>
 function setFocus(){
     $("#evaluation_title").focus();
 }
@@ -246,8 +246,8 @@ class EvalForm extends FormValidator
                </table>
             </form>'
         );
-
-        $tblusers = get_users_in_course($this->evaluation_object->get_course_code());
+        $courseInfo = api_get_course_info($this->evaluation_object->get_course_code());
+        $tblusers = get_users_in_course($courseInfo['real_id']);
         $nr_users = 0;
         //extra field for check on maxvalue
         $this->addElement('hidden', 'maxvalue', $this->evaluation_object->get_max());

+ 11 - 11
main/gradebook/lib/gradebook_functions_users.inc.php

@@ -9,7 +9,7 @@
  * returns users within a course given by param
  * @param $course_id
  */
-function get_users_in_course($course_id) {
+function get_users_in_course($courseId) {
 	$tbl_course_user 			= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
 	$tbl_session_course_user 	= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 	$tbl_user 					= Database :: get_main_table(TABLE_MAIN_USER);
@@ -17,28 +17,27 @@ function get_users_in_course($course_id) {
 	$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname ASC' : ' ORDER BY lastname, firstname ASC';
 
 	$current_session = api_get_session_id();
-	$course_id = Database::escape_string($course_id);
-    $courseInfo = api_get_course_info($course_id);
+    $courseId = Database::escape_string($courseId);
 
 	if (!empty($current_session)) {
 		$sql = "SELECT user.user_id, user.username, lastname, firstname, official_code
 			 	FROM $tbl_session_course_user as scru, $tbl_user as user
 			 	WHERE scru.id_user=user.user_id
-			 	AND scru.status=0
-			 	AND scru.course_code='$course_id' AND id_session = '$current_session' $order_clause ";
+                    AND scru.status=0
+                    AND scru.c_id ='$courseId' AND id_session = '$current_session'
+			 	$order_clause ";
 	} else {
 		$sql = 'SELECT user.user_id, user.username, lastname, firstname, official_code
                 FROM '.$tbl_course_user.' as course_rel_user, '.$tbl_user.' as user
                 WHERE   course_rel_user.user_id=user.user_id AND
                         course_rel_user.status='.STUDENT.' AND
-                        course_rel_user.c_id = '.$courseInfo['real_id'].'
+                        course_rel_user.c_id = '.$courseId.'
                 '.$order_clause;
 	}
 	$result = Database::query($sql);
 	return get_user_array_from_sql_result($result);
 }
 
-
 function get_user_array_from_sql_result($result) {
 	$a_students = array();
 	while ($user = Database::fetch_array($result)) {
@@ -61,11 +60,12 @@ function get_all_users ($evals = array(), $links = array()) {
 
 	foreach ($evals as $eval) {
 		$coursecode = $eval->get_course_code();
+        $courseInfo = api_get_course_info($coursecode);
 		// evaluation in course
 		if (isset($coursecode) && !empty($coursecode)) {
 			if (!array_key_exists($coursecode,$coursecodes)) {
 				$coursecodes[$coursecode] = '1';
-				$users = array_merge($users, get_users_in_course($coursecode));
+				$users = array_merge($users, get_users_in_course($courseInfo['real_id']));
 			}
 		} else {// course independent evaluation
 			$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
@@ -73,8 +73,7 @@ function get_all_users ($evals = array(), $links = array()) {
 
 			$sql = 'SELECT user.user_id,lastname, firstname, user.official_code
                     FROM '.$tbl_res.' as res, '.$tbl_user.' as user
-                    WHERE res.evaluation_id = '.intval($eval->get_id())
-					.' AND res.user_id = user.user_id';
+                    WHERE res.evaluation_id = '.intval($eval->get_id()).' AND res.user_id = user.user_id';
 			$result = Database::query($sql);
 			$users = array_merge($users, get_user_array_from_sql_result($result));
 		}
@@ -83,9 +82,10 @@ function get_all_users ($evals = array(), $links = array()) {
 	foreach ($links as $link) {
 		// links are always in a course
 		$coursecode = $link->get_course_code();
+        $courseInfo = api_get_course_info($coursecode);
 		if (!array_key_exists($coursecode,$coursecodes)) {
 			$coursecodes[$coursecode] = '1';
-			$users = array_merge($users, get_users_in_course($coursecode));
+			$users = array_merge($users, get_users_in_course($courseInfo['real_id']));
 		}
 	}
 	unset ($coursecodes);

+ 1 - 1
main/group/group_space.php

@@ -115,7 +115,7 @@ if (isset($_GET['action'])) {
 /* 	Main Display Area */
 
 $course_code = $_course['sysCode'];
-$is_course_member = CourseManager :: is_user_subscribed_in_real_or_linked_course(api_get_user_id(), $course_code);
+$is_course_member = CourseManager :: is_user_subscribed_in_real_or_linked_course(api_get_user_id(), api_get_course_int_id());
 
 /*
  * Edit the group

+ 3 - 3
main/inc/ajax/course_home.ajax.php

@@ -149,7 +149,7 @@ switch ($action) {
             foreach($flat_list as $lp_id => $lp_item) {
                 $temp[$count]['id']= $lp_id;
                 $lp_url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
-                $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(),$item['code'], $session_id, false);
+                $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(), $item['id'], $session_id, false);
                 if ($lp_item['modified_on'] == '0000-00-00 00:00:00' || empty($lp_item['modified_on'])) {
                     $lp_date = api_get_local_time($lp_item['created_on']);
                     $image = 'new.gif';
@@ -271,7 +271,7 @@ switch ($action) {
                 $temp[$count]['id']= $lp_id;
                 $lp_url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
 
-                $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(),$item['code'], $session_id, false);
+                $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(),$item['id'], $session_id, false);
                 if ($lp_item['modified_on'] == '0000-00-00 00:00:00' || empty($lp_item['modified_on'])) {
                     $lp_date = api_get_local_time($lp_item['created_on']);
                     $image = 'new.gif';
@@ -396,7 +396,7 @@ switch ($action) {
             foreach($flat_list as $lp_id => $lp_item) {
                 $temp[$count]['id']= $lp_id;
                 $lp_url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
-                $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(),$item['code'], $session_id, false);
+                $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(),$item['id'], $session_id, false);
                 if ($lp_item['modified_on'] == '0000-00-00 00:00:00' || empty($lp_item['modified_on'])) {
                     $lp_date = api_get_local_time($lp_item['created_on']);
                     $image = 'new.gif';

+ 16 - 16
main/inc/ajax/myspace.ajax.php

@@ -15,36 +15,36 @@ require_once api_get_path(SYS_CODE_PATH).'mySpace/myspace.lib.php';
 switch ($action) {
     case 'access_detail':
         $user_id        = intval($_REQUEST['student']);
-        $course_code    = Security::remove_XSS($_REQUEST['course']);
+        $courseId    = Security::remove_XSS($_REQUEST['course']);
         $type           = Security::remove_XSS($_REQUEST['type']);
         $range          = Security::remove_XSS($_REQUEST['range']);
-        
+
         if ($range == 1){
             $start_date     = Security::remove_XSS($_REQUEST['sd']);
             $end_date       = Security::remove_XSS($_REQUEST['ed']);
-            $sql_result     = get_connections_to_course_by_date($user_id, $course_code, $start_date, $end_date);
+            $sql_result     = get_connections_to_course_by_date($user_id, $courseId, $start_date, $end_date);
         } else {
-            $sql_result     = MySpace::get_connections_to_course($user_id, $course_code);
-        }                
+            $sql_result     = MySpace::get_connections_to_course($user_id, $courseId);
+        }
         $foo_print = grapher($sql_result, $start_date, $end_date, $type);
         echo $foo_print;
-             
+
         break;
-        
+
     case 'access_detail_by_date':
-        
+
         $db = array('is_empty'=>true);
         $start_date     = isset($_REQUEST['startDate'])?$_REQUEST['startDate']:"";
         $end_date       = isset($_REQUEST['endDate'])?$_REQUEST['endDate']:"";
         $user_id        = isset($_REQUEST['student'])?$_REQUEST['student']:"";
-        $course_code    = isset($_REQUEST['course'])?$_REQUEST['course']:"";
-    
-        $sql_result = get_connections_to_course_by_date($user_id, $course_code, $start_date, $end_date);
-    
+        $courseId    = isset($_REQUEST['course'])?$_REQUEST['course']:"";
+
+        $sql_result = get_connections_to_course_by_date($user_id, $courseId, $start_date, $end_date);
+
         if (is_array($sql_result) && count($sql_result) > 0) {
             $db['is_empty']     = false;
             $db['result']       = convert_to_string($sql_result);
-            $rst                = get_stats($user_id, $course_code, $start_date, $end_date);
+            $rst                = get_stats($user_id, $courseId, $start_date, $end_date);
             $foo_stats           = '<strong>'.get_lang('Total').': </strong>'.$rst['total'].'<br />';
             $foo_stats          .= '<strong>'.get_lang('Average').': </strong>'.$rst['avg'].'<br />';
             $foo_stats          .= '<strong>'.get_lang('Quantity').' : </strong>'.$rst['times'].'<br />';
@@ -54,10 +54,10 @@ switch ($action) {
             $db['result']       = Display::return_message(get_lang('NoDataAvailable'), 'warning');
             $db['graph_result'] = Display::return_message(get_lang('NoDataAvailable'), 'warning');
             $db['stats']        = Display::return_message(get_lang('NoDataAvailable'), 'warning');
-        }        
+        }
         header('Cache-Control: no-cache');
         echo json_encode($db); // requires: PHP >= 5.2.0, PECL json >= 1.2.0
-        
-    break;             
+
+    break;
 }
 exit;

+ 5 - 5
main/inc/lib/announcements.inc.php

@@ -313,7 +313,7 @@ class AnnouncementManager
         $file_comment = null,
         $end_date = null
     ) {
-        global $_course;
+        $_course = api_get_course_info();
         $tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT);
 
         // filter data
@@ -408,7 +408,7 @@ class AnnouncementManager
         $file = array(),
         $file_comment = ''
     ) {
-        global $_course;
+        $_course = api_get_course_info();
 
         // database definitions
         $tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT);
@@ -497,7 +497,7 @@ class AnnouncementManager
      */
     public static function edit_announcement($id, $emailTitle, $newContent, $to, $file = array(), $file_comment = '')
     {
-        global $_course;
+        $_course = api_get_course_info();
 
         $course_id = api_get_course_int_id();
         $tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY);
@@ -1216,7 +1216,7 @@ class AnnouncementManager
      */
     public static function add_announcement_attachment_file($announcement_id, $file_comment, $file)
     {
-        global $_course;
+        $_course = api_get_course_info();
         $tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
         $return = 0;
         $announcement_id = intval($announcement_id);
@@ -1264,7 +1264,7 @@ class AnnouncementManager
      */
     public static function edit_announcement_attachment_file($id_attach, $file, $file_comment)
     {
-        global $_course;
+        $_course = api_get_course_info();
         $tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
         $return = 0;
         $course_id = api_get_course_int_id();

+ 6 - 3
main/inc/lib/attendance.lib.php

@@ -306,7 +306,7 @@ class Attendance
 	 * @return 	int    last id
 	 */
 	public function attendance_edit($attendance_id, $link_to_gradebook = false) {
-		global $_course;
+        $_course = api_get_course_info();
 		$tbl_attendance     = Database :: get_course_table(TABLE_ATTENDANCE);
 		$table_link         = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
 		$session_id         = api_get_session_id();
@@ -446,6 +446,9 @@ class Attendance
 	 */
 	public function get_users_rel_course($attendance_id = 0) {
         $current_course_id  = $this->get_course_id();
+        $courseInfo = api_get_course_info($current_course_id);
+        $courseId = $courseInfo['real_id'];
+
         $current_session_id  = $this->get_session_id();
 
 		if (!empty($current_session_id)) {
@@ -465,9 +468,9 @@ class Attendance
 			$user_status_in_course  = null;
 
 			if ($current_session_id) {
-                $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $current_course_id, $current_session_id);
+                $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $courseId, $current_session_id);
 			} else {
-			    $user_status_in_course = CourseManager::get_user_in_course_status($uid, $current_course_id);
+			    $user_status_in_course = CourseManager::get_user_in_course_status($uid, $courseId);
 			}
 
 			//Not taking into account DRH or COURSEMANAGER

+ 7 - 10
main/inc/lib/auth.lib.php

@@ -343,28 +343,26 @@ class AuthLib {
      * @param   string  Course code
      * @return  bool    True if it success
      */
-    public function remove_user_from_course($course_code)
+    public function remove_user_from_course($courseId)
     {
         $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
-        $course_info = api_get_course_info($course_code);
-        $course_id = $course_info['real_id'];
 
         // protect variables
         $current_user_id = api_get_user_id();
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
         $result = true;
 
         // we check (once again) if the user is not course administrator
         // because the course administrator cannot unsubscribe himself
         // (s)he can only delete the course
-        $sql_check = "SELECT * FROM $tbl_course_user WHERE user_id='" . $current_user_id . "' AND c_id ='" . $course_id . "' AND status='1' ";
+        $sql_check = "SELECT * FROM $tbl_course_user WHERE user_id='" . $current_user_id . "' AND c_id ='" . $courseId . "' AND status='1' ";
         $result_check = Database::query($sql_check);
         $number_of_rows = Database::num_rows($result_check);
         if ($number_of_rows > 0) {
             $result = false;
         }
 
-        CourseManager::unsubscribe_user($current_user_id, $course_code);
+        CourseManager::unsubscribe_user($current_user_id, $courseId);
         return $result;
     }
 
@@ -555,7 +553,7 @@ class AuthLib {
         while ($row = Database::fetch_array($result)) {
             $row['registration_code'] = !empty($row['registration_code']);
             $count_users = CourseManager::get_users_count_in_course($row['code']);
-            $count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time() - (30 * 86400)));
+            $count_connections_last_month = Tracking::get_course_connections_count($row['id'], 0, api_get_utc_datetime(time() - (30 * 86400)));
 
             if ($row['tutor_name'] == '0') {
                 $row['tutor_name'] = get_lang('NoManager');
@@ -626,7 +624,7 @@ class AuthLib {
         while ($row = Database::fetch_array($result_find)) {
             $row['registration_code'] = !empty($row['registration_code']);
             $count_users = count(CourseManager::get_user_list_from_course_code($row['code']));
-            $count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time() - (30 * 86400)));
+            $count_connections_last_month = Tracking::get_course_connections_count($row['id'], 0, api_get_utc_datetime(time() - (30 * 86400)));
 
             $courses[] = array(
                 'code' => $row['code'],
@@ -663,8 +661,7 @@ class AuthLib {
             } else {
                 $status_user_in_new_course = null;
             }
-            $courseInfo = api_get_course_info($course_code);
-            if (CourseManager::add_user_to_course($user_id, $courseInfo['real_id'], $status_user_in_new_course)) {
+            if (CourseManager::add_user_to_course($user_id, $all_course_information['real_id'], $status_user_in_new_course)) {
                 $send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $course_code);
                 if ($send == 1) {
                     CourseManager::email_to_tutor($user_id, $course_code, $send_to_tutor_also = false);

+ 5 - 6
main/inc/lib/blog.lib.php

@@ -273,7 +273,7 @@ class Blog
     public static function create_post($title, $full_text, $file_comment, $blog_id)
     {
         global $_user;
-        global $_course;
+        $_course = api_get_course_info();
 
         $blog_table_attachment = Database::get_course_table(TABLE_BLOGS_ATTACHMENT);
         $upload_ok = true;
@@ -413,7 +413,7 @@ class Blog
         $task_id = 'NULL'
     ) {
         global $_user;
-        global $_course;
+        $_course = api_get_course_info();
         global $blog_table_attachment;
 
         $upload_ok = true;
@@ -2375,7 +2375,7 @@ class Blog
     public static function display_form_user_subscribe($blog_id)
     {
         // Init
-        global $_course;
+        $_course = api_get_course_info();
         $is_western_name_order = api_is_western_name_order();
         $currentCourse = $_course['sysCode'];
         $tbl_users = Database::get_main_table(TABLE_MAIN_USER);
@@ -2415,7 +2415,7 @@ class Blog
             $session_id = 0;
         }
 
-        $student_list = CourseManager :: get_student_list_from_course_code($currentCourse, false, $session_id);
+        $student_list = CourseManager :: get_student_list_from_course_code(api_get_course_int_id(), false, $session_id);
         $user_data = array();
 
         // Add users that are not in this blog to the list.
@@ -3053,8 +3053,7 @@ function get_blog_attachment($blog_id, $post_id = null, $comment_id = null)
 
 function delete_all_blog_attachment($blog_id, $post_id = null, $comment_id = null)
 {
-
-    global $_course;
+    $_course = api_get_course_info();
     $blog_table_attachment = Database::get_course_table(TABLE_BLOGS_ATTACHMENT);
     $blog_id = Database::escape_string($blog_id);
     $comment_id = Database::escape_string($comment_id);

+ 3 - 3
main/inc/lib/course.class.php

@@ -17,7 +17,7 @@ class Course
     /**
      *
      * @param string $where
-     * @return \ResultSet 
+     * @return \ResultSet
      */
     public static function query($where)
     {
@@ -58,12 +58,12 @@ class Course
     }
 
     /**
-     * 
+     *
      * @return \Model\Course|null
      */
     public static function current()
     {
-        global $_course;
+        $_course = api_get_course_info();
         /**
          * Note that $_course = -1 when not set.
          */

+ 105 - 108
main/inc/lib/course.lib.php

@@ -353,7 +353,8 @@ class CourseManager
      * @return  mixed   False on user ID not found, void otherwise
      * @assert () === false
      */
-    public static function unsubscribe_user($user_id, $courseId, $session_id = 0) {
+    public static function unsubscribe_user($user_id, $courseId, $session_id = 0)
+    {
         if (!isset($user_id)) { return false; }
         if (!is_array($user_id)) {
             $user_id = array($user_id);
@@ -418,7 +419,6 @@ class CourseManager
         $sql_delete_mail_queue = "DELETE FROM ".Database::get_course_table(TABLE_FORUM_MAIL_QUEUE)." WHERE c_id = $courseId AND user_id IN (".$user_ids.")";
         Database::query($sql_delete_mail_queue);
 
-
         $item_property_lp_subscription = "DELETE FROM  ".Database::get_course_table(TABLE_ITEM_PROPERTY)."
                                           WHERE lastedit_type = 'LearnpathSubscription' AND tool = 'learnpath' AND c_id = $courseId AND to_user_id IN (".$user_ids.")";
         Database::query($item_property_lp_subscription);
@@ -427,7 +427,7 @@ class CourseManager
         if (!empty($session_id)) {
             // Delete in table session_rel_course_rel_user
             Database::query("DELETE FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
-                             WHERE id_session ='".$session_id."' AND course_code = '".Database::escape_string($courseCode)."' AND id_user IN ($user_ids)");
+                             WHERE id_session ='".$session_id."' AND c_id = '".$courseId."' AND id_user IN ($user_ids)");
 
             foreach ($user_id as $uid) {
                 // check if a user is register in the session with other course
@@ -448,9 +448,10 @@ class CourseManager
                     WHERE id = '".$session_id."'");
 
             // Update the table session_rel_course
-            $row = Database::fetch_array(@Database::query("SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." WHERE id_session = '$session_id' AND course_code = '$courseCode' AND status<>2" ));
+            $row = Database::fetch_array(@Database::query("SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
+                   WHERE id_session = '$session_id' AND c_id = '$courseId' AND status<>2" ));
             $count = $row[0]; // number of users by session and course
-            $result = @Database::query("UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE)." SET nbr_users = '$count' WHERE id_session = '$session_id' AND course_code = '$courseCode' ");
+            $result = @Database::query("UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE)." SET nbr_users = '$count' WHERE id_session = '$session_id' AND c_id = '$courseId' ");
 
         } else {
             Database::query("DELETE FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
@@ -483,6 +484,7 @@ class CourseManager
         }
         $course_code = Database::escape_string($course_code);
         $courseInfo = api_get_course_info($course_code);
+        $courseId = $courseInfo['real_id'];
 
         if (empty($user_id) || empty ($course_code)) {
             return false;
@@ -506,7 +508,7 @@ class CourseManager
         // Check whether the user has not been already subscribed to the course.
         if (empty($session_id)) {
             if (Database::num_rows(@Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
-                    WHERE user_id = '$user_id' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c_id = ".$courseInfo['real_id'])) > 0) {
+                    WHERE user_id = '$user_id' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c_id = ".$courseId)) > 0) {
                 return false; // The user has been already subscribed to the course.
             }
         }
@@ -515,7 +517,7 @@ class CourseManager
 
             // Check whether the user has not already been stored in the session_rel_course_user table
             if (Database::num_rows(@Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
-                    WHERE course_code = '".$course_code."'
+                    WHERE c_id = '".$courseId."'
                     AND id_session ='".$session_id."'
                     AND id_user = '".$user_id."'")) > 0) {
                 return false;
@@ -535,29 +537,30 @@ class CourseManager
             // Add him/her in the table session_rel_course_rel_user
             @Database::query("INSERT INTO ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
                     SET id_session ='".$session_id."',
-                    course_code = '".$_SESSION['_course']['id']."',
+                    c_id = '".$courseId."',
                     id_user = '".$user_id."'");
 
             // Add him/her in the table session_rel_user
             @Database::query("INSERT INTO ".Database::get_main_table(TABLE_MAIN_SESSION_USER)."SET id_session ='".$session_id."', id_user = '".$user_id."'");
 
             // Update the table session
-            $row = Database::fetch_array(@Database::query("SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_USER)." WHERE id_session = '".$session_id."' AND relation_type<>".SESSION_RELATION_TYPE_RRHH.""));
+            $row = Database::fetch_array(@Database::query("SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_USER)."
+                            WHERE id_session = '".$session_id."' AND relation_type<>".SESSION_RELATION_TYPE_RRHH.""));
             $count = $row[0]; // number of users by session
             $result = @Database::query("UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION)." SET nbr_users = '$count' WHERE id = '".$session_id."'");
 
             // Update the table session_rel_course
-            $row = Database::fetch_array(@Database::query("SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." WHERE id_session = '".$session_id."' AND course_code = '$course_code' AND status<>2" ));
+            $row = Database::fetch_array(@Database::query("SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
+                   WHERE id_session = '".$session_id."' AND c_id = ".$courseId." AND status <> 2" ));
             $count = $row[0]; // number of users by session
-            $result = @Database::query("UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE)." SET nbr_users = '$count' WHERE id_session = '".$session_id."' AND course_code = '$course_code' ");
+            $result = @Database::query("UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE)." SET nbr_users = '$count'
+                      WHERE id_session = '".$session_id."' AND c_id = '$courseId' ");
 
         } else {
-            $course_sort = self::userCourseSort($user_id, $course_code);
-            $course_info = api_get_course_info($course_code);
+            $course_sort = self::userCourseSort($user_id, $courseId);
             $result = @Database::query("INSERT INTO ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
                     SET
-                        c_id = ".$course_info['real_id'].",
-                        course_code = '$course_code',
+                        c_id = ".$courseId.",
                         user_id     = '$user_id',
                         status      = '".$status."',
                         sort        = '". ($course_sort)."'");
@@ -703,7 +706,7 @@ class CourseManager
 
         if (!empty($courses_temp)) {
             foreach($courses_temp as $course_item) {
-                $courses_as_admin[0][$course_item['course_code']] = $course_item['course_code'];
+                $courses_as_admin[0][$course_item['real_id']] = $course_item['real_id'];
             }
         }
 
@@ -788,21 +791,24 @@ class CourseManager
         $user_id = intval($user_id);
         $data = array();
 
-        $sql_nb_cours = "SELECT course_rel_user.course_code, course.title, course.id, course.db_name, course.id as real_id
-            FROM $tbl_course_user as course_rel_user
-            INNER JOIN $tbl_course as course
-                ON course.id = course_rel_user.c_id
-            WHERE course_rel_user.user_id='$user_id' AND course_rel_user.status='1'
-            ORDER BY course.title";
+        $sql_nb_cours = "SELECT course_rel_user.c_id,
+                                course.title, course.id,
+                                course.db_name,
+                                course.id as real_id
+                        FROM $tbl_course_user as course_rel_user
+                        INNER JOIN $tbl_course as course
+                            ON course.id = course_rel_user.c_id
+                        WHERE course_rel_user.user_id='$user_id' AND course_rel_user.status='1'
+                        ORDER BY course.title";
 
         if (api_get_multiple_access_url()) {
             $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
             $access_url_id = api_get_current_access_url_id();
             if ($access_url_id != -1) {
-                $sql_nb_cours = "    SELECT course_rel_user.course_code, course.title, course.id, course.db_name, course.id as real_id
+                $sql_nb_cours = "    SELECT course_rel_user.c_id, course.title, course.id, course.db_name, course.id as real_id
                     FROM $tbl_course_user as course_rel_user
                     INNER JOIN $tbl_course as course
-                        ON course.c_id = course_rel_user.c_id
+                        ON course.id = course_rel_user.c_id
                       INNER JOIN $tbl_course_rel_access_url course_rel_url
                         ON (course_rel_url.c_id = course.id)
                       WHERE access_url_id =  $access_url_id  AND course_rel_user.user_id='$user_id' AND course_rel_user.status='1'
@@ -813,7 +819,7 @@ class CourseManager
         $result_nb_cours = Database::query($sql_nb_cours);
         if (Database::num_rows($result_nb_cours) > 0) {
             while ($row = Database::fetch_array($result_nb_cours,'ASSOC')) {
-                $data[$row['course_code']] = $row;
+                $data[$row['c_id']] = $row;
             }
         }
         return $data;
@@ -826,7 +832,7 @@ class CourseManager
      * @param    bool    True for checking inside sessions too, by default is not checked
      * @return     bool     true if the user is registered in the course, false otherwise
      */
-    public static function is_user_subscribed_in_course($user_id, $course_code = null, $in_a_session = false, $session_id = null) {
+    public static function is_user_subscribed_in_course($user_id, $courseId = null, $in_a_session = false, $session_id = null) {
 
         $user_id = intval($user_id);
 
@@ -836,14 +842,10 @@ class CourseManager
             $session_id = intval($session_id);
         }
 
-        $condition_course = '';
         $condition_course_id = null;
-        if (isset($course_code)) {
-            $course_code = Database::escape_string($course_code);
-            $condition_course = ' AND course_code = "'.$course_code.'" ';
-            $courseInfo = api_get_course_info($course_code);
-            $condition_course_id = ' AND c_id = "'.$courseInfo['real_id'].'" ';
-
+        if (isset($courseId)) {
+            $courseId = intval($courseId);
+            $condition_course_id = ' AND c_id = "'.$courseId.'" ';
         }
 
         $sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
@@ -860,12 +862,12 @@ class CourseManager
         }
 
         if (Database::num_rows(Database::query('SELECT 1 FROM '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).
-                ' WHERE id_user = '.$user_id.' '.$condition_course.' ')) > 0) {
+                ' WHERE id_user = '.$user_id.' '.$condition_course_id.' ')) > 0) {
             return true;
         }
 
         if (Database::num_rows(Database::query('SELECT 1 FROM '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).
-                ' WHERE id_user = '.$user_id.' AND status=2 '.$condition_course.' ')) > 0) {
+                ' WHERE id_user = '.$user_id.' AND status=2 '.$condition_course_id.' ')) > 0) {
             return true;
         }
 
@@ -904,13 +906,15 @@ class CourseManager
      *
      *    @return true if the user is registered in the real course or linked courses, false otherwise
      */
-    public static function is_user_subscribed_in_real_or_linked_course ($user_id, $course_code, $session_id = '') {
+    public static function is_user_subscribed_in_real_or_linked_course ($user_id, $courseId, $session_id = '') {
 
         if ($user_id != strval(intval($user_id))) {
             return false;
         }
 
-        $course_code = Database::escape_string($course_code);
+        $session_id = intval($session_id);
+
+        $courseId = Database::escape_string($courseId);
 
         if ($session_id == '') {
             $result = Database::fetch_array(Database::query("SELECT *
@@ -919,7 +923,7 @@ class CourseManager
                     ON course.id = course_user.c_id
                     WHERE   course_user.user_id = '$user_id' AND
                             course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
-                            ( course.code = '$course_code' OR target_course_code = '$course_code')"));
+                            course.id = '$courseId'"));
             return !empty($result);
         }
 
@@ -930,7 +934,7 @@ class CourseManager
         // A user?
         if (Database::num_rows(Database::query("SELECT id_user
                     FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
-                    WHERE id_session='".$_SESSION['id_session']."'
+                    WHERE id_session='".$session_id."'
                     AND id_user='$user_id'"))) {
             return true;
         }
@@ -938,16 +942,16 @@ class CourseManager
         // A course coach?
         if (Database::num_rows(Database::query("SELECT id_user
                     FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
-                    WHERE id_session='".$_SESSION['id_session']."'
+                    WHERE id_session='".$session_id."'
                     AND id_user = '$user_id' AND status = 2
-                    AND course_code='$course_code'"))) {
+                    AND c_id ='$courseId'"))) {
             return true;
         }
 
         // A session coach?
         if (Database::num_rows(Database::query("SELECT id_coach
                     FROM ".Database::get_main_table(TABLE_MAIN_SESSION)." AS session
-                    WHERE session.id='".$_SESSION['id_session']."'
+                    WHERE session.id='".$session_id."'
                     AND id_coach='$user_id'"))) {
             return true;
         }
@@ -983,6 +987,7 @@ class CourseManager
         }
 
         $courseInfo = api_get_course_info($course_code);
+        $courseId = $courseInfo['real_id'];
 
         $filter_by_status_condition = null;
 
@@ -991,7 +996,7 @@ class CourseManager
             $sql .= ' FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user ';
             $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' as session_course_user
                       ON user.user_id = session_course_user.id_user
-                      AND session_course_user.course_code="'.$course_code.'"
+                      AND session_course_user.c_id="'.$courseId.'"
                       AND session_course_user.id_session = '.$session_id;
             $where[] = ' session_course_user.course_code IS NOT NULL ';
 
@@ -1014,17 +1019,18 @@ class CourseManager
                     $sql  = 'SELECT DISTINCT course_rel_user.status as status_rel, user.user_id, course_rel_user.role, course_rel_user.tutor_id, user.*  ';
                 }
             }
+
             $sql .= ' FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user ';
             $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_COURSE_USER).' as course_rel_user
                         ON user.user_id = course_rel_user.user_id AND
                         course_rel_user.relation_type <> '.COURSE_RELATION_TYPE_RRHH;
             if (!empty($course_code)) {
-                $sql .= " AND course_rel_user.c_id = ".$courseInfo['real_id'];
+                $sql .= " AND course_rel_user.c_id = ".$courseId;
             } else {
                 $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
                 $sql .= " INNER JOIN  $course_table course ON course_rel_user.c_id = course.id";
             }
-            $where[] = ' course_rel_user.course_code IS NOT NULL ';
+            $where[] = ' course_rel_user.c_id IS NOT NULL ';
 
             if (isset($filter_by_status) && $filter_by_status != '') {
                 $filter_by_status = intval($filter_by_status);
@@ -1103,7 +1109,7 @@ class CourseManager
                         }
 
                         $users[$row_key]['extra_'.$extra['1']] = $name;
-                        $users[$row_key]['training_hours'] += Tracking::get_time_spent_on_the_course($user['user_id'], $course_code, 0);
+                        $users[$row_key]['training_hours'] += Tracking::get_time_spent_on_the_course($user['user_id'], $courseId, 0);
                         $users[$row_key]['count_users'] += $counter;
                         $registered_users_with_extra_field = 0;
 
@@ -1130,7 +1136,7 @@ class CourseManager
                     } else {
                     $report_info['course'] = $user['title'];
                     $report_info['user'] = api_get_person_name($user['firstname'], $user['lastname']);
-                    $report_info['time'] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $course_code, 0));
+                    $report_info['time'] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $courseId, 0));
 
 
                     $category = Category :: load (null, null, $course_code);
@@ -1138,9 +1144,9 @@ class CourseManager
                     if (isset($category[0]) && $category[0]->is_certificate_available($user['user_id'])) {
                         $report_info['certificate'] = Display::label(get_lang('Yes'), 'success');
                     }
-                    //$report_info['score'] = Tracking::get_avg_student_score($user['user_id'], $course_code, array(), 0);
+                    //$report_info['score'] = Tracking::get_avg_student_score($user['user_id'], $courseId, array(), 0);
 
-                    $progress = intval(Tracking::get_avg_student_progress($user['user_id'], $course_code, array(), 0));
+                    $progress = intval(Tracking::get_avg_student_progress($user['user_id'], $courseId, array(), 0));
                     $report_info['progress_100'] =  $progress == 100 ? Display::label(get_lang('Yes'), 'success') : Display::label(get_lang('No'));
                     $report_info['progress'] = $progress."%";
 
@@ -1176,13 +1182,14 @@ class CourseManager
         $course_code    = Database::escape_string($course_code);
 
         $courseInfo = api_get_course_info($course_code);
+        $courseId = $courseInfo['real_id'];
 
         $sql = 'SELECT DISTINCT count(*) as count  FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user ';
         $where = array();
         if (!empty($session_id)) {
             $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' as session_course_user
                       ON user.user_id = session_course_user.id_user
-                      AND session_course_user.course_code = "'.$course_code.'"
+                      AND session_course_user.c_id = "'.$courseId.'"
                       AND session_course_user.id_session  = '.$session_id.'
                       INNER JOIN '.Database::get_main_table(TABLE_MAIN_SESSION_USER).' as su
                       ON ( su.id_session = session_course_user.id_session AND
@@ -1191,12 +1198,12 @@ class CourseManager
                            su.moved_status <> '.SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION.'
                          )';
 
-            $where[] = ' session_course_user.course_code IS NOT NULL ';
+            $where[] = ' session_course_user.c_id IS NOT NULL ';
         } else {
             $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_COURSE_USER).' as course_rel_user
                         ON user.user_id = course_rel_user.user_id AND course_rel_user.relation_type<>'.COURSE_RELATION_TYPE_RRHH.'
-                        AND course_rel_user.c_id ="'.$courseInfo['real_id'].'"';
-            $where[] = ' course_rel_user.course_code IS NOT NULL ';
+                        AND course_rel_user.c_id ="'.$courseId.'"';
+            $where[] = ' course_rel_user.c_id IS NOT NULL ';
         }
 
         $multiple_access_url = api_get_multiple_access_url();
@@ -1225,19 +1232,19 @@ class CourseManager
      * @param   int     Session ID
      * @return  array   List of users
      */
-    public static function get_coach_list_from_course_code($course_code, $session_id) {
+    public static function get_coach_list_from_course_code($courseId, $session_id) {
 
         if ($session_id != strval(intval($session_id))) {
             return array();
         }
 
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
 
         $users = array();
 
         // We get the coach for the given course in a given session.
         $rs = Database::query('SELECT id_user FROM '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).
-                ' WHERE id_session="'.$session_id.'" AND course_code="'.$course_code.'" AND status = 2');
+                ' WHERE id_session="'.$session_id.'" AND c_id="'.$courseId.'" AND status = 2');
         while ($user = Database::fetch_array($rs)) {
             $user_info = api_get_user_info($user['id_user']);
             $user_info['status'] = $user['status'];
@@ -1268,11 +1275,9 @@ class CourseManager
      *    @param boolean $full list to true if we want sessions students too
      *    @return array with user id
      */
-    public static function get_student_list_from_course_code($course_code, $with_session = false, $session_id = 0, $group_id = 0) {
+    public static function get_student_list_from_course_code($courseId, $with_session = false, $session_id = 0, $group_id = 0) {
         $session_id = intval($session_id);
-        $course_code = Database::escape_string($course_code);
-
-        $courseInfo = api_get_course_info($course_code);
+        $courseId = Database::escape_string($courseId);
 
         $students = array();
 
@@ -1280,14 +1285,13 @@ class CourseManager
             if (empty($group_id)) {
                 // students directly subscribed to the course
                 $sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
-                       WHERE c_id = ".$courseInfo['real_id']." AND status = ".STUDENT;
+                       WHERE c_id = ".$courseId." AND status = ".STUDENT;
                 $rs = Database::query($sql);
                 while ($student = Database::fetch_array($rs)) {
                     $students[$student['user_id']] = $student;
                 }
             } else {
-                $course_info = api_get_course_info($course_code);
-                $students = GroupManager::get_users($group_id, false, $course_info['real_id']);
+                $students = GroupManager::get_users($group_id, false, $courseId);
                 $students = array_flip($students);
             }
         }
@@ -1296,7 +1300,7 @@ class CourseManager
 
         if ($with_session) {
             $sql_query = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
-                          WHERE course_code = '$course_code' AND status <> 2";
+                          WHERE c_id = '$courseId' AND status <> 2";
             if ($session_id != 0) {
                 $sql_query .= ' AND id_session = '.$session_id;
             }
@@ -1364,7 +1368,7 @@ class CourseManager
     * @return array    - array containing user_id, lastname, firstname, username
     *
     */
-    public static function get_coachs_from_course($session_id=0, $course_code='') {
+    public static function get_coachs_from_course($session_id = 0, $courseId = null) {
 
         if (!empty($session_id)) {
             $session_id = intval($session_id);
@@ -1372,10 +1376,10 @@ class CourseManager
             $session_id = api_get_session_id();
         }
 
-        if (!empty($course_code)) {
-            $course_code = Database::escape_string($course_code);
+        if (!empty($courseId)) {
+            $courseId = Database::escape_string($courseId);
         } else {
-            $course_code = api_get_course_id();
+            $courseId = api_get_course_int_id();
         }
 
         $tbl_user                   = Database :: get_main_table(TABLE_MAIN_USER);
@@ -1384,7 +1388,7 @@ class CourseManager
 
         $sql = "SELECT DISTINCT u.user_id, u.lastname, u.firstname, u.username
                 FROM $tbl_user u, $tbl_session_course_user scu
-                WHERE u.user_id = scu.id_user AND scu.id_session = '$session_id' AND scu.course_code = '$course_code' AND scu.status = 2";
+                WHERE u.user_id = scu.id_user AND scu.id_session = '$session_id' AND scu.c_id = $courseId AND scu.status = 2";
         $rs = Database::query($sql);
 
         if (Database::num_rows($rs) > 0) {
@@ -1397,8 +1401,8 @@ class CourseManager
         }
     }
 
-    public static function get_coachs_from_course_to_string($session_id = 0, $course_code = null, $separator = self::USER_SEPARATOR, $add_link_to_profile = false) {
-        $coachs_course = self::get_coachs_from_course($session_id, $course_code);
+    public static function get_coachs_from_course_to_string($session_id = 0, $courseId = null, $separator = self::USER_SEPARATOR, $add_link_to_profile = false) {
+        $coachs_course = self::get_coachs_from_course($session_id, $courseId);
         $course_coachs = array();
 
         if (is_array($coachs_course)) {
@@ -1418,10 +1422,10 @@ class CourseManager
         return $coaches_to_string;
     }
 
-    public static function get_coach_list_from_course_code_to_string($course_code, $session_id) {
+    public static function get_coach_list_from_course_code_to_string($courseId, $session_id) {
         $tutor_data = '';
         if ($session_id != 0) {
-            $coaches = self::get_email_of_tutor_to_session($session_id, $course_code);
+            $coaches = self::get_email_of_tutor_to_session($session_id, $courseId);
             $coach_list = array();
             foreach ($coaches as $coach) {
                 $coach_list[] = $coach['complete_name'];
@@ -1536,19 +1540,19 @@ class CourseManager
         $table_stats_uploads        = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_UPLOADS);
 
         $courseInfo = api_get_course_info($code);
-
         $code = Database::escape_string($code);
+        $courseId = $courseInfo['real_id'];
 
         // Unsubscribe all classes from the course
         $sql = "DELETE FROM $table_course_class WHERE course_code='".$code."'";
         Database::query($sql);
         // Unsubscribe all users from the course
-        $sql = "DELETE FROM $table_course_user WHERE c_id ='".$courseInfo['real_id']."'";
+        $sql = "DELETE FROM $table_course_user WHERE c_id ='".$courseId."'";
         Database::query($sql);
         // Delete the course from the sessions tables
-        $sql = "DELETE FROM $table_session_course WHERE course_code='".$code."'";
+        $sql = "DELETE FROM $table_session_course WHERE c_id='".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_session_course_user WHERE course_code='".$code."'";
+        $sql = "DELETE FROM $table_session_course_user WHERE c_id='".$courseId."'";
         Database::query($sql);
 
         $sql = 'SELECT survey_id FROM '.$table_course_survey.' WHERE course_code="'.$code.'"';
@@ -1565,25 +1569,25 @@ class CourseManager
 
         // Delete the course from the stats tables
 
-        $sql = "DELETE FROM $table_stats_hotpots WHERE c_id = '".$courseInfo['real_id']."'";
+        $sql = "DELETE FROM $table_stats_hotpots WHERE c_id = '".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_attempt WHERE c_id = '".$courseInfo['real_id']."'";
+        $sql = "DELETE FROM $table_stats_attempt WHERE c_id = '".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_exercises WHERE c_id = '".$courseInfo['real_id']."'";
+        $sql = "DELETE FROM $table_stats_exercises WHERE c_id = '".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_access WHERE access_cours_code = '".$code."'";
+        $sql = "DELETE FROM $table_stats_access WHERE c_id = '".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_lastaccess WHERE access_cours_code = '".$code."'";
+        $sql = "DELETE FROM $table_stats_lastaccess WHERE c_id = '".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_course_access WHERE course_code = '".$code."'";
+        $sql = "DELETE FROM $table_stats_course_access WHERE c_id = '".$courseId."'";
         Database::query($sql);
         $sql = "DELETE FROM $table_stats_online WHERE course = '".$code."'";
         Database::query($sql);
         $sql = "DELETE FROM $table_stats_default WHERE default_cours_code = '".$code."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_downloads WHERE down_cours_id = '".$code."'";
+        $sql = "DELETE FROM $table_stats_downloads WHERE c_id = '".$courseId."'";
         Database::query($sql);
-        $sql = "DELETE FROM $table_stats_links WHERE links_cours_id = '".$code."'";
+        $sql = "DELETE FROM $table_stats_links WHERE c_id = '".$courseId."'";
         Database::query($sql);
         $sql = "DELETE FROM $table_stats_uploads WHERE upload_cours_id = '".$code."'";
         Database::query($sql);
@@ -1593,11 +1597,11 @@ class CourseManager
             if (api_get_current_access_url_id() != -1) {
                 $url_id = api_get_current_access_url_id();
             }
-            UrlManager::delete_url_rel_course($courseInfo['real_id'], $url_id);
+            UrlManager::delete_url_rel_course($courseId, $url_id);
         }
 
         // Delete the course from the database
-        $sql = "DELETE FROM $table_course WHERE code='".$code."'";
+        $sql = "DELETE FROM $table_course WHERE id = '".$courseId."'";
         Database::query($sql);
 
         // delete extra course fields
@@ -1640,7 +1644,6 @@ class CourseManager
         // Add event to system log
         $user_id = api_get_user_id();
         event_system(LOG_COURSE_DELETE, LOG_COURSE_CODE, $code, api_get_utc_datetime(), $user_id, $code);
-
     }
 
     /**
@@ -1696,17 +1699,17 @@ class CourseManager
      * @return  int     Minimum course order
      * @todo Review documentation
      */
-    public static function userCourseSort($user_id, $course_code) {
+    public static function userCourseSort($user_id, $courseId) {
 
         if ($user_id != strval(intval($user_id))) {
             return false;
         }
 
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
         $TABLECOURSE = Database::get_main_table(TABLE_MAIN_COURSE);
         $TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER);
 
-        $course_title = Database::result(Database::query('SELECT title FROM '.$TABLECOURSE.' WHERE code="'.$course_code.'"'), 0, 0);
+        $course_title = Database::result(Database::query('SELECT title FROM '.$TABLECOURSE.' WHERE id = "'.$courseId.'"'), 0, 0);
 
         $sql = 'SELECT course.code as code, course.title as title, cu.sort as sort
                 FROM '.$TABLECOURSUSER.' as cu, '.$TABLECOURSE.' as course
@@ -1912,7 +1915,6 @@ class CourseManager
 
         $special_course_list = self::get_special_course_list();
 
-
         $with_special_courses = $without_special_courses = '';
         if (!empty($special_course_list)) {
             $sc_string = '"'.implode('","',$special_course_list).'"';
@@ -1959,7 +1961,7 @@ class CourseManager
         if ($include_sessions === true) {
             $sql = "SELECT DISTINCT(c.code), c.id as real_id
                     FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." s, ".Database::get_main_table(TABLE_MAIN_COURSE)." c
-                    WHERE id_user = $user_id AND s.course_code=c.code";
+                    WHERE id_user = $user_id AND s.c_id =c.id";
             $r = Database::query($sql);
             while ($row = Database::fetch_array($r, 'ASSOC')) {
                 if (!in_array($row['real_id'], $codes)) {
@@ -2030,11 +2032,11 @@ class CourseManager
     /**
      * Get coachs' emails by session
      * @param int session id
-     * @param string course code
+     * @param int  course id
      * @return array  array(email => name_tutor)  by coach
      * @author Carlos Vargas <carlos.vargas@dokeos.com>
      */
-    public static function get_email_of_tutor_to_session($session_id, $course_code) {
+    public static function get_email_of_tutor_to_session($session_id, $courseId) {
 
         $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
         $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
@@ -2043,7 +2045,7 @@ class CourseManager
         $course_code = Database::escape_string($course_code);
         $session_id = intval($session_id);
 
-        $sql = "SELECT id_user FROM $tbl_session_course_user WHERE id_session='$session_id' AND course_code='$course_code' AND status =2";
+        $sql = "SELECT id_user FROM $tbl_session_course_user WHERE id_session='$session_id' AND c_id ='$courseId' AND status =2";
         $rs  = Database::query($sql);
 
         if (Database::num_rows($rs) > 0) {
@@ -2057,7 +2059,6 @@ class CourseManager
             $rs_user = Database::query($sql);
 
             while ($row_emails = Database::fetch_array($rs_user)) {
-                //$name_tutor = api_get_person_name($row_emails['firstname'], $row_emails['lastname'], null, PERSON_NAME_EMAIL_ADDRESS);
                 $mail_tutor = array('email' => $row_emails['email'], 'complete_name' => api_get_person_name($row_emails['firstname'], $row_emails['lastname']));
                 $coachs_emails[] = $mail_tutor;
             }
@@ -3283,7 +3284,7 @@ class CourseManager
 
         if (api_get_setting('display_teacher_in_courselist') == 'true') {
             $teacher_list = CourseManager::get_teacher_list_from_course_code_to_string($course_info['real_id'], self::USER_SEPARATOR, true);
-            $course_coachs = CourseManager::get_coachs_from_course_to_string($course_info['id_session'], $course['code'], self::USER_SEPARATOR, true);
+            $course_coachs = CourseManager::get_coachs_from_course_to_string($course_info['id_session'], $course_info['real_id'], self::USER_SEPARATOR, true);
             $params['teachers'] = $teacher_list;
             $params['coaches'] = $course_coachs;
         }
@@ -3403,7 +3404,7 @@ class CourseManager
         if (empty($session_id)) {
             $table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
             $sql = "SELECT legal_agreement FROM $table
-                    WHERE user_id =  $user_id AND course_code  ='$course_code' ";
+                    WHERE user_id =  $user_id AND c_id  = '$course_id' ";
             $result = Database::query($sql);
             if (Database::num_rows($result) > 0 ) {
                 $result = Database::fetch_array($result);
@@ -3450,7 +3451,7 @@ class CourseManager
         } else {
             $table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
             $sql = "UPDATE  $table SET legal_agreement = '1'
-                    WHERE id_user =  $user_id AND course_code  = '$course_code' AND id_session = $session_id";
+                    WHERE id_user =  $user_id AND c_id  = '$course_id' AND id_session = $session_id";
             $result = Database::query($sql);
         }
     }
@@ -3699,18 +3700,14 @@ class CourseManager
         $today_diff                = api_get_utc_datetime($today_diff);
          * */
 
-        //WHERE login_course_date <= '$today' AND login_course_date >= '$today_diff'
-
-        //$table_course_access table uses the now() and interval ...
-
-       $sql = "SELECT COUNT(course_access_id) course_count, a.course_code, visibility ".
+       $sql = "SELECT COUNT(course_access_id) course_count, a.c_id, visibility ".
               "FROM $table_course c INNER JOIN $table_course_access a ".
-              "  ON (c.code = a.course_code) INNER JOIN $table_course_url u ON u.c_id = c.id ".
+              "  ON (c.id = a.c_id) INNER JOIN $table_course_url u ON u.c_id = c.id ".
               "  WHERE   u.access_url_id = ".$urlId." AND".
               "          login_course_date <= now() AND ".
               "          login_course_date > DATE_SUB(now(), INTERVAL $days DAY) AND".
               "          visibility <> '".COURSE_VISIBILITY_CLOSED."'".
-              "  GROUP BY course_code".
+              "  GROUP BY a.c_id".
               "  ORDER BY course_count DESC".
               "  LIMIT $limit";
 
@@ -3727,7 +3724,7 @@ class CourseManager
         $ajax_url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=add_course_vote';
 
         foreach ($courses as &$my_course) {
-            $course_info = api_get_course_info($my_course['course_code']);
+            $course_info = api_get_course_info_by_id($my_course['c_id']);
             $my_course['extra_info'] = $course_info;
             $my_course['extra_info']['go_to_course_button'] = '';
             $my_course['extra_info']['register_button'] = '';

+ 0 - 2
main/inc/lib/course_home.lib.php

@@ -479,12 +479,10 @@ class CourseHome {
             }
         }
 
-        $i = 0;
         // Grabbing all the links that have the property on_homepage set to 1
         $course_link_table 			= Database::get_course_table(TABLE_LINK);
         $course_item_property_table = Database::get_course_table(TABLE_ITEM_PROPERTY);
 
-
         switch ($course_tool_category) {
             case TOOL_AUTHORING:
                 $sql_links = "SELECT tl.*, tip.visibility

+ 7 - 7
main/inc/lib/current_course.class.php

@@ -14,7 +14,7 @@ class CurrentCourse
 
     /**
      *
-     * @return CurrentCourse 
+     * @return CurrentCourse
      */
     public static function instance()
     {
@@ -29,7 +29,7 @@ class CurrentCourse
     {
         ;
     }
-    
+
     public function is_empty()
     {
         $id = $this->real_id();
@@ -38,7 +38,7 @@ class CurrentCourse
 
     public function data()
     {
-        global $_course;
+        $_course = api_get_course_info();
         if ($_course == '-1') {
             $_course = array();
         }
@@ -82,8 +82,8 @@ class CurrentCourse
 
     /**
      * not needed in Chamilo 1.9
-     * 
-     * @return type 
+     *
+     * @return type
      */
     public function db_name()
     {
@@ -144,11 +144,11 @@ class CurrentCourse
     {
         return $this->get('extLink');
     }
-     
+
     /**
      * Returns the current user (logged in user) relationship with the course.
      * I.e his role
-     * 
+     *
      * @return array
      */
     public function user()

+ 2 - 2
main/inc/lib/display.lib.php

@@ -1194,8 +1194,8 @@ class Display
 
         $course_info['id_session'] = intval($course_info['id_session']);
         // Get the user's last access dates to all tools of this course
-        $sqlLastTrackInCourse = "SELECT * FROM $t_track_e_access USE INDEX (access_cours_code, access_user_id)
-                                 WHERE  access_cours_code = '".$course_code."' AND
+        $sqlLastTrackInCourse = "SELECT * FROM $t_track_e_access USE INDEX (c_id, access_user_id)
+                                 WHERE  c_id = ".$course_id." AND
                                         access_user_id = '$user_id' AND
                                         access_session_id ='".$course_info['id_session']."'";
         $resLastTrackInCourse = Database::query($sqlLastTrackInCourse);

+ 4 - 4
main/inc/lib/document.lib.php

@@ -1336,7 +1336,7 @@ class DocumentManager
         //3. Checking if user exist in course/session
 
         if ($session_id == 0) {
-            if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['code']) || api_is_platform_admin()
+            if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['real_id']) || api_is_platform_admin()
             ) {
                 $user_in_course = true;
             }
@@ -1347,7 +1347,7 @@ class DocumentManager
         } else {
             $user_status = SessionManager::get_user_status_in_course_session(
                 $user_id,
-                $course_info['code'],
+                $course_info['real_id'],
                 $session_id
             );
             if (in_array($user_status, array('0', '2', '6'))) {
@@ -2966,7 +2966,7 @@ class DocumentManager
 
         if (!$user_in_course) {
             if (empty($session_id)) {
-                if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['code'])) {
+                if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['real_id'])) {
                     $user_in_course = true;
                 }
                 //Check if course is open then we can consider that the student is regitered to the course
@@ -2976,7 +2976,7 @@ class DocumentManager
             } else {
                 $user_status = SessionManager::get_user_status_in_course_session(
                     $user_id,
-                    $course_info['code'],
+                    $course_info['real_id'],
                     $session_id
                 );
                 //is true if is an student, course session teacher or coach

+ 35 - 33
main/inc/lib/events.lib.inc.php

@@ -16,10 +16,9 @@
 $TABLETRACK_LOGIN = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
 $TABLETRACK_OPEN = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_OPEN);
 $TABLETRACK_ACCESS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS);
-$course_tracking_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
-$TABLETRACK_DOWNLOADS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_DOWNLOADS);
+
 $TABLETRACK_UPLOADS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_UPLOADS);
-$TABLETRACK_LINKS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LINKS);
+
 $TABLETRACK_EXERCICES = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
 $TABLETRACK_LASTACCESS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS); //for "what's new" notification
 $TABLETRACK_DEFAULT = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_DEFAULT);
@@ -111,7 +110,7 @@ function event_access_course()
 
     $id_session = api_get_session_id();
     $now = api_get_utc_datetime();
-    $_cid = api_get_course_id();
+    $courseId = api_get_course_int_id();
     $user_id = api_get_user_id();
 
     if ($user_id) {
@@ -119,19 +118,19 @@ function event_access_course()
     } else {
         $user_id = "0"; // no one
     }
-    $sql = "INSERT INTO ".$TABLETRACK_ACCESS."  (access_user_id, access_cours_code, access_date, access_session_id) VALUES
-            (".$user_id.", '".$_cid."', '".$now."','".$id_session."')";
-    $res = Database::query($sql);
+    $sql = "INSERT INTO ".$TABLETRACK_ACCESS."  (access_user_id, c_id, access_date, access_session_id) VALUES
+            (".$user_id.", '".$courseId."', '".$now."','".$id_session."')";
+    Database::query($sql);
 
     // added for "what's new" notification
     $sql = "UPDATE $TABLETRACK_LASTACCESS  SET access_date = '$now'
-        	WHERE access_user_id = $user_id AND access_cours_code = '$_cid' AND access_tool IS NULL AND access_session_id=".$id_session;
-    $res = Database::query($sql);
+        	WHERE access_user_id = $user_id AND c_id = '$courseId' AND access_tool IS NULL AND access_session_id=".$id_session;
+    Database::query($sql);
 
     if (Database::affected_rows() == 0) {
-        $sql = "INSERT INTO $TABLETRACK_LASTACCESS (access_user_id, access_cours_code, access_date, access_session_id)
-        		VALUES (".$user_id.", '".$_cid."', '$now', '".$id_session."')";
-        $res = Database::query($sql);
+        $sql = "INSERT INTO $TABLETRACK_LASTACCESS (access_user_id, c_id, access_date, access_session_id)
+        		VALUES (".$user_id.", '".$courseId."', '$now', '".$id_session."')";
+        Database::query($sql);
     }
     // end "what's new" notification
     return 1;
@@ -155,11 +154,12 @@ function event_access_tool($tool, $id_session = 0)
 {
     global $_configuration;
     global $_user;
-    global $_cid;
     global $TABLETRACK_ACCESS;
-    global $_course;
+    $_course = api_get_course_info();
     global $TABLETRACK_LASTACCESS; //for "what's new" notification
 
+    $courseId = api_get_course_int_id();
+
     $id_session = api_get_session_id();
     $tool = Database::escape_string($tool);
     $reallyNow = api_get_utc_datetime();
@@ -176,28 +176,28 @@ function event_access_tool($tool, $id_session = 0)
     if ($pos !== false || $pos2 !== false) {
         $sql = "INSERT INTO ".$TABLETRACK_ACCESS."
         			(access_user_id,
-        			 access_cours_code,
+        			 c_id,
         			 access_tool,
         			 access_date,
         			 access_session_id
         			 )
         		VALUES
         			(".$user_id.",".// Don't add ' ' around value, it's already done.
-            "'".$_cid."' ,
+                    "'".$courseId."' ,
         			'".$tool."',
         			'".$reallyNow."',
         			'".$id_session."')";
-        $res = Database::query($sql);
+        Database::query($sql);
     }
     // "what's new" notification
     $sql = "UPDATE $TABLETRACK_LASTACCESS
         	SET access_date = '$reallyNow'
-        	WHERE access_user_id = ".$user_id." AND access_cours_code = '".$_cid."' AND access_tool = '".$tool."' AND access_session_id=".$id_session;
-    $res = Database::query($sql);
+        	WHERE access_user_id = ".$user_id." AND c_id = '".$courseId."' AND access_tool = '".$tool."' AND access_session_id=".$id_session;
+    Database::query($sql);
     if (Database::affected_rows() == 0) {
-        $sql = "INSERT INTO $TABLETRACK_LASTACCESS (access_user_id,access_cours_code,access_tool, access_date, access_session_id)
-        		VALUES (".$user_id.", '".$_cid."' , '$tool', '$reallyNow', $id_session)";
-        $res = Database::query($sql);
+        $sql = "INSERT INTO $TABLETRACK_LASTACCESS (access_user_id, c_id, access_tool, access_date, access_session_id)
+        		VALUES (".$user_id.", '".$courseId."' , '$tool', '$reallyNow', $id_session)";
+        Database::query($sql);
     }
     return 1;
 }
@@ -222,11 +222,11 @@ function event_download($doc_url)
 
     $reallyNow = api_get_utc_datetime();
     $user_id = "'".api_get_user_id()."'";
-    $_cid = api_get_course_id();
+    $_cid = api_get_course_int_id();
 
     $sql = "INSERT INTO $tbl_stats_downloads (
         		 down_user_id,
-        		 down_cours_id,
+        		 c_id,
         		 down_doc_path,
         		 down_date,
         		 down_session_id
@@ -287,7 +287,9 @@ function event_upload($doc_id)
  */
 function event_link($link_id)
 {
-    global $_user, $TABLETRACK_LINKS;
+    global $_user;
+    $TABLETRACK_LINKS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LINKS);
+
     $reallyNow = api_get_utc_datetime();
     if (isset($_user['user_id']) && $_user['user_id'] != '') {
         $user_id = "'".Database::escape_string($_user['user_id'])."'";
@@ -297,18 +299,18 @@ function event_link($link_id)
     }
     $sql = "INSERT INTO ".$TABLETRACK_LINKS."
         		( links_user_id,
-        		 links_cours_id,
+        		 c_id,
         		 links_link_id,
         		 links_date,
         		 links_session_id
         		) VALUES (
         		 ".$user_id.",
-        		 '".api_get_course_id()."',
+        		 '".api_get_course_int_id()."',
         		 '".Database::escape_string($link_id)."',
         		 '".$reallyNow."',
         		 '".api_get_session_id()."'
         		)";
-    $res = Database::query($sql);
+    Database::query($sql);
     return 1;
 }
 
@@ -1602,17 +1604,17 @@ function get_answered_questions_from_attempt($exe_id, $objExercise) {
  * @param $user_id
  * @param $session_id
  */
-function event_course_login($course_code, $user_id, $session_id)
+function event_course_login($courseId, $user_id, $session_id)
 {
-    global $course_tracking_table;
+    $course_tracking_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
     $time = api_get_datetime();
 
-    $course_code = Database::escape_string($course_code);
+    $courseId = Database::escape_string($courseId);
     $user_id = Database::escape_string($user_id);
     $session_id = Database::escape_string($session_id);
 
-    $sql = "INSERT INTO $course_tracking_table(course_code, user_id, login_course_date, logout_course_date, counter, session_id)
-        	  VALUES('".$course_code."', '".$user_id."', '$time', '$time', '1', '".$session_id."')";
+    $sql = "INSERT INTO $course_tracking_table(c_id, user_id, login_course_date, logout_course_date, counter, session_id)
+        	  VALUES('".$courseId."', '".$user_id."', '$time', '$time', '1', '".$session_id."')";
     Database::query($sql);
 
     //Course catalog stats modifications see #4191

+ 2 - 1
main/inc/lib/fckeditor/editor/filemanager/connectors/php/commands.php

@@ -289,7 +289,8 @@ function FileUpload($resourceType, $currentFolder, $sCommand)
     if ($sErrorNumber == '0') {
         // While we are in a course: Registering the newly uploaded file in the course's database.
         if (api_is_in_course()) {
-            global $_course, $_user;
+            global $_user;
+            $_course = api_get_course_info();
             $repository_path = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/';
             $to_group_id = 0;
 

+ 2 - 1
main/inc/lib/fckeditor/editor/filemanager/connectors/php/io.php

@@ -135,7 +135,8 @@ function CreateServerFolder($folderPath, $lastFolder = null)
 
         // While we are in a course: Registering the newly created folder in the course's database.
         if (api_is_in_course()) {
-            global $_course, $_user;
+            global $_user;
+            $_course = api_get_course_info();
             $repository_path = api_get_path(REL_COURSE_PATH).api_get_course_path().'/document/';
             $to_group_id = 0;
 

+ 7 - 8
main/inc/lib/fckeditor/editor/plugins/ImageManager/Classes/ImageManager.php

@@ -138,7 +138,7 @@ class ImageManager
                 ) {
                     continue;
                 }
-                global $_course;
+                $_course = api_get_course_info();
                 if (!empty($_course)) {
                     $base_dir = substr($fullpath, 0, strpos($fullpath, '/document/') + 9); //
                     $new_dir = substr($fullpath, strlen($base_dir), -1); //
@@ -251,7 +251,7 @@ class ImageManager
                 }
 
                 if ($is_dir && !$this->isThumbDir($entry)) {
-                    global $_course;
+                    $_course = api_get_course_info();
                     if (isset($_course) && !empty($_course) && isset($_course['code'])) {
                         //checking visibility
                         $base_dir = substr($dir_entry, 0, strpos($dir_entry, '/document/') + 9);
@@ -274,7 +274,7 @@ class ImageManager
                     if (is_file($fullpath.$entry) && !$this->isThumb($entry) && !$this->isTmpFile($entry)) {
                         $img = $this->getImageInfo($fullpath.$entry);
                         if (!(!is_array($img) && $this->config['validate_images'])) {
-                            global $_course;
+                            $_course = api_get_course_info();
 
                             if (!empty($_course) && isset($_course['code'])) {
                                 //checking visibility
@@ -528,7 +528,7 @@ class ImageManager
      */
     function _processFiles($relative, $file)
     {
-        global $_course;
+        $_course = api_get_course_info();
         if ($file['error'] != 0) {
             return false;
         }
@@ -788,7 +788,7 @@ class ImageManager
 
         if (Files::delFile($fullpath)) {
             //deleting from the DB
-            global $_course;
+            $_course = api_get_course_info();
             if (isset($_course) && !empty($_course) && isset($_course['code'])) {
                 $document_path = substr(
                     $fullpath,
@@ -817,7 +817,7 @@ class ImageManager
         //if($this->countFiles($fullpath) <= 0) {
         // now we use the default delete_document function
         //return Files::delFolder($fullpath,true); //delete recursively.
-        global $_course;
+        $_course = api_get_course_info();
         if (isset($_course) && !empty($_course) && isset($_course['code'])) {
             $path_dir = substr($fullpath, strpos($fullpath, '/document/') + 9, -1); //
             $base_dir = substr($fullpath, 0, strlen($fullpath) - strlen($path_dir)); //
@@ -859,8 +859,7 @@ class ImageManager
                 //adding to the DB
                 // now the FileManager::create_unexisting_directory will create the folder
                 //$result = Files::createFolder($fullpath);
-
-                global $_course;
+                $_course = api_get_course_info();
                 if (isset($_course) && !empty($_course) && isset($_course['code'])) {
                     //@todo make this str to functions
                     $base_dir = substr($path, 0, strpos($path, '/document/') + 9); //

+ 1 - 0
main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/ajax_get_file_listing.php

@@ -19,6 +19,7 @@ if (!isset($manager)) {
     //$_GET = $_POST;
     include_once dirname(__FILE__).DIRECTORY_SEPARATOR."inc".DIRECTORY_SEPARATOR."config.php";
     include_once CLASS_PAGINATION;
+
     $pagination = new pagination(false);
     $search_folder = null;
     if (isset($_GET['search_folder'])) {

+ 3 - 0
main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/class.search.php

@@ -28,12 +28,14 @@ class Search
     function __construct($rootFolder)
     {
         $this->rootFolder    = $rootFolder;
+
         $this->sessionAction = new SessionAction();
         $objRootFolder       = new file($this->rootFolder);
         $tem                 = $objRootFolder->getFileInfo();
         $obj                 = new manager($this->rootFolder, false);
         $obj->setSessionAction($this->sessionAction);
         $selectedDocuments = $this->sessionAction->get();
+
         $fileType          = $obj->getFolderInfo($this->rootFolder);
 
         foreach ($fileType as $k => $v) {
@@ -108,6 +110,7 @@ class Search
         $dirHandler = @opendir($baseFolderPath);
         if ($dirHandler) {
             while (false !== ($file = readdir($dirHandler))) {
+
                 if ($file != '.' && $file != '..') {
                     $path = $baseFolderPath.$file;
                     if (is_file($path)) {

+ 12 - 9
main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/config.base.php

@@ -97,15 +97,18 @@ if (isset($_course['path']) && !empty($_course['path'])) {
 		$PathChamiloAjaxFileManager = '../../../../../../../data/default_platform_document/';
 	} else {
 		//my profile
-		$my_path					= UserManager::get_user_picture_path_by_id(api_get_user_id(),'none');
-                $dir = api_get_path(SYS_CODE_PATH).$my_path['dir'];
-                if (!is_dir($dir)) {
-                    mkdir($dir);
-                }
-                if (!is_dir($dir.'my_files')) {
-                    mkdir($dir.'my_files');
-                }
-		$PathChamiloAjaxFileManager	= '../../../../../../../main/'.$my_path['dir'].'my_files/';
+		$my_path = UserManager::get_user_picture_path_by_id(api_get_user_id(), 'system');
+        $my_path_none = UserManager::get_user_picture_path_by_id(api_get_user_id(), 'none');
+
+
+        if (!is_dir($my_path['dir'])) {
+            mkdir($my_path['dir']);
+        }
+
+        if (!is_dir($my_path['dir'].'my_files')) {
+            mkdir($my_path['dir'].'my_files');
+        }
+		$PathChamiloAjaxFileManager	= '../../../../../../../data/'.$my_path_none['dir'].'my_files/';
 	}
 }
 

+ 1 - 1
main/inc/lib/fckeditor/fcktemplates.xml.php

@@ -188,7 +188,7 @@ function load_platform_templates() {
  * @since Dokeos 1.8.6 The code already existed but not in a function and a lot less performant.
  */
 function load_personal_templates($user_id = 0) {
-    global $_course;
+    $_course = api_get_course_info();
 
     // the templates that the user has defined are only available inside the course itself
     if (empty($_course)) {

+ 1 - 1
main/inc/lib/fileManager.lib.php

@@ -1421,7 +1421,7 @@ class FileManager
         $output = true,
         $to_group_id = 0
     ) {
-        global $_course;
+        $_course = api_get_course_info();
         global $_user;
         global $to_user_id;
         global $to_group_id;

+ 6 - 9
main/inc/lib/groupmanager.lib.php

@@ -186,7 +186,7 @@ class GroupManager
      */
     public static function create_group($name, $category_id, $tutor, $places)
     {
-        global $_course;
+        $_course = api_get_course_info();
         $table_group = Database :: get_course_table(TABLE_GROUP);
 
         $session_id = api_get_session_id();
@@ -327,7 +327,7 @@ class GroupManager
      */
     public static function create_class_groups($category_id)
     {
-        global $_course;
+        $_course = api_get_course_info();
         $options['where'] = array(" usergroup.course_id = ? " => api_get_real_course_id());
         $obj = new UserGroup();
         $classes = $obj->get_usergroup_in_course($options);
@@ -916,7 +916,7 @@ class GroupManager
      */
     public static function fill_groups($group_ids)
     {
-        global $_course;
+        $_course = api_get_course_info();
 
         $group_ids = is_array($group_ids) ? $group_ids : array($group_ids);
         $group_ids = array_map('intval', $group_ids);
@@ -1162,10 +1162,7 @@ class GroupManager
      */
     public static function can_user_subscribe($user_id, $group_id)
     {
-        global $_course;
-        $course_code = $_course['sysCode'];
         $category = self :: get_category_from_group($group_id);
-        $result = CourseManager :: is_user_subscribed_in_real_or_linked_course($user_id, $course_code);
         $result = !self :: is_subscribed($user_id, $group_id);
         $result &= (self :: number_of_students($group_id) < self :: maximum_number_of_students($group_id));
         if ($category['groups_per_user'] == self::GROUP_PER_MEMBER_NO_LIMIT) {
@@ -1279,7 +1276,7 @@ class GroupManager
         $course_id = api_get_course_int_id();
         $table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
         if (!empty($user_ids)) {
-            foreach ($user_ids as $index => $user_id) {
+            foreach ($user_ids as $user_id) {
                 $user_id = Database::escape_string($user_id);
                 $group_id = Database::escape_string($group_id);
                 $sql = "INSERT INTO ".$table_group_user." (c_id, user_id, group_id) VALUES ('$course_id', '".$user_id."', '".$group_id."')";
@@ -1407,7 +1404,7 @@ class GroupManager
      */
     public static function is_tutor_of_group($user_id, $group_id)
     {
-        global $_course;
+        $_course = api_get_course_info();
 
         $table_group_tutor = Database :: get_course_table(TABLE_GROUP_TUTOR);
         $user_id = Database::escape_string($user_id);
@@ -1722,7 +1719,7 @@ class GroupManager
             }
         }
 
-        global $_course;
+        $_course = api_get_course_info();
         $category = self :: get_category_from_group($group_ids[0]);
         $groups_per_user = $category['groups_per_user'];
 

+ 7 - 5
main/inc/lib/link.lib.php

@@ -226,7 +226,7 @@ function addlinkcategory($type) {
 	// "WHAT'S NEW" notification : update last tool Edit.
 	if ($type == 'link') {
 		global $_user;
-		global $_course;
+        $_course = api_get_course_info();
 		global $nameTools;
 		api_item_property_update($_course, TOOL_LINK, $link_id, 'LinkAdded', $_user['user_id']);
 	}
@@ -239,7 +239,7 @@ function addlinkcategory($type) {
  */
 function deletelinkcategory($type) {
 	global $catlinkstatus;
-	global $_course;
+    $_course = api_get_course_info();
 	$tbl_link              = Database :: get_course_table(TABLE_LINK);
 	$tbl_categories        = Database :: get_course_table(TABLE_LINK_CATEGORY);
 	$TABLE_ITEM_PROPERTY   = Database :: get_course_table(TABLE_ITEM_PROPERTY);
@@ -342,7 +342,7 @@ function editlinkcategory($type) {
 	global $submit_link;
 	global $submit_category;
 	global $_user;
-	global $_course;
+    $_course = api_get_course_info();
 	global $nameTools;
 	global $urllink;
 	global $title;
@@ -578,7 +578,8 @@ function makedefaultviewcode($locatie) {
  * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
  */
 function change_visibility($id, $scope) {
-	global $_course, $_user;
+	global $_user;
+    $_course = api_get_course_info();
 	if ($scope == 'link') {
 		api_item_property_update($_course, TOOL_LINK, $id, $_GET['action'], $_user['user_id']);
 		Display :: display_confirmation_message(get_lang('VisibilityChanged'));
@@ -856,7 +857,8 @@ function put_link($url, $cat, $title, $description, $on_homepage, $hidden) {
 		$ipu = 'LinkAdded';
 		$rv = 2; // 2 = new
 	}
-	global $_course, $nameTools, $_user;
+	global $nameTools, $_user;
+    $_course = api_get_course_info();
 	api_item_property_update($_course, TOOL_LINK, $id, $ipu, $_user['user_id']);
 
 	if ($hidden && $ipu == 'LinkAdded') {

+ 8 - 11
main/inc/lib/login.lib.php

@@ -323,7 +323,7 @@ class Login
         global $_user;
 
         global $_cid;
-        global $_course;
+        $_course = api_get_course_info();
         global $_real_cid;
         global $_courseUser;
 
@@ -386,8 +386,6 @@ class Login
 
                     // Database Table Definitions
                     $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
-                    $tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
-                    $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
                     if (!empty($_GET['id_session'])) {
                         $_SESSION['id_session'] = intval($_GET['id_session']);
@@ -402,7 +400,7 @@ class Login
                     if (!isset($_SESSION['login_as'])) {
                         //Course login
                         if (isset($_user['user_id'])) {
-                            event_course_login($_course['sysCode'], $_user['user_id'], api_get_session_id());
+                            event_course_login($_real_cid, $_user['user_id'], api_get_session_id());
                         }
                     }
                 } else {
@@ -486,10 +484,10 @@ class Login
                             //But only if the login date is < than now + max_life_time
                             $sql = "SELECT course_access_id FROM $course_tracking_table
                             WHERE   user_id     = " . intval($_user ['user_id']) . " AND
-                                    course_code = '$course_code' AND
+                                    c_id = '$_real_cid' AND
                                     session_id  = " . api_get_session_id() . " AND
                                     login_course_date > now() - INTERVAL $session_lifetime SECOND
-                        ORDER BY login_course_date DESC LIMIT 0,1";
+                            ORDER BY login_course_date DESC LIMIT 0,1";
                             $result = Database::query($sql);
 
                             if (Database::num_rows($result) > 0) {
@@ -500,8 +498,8 @@ class Login
                                 //error_log($sql);
                                 Database::query($sql);
                             } else {
-                                $sql = "INSERT INTO $course_tracking_table (course_code, user_id, login_course_date, logout_course_date, counter, session_id)" .
-                                    "VALUES('" . $course_code . "', '" . $_user['user_id'] . "', '$time', '$time', '1','" . api_get_session_id() . "')";
+                                $sql = "INSERT INTO $course_tracking_table (c_id, user_id, login_course_date, logout_course_date, counter, session_id)" .
+                                    "VALUES('" . $_real_cid . "', '" . $_user['user_id'] . "', '$time', '$time', '1','" . api_get_session_id() . "')";
                                 //error_log($sql);
                                 Database::query($sql);
                             }
@@ -561,14 +559,13 @@ class Login
                         // The user is subscribed in a session? The user is a Session coach a Session admin ?
 
                         $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
-                        $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
                         $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
                         //Session coach, session admin, course coach admin
                         $sql = "SELECT session.id_coach, session_admin_id, session_rcru.id_user
                 		FROM $tbl_session session, $tbl_session_course_user session_rcru
 					    WHERE  session_rcru.id_session  = session.id AND
-					           session_rcru.course_code = '$_cid' AND
+					           session_rcru.c_id = ".$_course['real_id']." AND
 					           session_rcru.id_user     = '$user_id' AND
                                session_rcru.id_session  = $session_id AND
 					           session_rcru.status      = 2";
@@ -734,7 +731,7 @@ class Login
     static function init_group($group_id, $reset)
     {
         global $_cid;
-        global $_course;
+        $_course = api_get_course_info();
         global $_gid;
 
         if ($reset) { // session data refresh requested

+ 26 - 70
main/inc/lib/main_api.lib.php

@@ -1520,8 +1520,7 @@ function api_get_course_info_by_id($id = null, $add_extra_values = false) {
         }
         return $_course;
     }
-    //global $_course;
-    global $_course;
+    $_course = Session::read('_course');
     if ($_course == '-1') $_course = array();
     return $_course;
 }
@@ -2087,45 +2086,6 @@ function api_get_session_condition($session_id, $and = true, $with_base_content
     return $condition_session;
 }
 
-/**
- * This function returns information about coachs from a course in session
- * @param int       - optional, session id
- * @param string    - optional, course code
- * @return array    - array containing user_id, lastname, firstname, username
- * @deprecated use CourseManager::get_coaches_from_course
- */
-function api_get_coachs_from_course($session_id=0,$course_code='') {
-
-    if (!empty($session_id)) {
-        $session_id = intval($session_id);
-    } else {
-        $session_id = api_get_session_id();
-    }
-
-    if (!empty($course_code)) {
-        $course_code = Database::escape_string($course_code);
-    } else {
-        $course_code = api_get_course_id();
-    }
-
-    $tbl_user                   = Database :: get_main_table(TABLE_MAIN_USER);
-    $tbl_session_course_user    = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-    $coaches = array();
-
-    $sql = "SELECT u.user_id,u.lastname,u.firstname,u.username FROM $tbl_user u,$tbl_session_course_user scu
-            WHERE u.user_id = scu.id_user AND scu.id_session = '$session_id' AND scu.course_code = '$course_code' AND scu.status = 2";
-    $rs = Database::query($sql);
-
-    if (Database::num_rows($rs) > 0) {
-        while ($row = Database::fetch_array($rs)) {
-            $coaches[] = $row;
-        }
-        return $coaches;
-    } else {
-        return false;
-    }
-}
-
 /**
  * Returns the value of a setting from the web-adjustable admin config settings.
  *
@@ -2335,7 +2295,7 @@ function api_get_user_platform_status($user_id = false) {
 	if ($session_id && $course_id) {
         $session_status = array();
         $session_status = array('id' => $session_id, 'course_id' => $course_id);
-        $session_user_status = SessionManager::get_user_status_in_course_session($user_id, $course_code, $session_id);
+        $session_user_status = SessionManager::get_user_status_in_course_session($user_id, $course_id, $session_id);
         switch ($session_user_status) {
             case 0:
                 $session_status['status'] = 'student';
@@ -2379,19 +2339,19 @@ function api_get_user_platform_status($user_id = false) {
     return $status;
 }
 
-function api_is_course_session_coach($user_id, $course_code, $session_id) {
+function api_is_course_session_coach($user_id, $courseId, $session_id) {
     $session_table 						= Database::get_main_table(TABLE_MAIN_SESSION);
     $session_rel_course_rel_user_table  = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
     $user_id = intval($user_id);
     $session_id = intval($session_id);
-    $course_code = Database::escape_string($course_code);
+    $courseId = Database::escape_string($courseId);
 
     $sql = "SELECT DISTINCT id
 				FROM $session_table INNER JOIN $session_rel_course_rel_user_table session_rc_ru
 	            ON session.id = session_rc_ru.id_session
 	            WHERE   session_rc_ru.id_user = '".$user_id."'  AND
-                        session_rc_ru.course_code = '$course_code' AND
+                        session_rc_ru.c_id = '$courseId' AND
                         session_rc_ru.status = 2 AND
                         session_rc_ru.id_session = '$session_id'";
     $result = Database::query($sql);
@@ -2404,17 +2364,17 @@ function api_is_course_session_coach($user_id, $course_code, $session_id) {
  * @param string - optional, course code
  * @return boolean True if current user is a course or session coach
  */
-function api_is_coach($session_id = 0, $course_code = null) {
+function api_is_coach($session_id = 0, $courseId = null) {
     if (!empty($session_id)) {
         $session_id = intval($session_id);
     } else {
         $session_id = api_get_session_id();
     }
 
-    if (!empty($course_code)) {
-        $course_code = Database::escape_string($course_code);
+    if (!empty($courseId)) {
+        $courseId = Database::escape_string($courseId);
     } else {
-        $course_code = api_get_course_id();
+        $courseId = api_get_course_int_id();
     }
 
     $user_id = api_get_user_id();
@@ -2428,7 +2388,7 @@ function api_is_coach($session_id = 0, $course_code = null) {
 				FROM $session_table INNER JOIN $session_rel_course_rel_user_table session_rc_ru
 	            ON session.id = session_rc_ru.id_session
 	            WHERE   session_rc_ru.id_user = '".$user_id."'  AND
-                        session_rc_ru.course_code = '$course_code' AND
+                        session_rc_ru.c_id = '$courseId' AND
                         session_rc_ru.status = 2 AND
                         session_rc_ru.id_session = '$session_id'";
 	    $result = Database::query($sql);
@@ -2807,7 +2767,7 @@ function api_is_allowed_to_session_edit($tutor = false, $coach = false) {
 * @version 1.0
 */
 function api_is_allowed($tool, $action, $task_id = 0) {
-    global $_course;
+    $_course = api_get_course_info();
     global $_user;
 
     if (api_is_course_admin()) {
@@ -3569,7 +3529,7 @@ function api_get_language_id($language) {
  **/
 function api_get_language_from_type($lang_type){
     global $_user;
-    global $_course;
+    $_course = api_get_course_info();
     $toreturn = false;
     switch ($lang_type) {
         case 'platform_lang' :
@@ -4767,6 +4727,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
     }
     $cid = Database::escape_string($cid);
     $courseInfo = api_get_course_info($cid);
+    $courseId = $courseInfo['real_id'];
     global $is_platformAdmin;
 
     $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
@@ -4807,7 +4768,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
             AND
                 relation_type <> '".COURSE_RELATION_TYPE_RRHH."'
             AND
-                course_code = ".$courseInfo['real_id']."
+                course_code = ".$courseId."
             LIMIT 1";
 
     $result = Database::query($sql);
@@ -4834,7 +4795,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
                     $tbl_session as session
                 INNER JOIN $tbl_session_course
                     ON session_rel_course.id_session = session.id
-                    AND session_rel_course.course_code = '$cid'
+                    AND session_rel_course.c_id = '$courseId'
                 LIMIT 1";
 
         $result = Database::query($sql);
@@ -4860,7 +4821,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
             // Check if the current user is the course coach.
             $sql = "SELECT 1
                     FROM $tbl_session_course
-                    WHERE session_rel_course.course_code = '$cid'
+                    WHERE session_rel_course.c_id = '$courseId'
                     AND session_rel_course.id_coach = '$userid'
                     LIMIT 1";
 
@@ -4891,7 +4852,7 @@ function api_is_course_visible_for_user($userid = null, $cid = null) {
                 $sql = "SELECT  id
                         FROM    $tbl_session_course_user
                         WHERE   id_user  = '$userid'
-                        AND     course_code = '$cid'
+                        AND     c_id = '$courseId'
                         LIMIT 1";
 
                 if (Database::num_rows($result) > 0) {
@@ -6328,13 +6289,11 @@ function api_get_datetime_picker_js($htmlHeadXtra) {
 }
 
 
-function api_detect_user_roles($user_id, $course_code, $session_id = 0) {
+function api_detect_user_roles($user_id, $courseId, $session_id = 0) {
     $user_roles = array();
     /*$user_info = api_get_user_info($user_id);
     $user_roles[] = $user_info['status'];*/
 
-    $courseInfo = api_get_course_info($course_code);
-
     $url_id = api_get_current_access_url_id();
     if (api_is_platform_admin_by_id($user_id, $url_id)) {
         $user_roles[] = PLATFORM_ADMIN;
@@ -6352,18 +6311,18 @@ function api_detect_user_roles($user_id, $course_code, $session_id = 0) {
 
     if (!empty($course_code)) {
         if (empty($session_id)) {
-            if (CourseManager::is_course_teacher($user_id, $courseInfo['real_id'])) {
+            if (CourseManager::is_course_teacher($user_id, $courseId)) {
                 $user_roles[] = COURSEMANAGER;
             }
-            if (CourseManager::get_tutor_in_course_status($user_id, $courseInfo['real_id'])) {
+            if (CourseManager::get_tutor_in_course_status($user_id, $courseId)) {
                 $user_roles[] = COURSE_TUTOR;
             }
 
-            if (CourseManager::is_user_subscribed_in_course($user_id, $course_code)) {
+            if (CourseManager::is_user_subscribed_in_course($user_id, $courseId)) {
                 $user_roles[] = COURSE_STUDENT;
             }
         } else {
-            $user_status_in_session = SessionManager::get_user_status_in_course_session($user_id, $course_code, $session_id);
+            $user_status_in_session = SessionManager::get_user_status_in_course_session($user_id, $courseId, $session_id);
 
             if (!empty($user_status_in_session)) {
                 if ($user_status_in_session == 0) {
@@ -6374,9 +6333,6 @@ function api_detect_user_roles($user_id, $course_code, $session_id = 0) {
                 }
             }
 
-            /*if (api_is_course_session_coach($user_id, $course_code, $session_id)) {
-               $user_roles[] = SESSION_COURSE_COACH;
-            }*/
         }
     }
     return $user_roles;
@@ -6412,11 +6368,11 @@ function role_actions() {
     );
 }
 
-function api_coach_can_edit_view_results($course_code = null, $session_id = null) {
+function api_coach_can_edit_view_results($courseId = null, $session_id = null) {
     $user_id = api_get_user_id();
 
-    if (empty($course_code)) {
-        $course_code = api_get_course_id();
+    if (empty($courseId)) {
+        $courseId = api_get_course_int_id();
     }
 
     if (empty($session_id)) {
@@ -6427,7 +6383,7 @@ function api_coach_can_edit_view_results($course_code = null, $session_id = null
         return true;
     }
 
-    $roles = api_detect_user_roles($user_id, $course_code, $session_id);
+    $roles = api_detect_user_roles($user_id, $courseId, $session_id);
 
     if (in_array(SESSION_COURSE_COACH, $roles)) {
         return api_get_setting('session_tutor_reports_visibility') == 'true';

+ 1 - 1
main/inc/lib/online.inc.php

@@ -27,7 +27,7 @@ class Online {
      */
     static function loginCheck($uid)
     {
-        global $_course;
+        $_course = api_get_course_info();
         $uid = (int) $uid;
         $online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE);
         if (!empty($uid)) {

+ 113 - 207
main/inc/lib/sessionmanager.lib.php

@@ -12,8 +12,8 @@
  * groups).
  * @package chamilo.library.session
  */
-class SessionManager {
-
+class SessionManager
+{
     //See BT#4871
     CONST SESSION_CHANGE_USER_REASON_SCHEDULE = 1;
     CONST SESSION_CHANGE_USER_REASON_CLASSROOM = 2;
@@ -102,7 +102,9 @@ class SessionManager {
             event_system(LOG_SESSION_CREATE, LOG_SESSION_ID, $session_id, api_get_utc_datetime(), api_get_user_id());
 
             if (isset($params['course_code'])) {
-                self::add_courses_to_session($session_id, array($params['course_code']));
+                $courseInfo = api_get_course_info($params['course_code']);
+
+                self::add_courses_to_session($session_id, array($courseInfo['real_id']));
 
                 //Update default course gradebook to the session if exists
                 $create_gradebook_evaluation = isset($params['create_gradebook_evaluation']) ? $params['create_gradebook_evaluation']  : false;
@@ -564,7 +566,7 @@ class SessionManager {
                     LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id)
                     INNER JOIN $tbl_session_field_options fvo ON (fv.field_id = fvo.field_id)
                     LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id)
-                    LEFT JOIN $tbl_course c ON (src.course_code = c.code)
+                    LEFT JOIN $tbl_course c ON (src.c_id = c.id)
                     LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id)
                     INNER JOIN $tbl_user u ON (s.id_coach = u.user_id) ".
                     $where;
@@ -578,7 +580,7 @@ class SessionManager {
                     FROM $tbl_session s
                     LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id)
                     LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id)
-                    LEFT JOIN $tbl_course c ON (src.course_code = c.code)
+                    LEFT JOIN $tbl_course c ON (src.c_id = c.id)
                     LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id)
                     INNER JOIN $tbl_user u ON (s.id_coach = u.user_id)
                     INNER JOIN $table_access_url_rel_session ar ON (ar.session_id = s.id)
@@ -731,109 +733,7 @@ class SessionManager {
         }
         return $session_name;
     }
-    /**
-     * Edit a session
-     * @author Carlos Vargas from existing code
-     * @param    integer        id
-     * @param    string         name
-     * @param     integer        year_start
-     * @param     integer        month_start
-     * @param     integer        day_start
-     * @param     integer        year_end
-     * @param     integer        month_end
-     * @param     integer        day_end
-     * @param     integer        nb_days_acess_before
-     * @param     integer        nb_days_acess_after
-     * @param     integer        nolimit
-     * @param     integer        id_coach
-     * @param     integer        id_session_category
-     * @return $id;
-     * The parameter id is a primary key
-    **/
-    /*
-    public static function edit_session ($id,$name,$year_start,$month_start,$day_start,$year_end,$month_end,$day_end,$nb_days_acess_before,$nb_days_acess_after,$nolimit,$id_coach, $id_session_category, $id_visibility, $start_limit = true, $end_limit = true) {
-        global $_user;
-        $name=trim(stripslashes($name));
-        $year_start=intval($year_start);
-        $month_start=intval($month_start);
-        $day_start=intval($day_start);
-        $year_end=intval($year_end);
-        $month_end=intval($month_end);
-        $day_end=intval($day_end);
-        $id_coach= intval($id_coach);
-        $nb_days_acess_before= intval($nb_days_acess_before);
-        $nb_days_acess_after = intval($nb_days_acess_after);
-        $id_session_category = intval($id_session_category);
-        $id_visibility = intval($id_visibility);
-
-        $tbl_user        = Database::get_main_table(TABLE_MAIN_USER);
-        $tbl_session    = Database::get_main_table(TABLE_MAIN_SESSION);
-        $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
-
-        if (empty($nolimit)) {
-            $date_start  = "$year_start-".(($month_start < 10)?"0$month_start":$month_start)."-".(($day_start < 10)?"0$day_start":$day_start);
-            $date_end    = "$year_end-".(($month_end < 10)?"0$month_end":$month_end)."-".(($day_end < 10)?"0$day_end":$day_end);
-        } else {
-            $date_start  = "0000-00-00";
-            $date_end    = "0000-00-00";
-            $id_visibility = 1;//force read only
-        }
 
-        if (!empty($no_end_limit)) {
-            $date_end   = "0000-00-00";
-        }
-
-        if (empty($end_limit)) {
-            $date_end ="0000-00-00";
-            $id_visibility = 1;//force read only
-        }
-
-        if (empty($start_limit)) {
-            $date_start ="0000-00-00";
-        }
-
-        if (empty($name)) {
-            $msg=get_lang('SessionNameIsRequired');
-            return $msg;
-        } elseif (empty($id_coach))   {
-            $msg=get_lang('CoachIsRequired');
-            return $msg;
-        } elseif (!empty($start_limit) && empty($nolimit) && (!$month_start || !$day_start || !$year_start || !checkdate($month_start,$day_start,$year_start))) {
-            $msg=get_lang('InvalidStartDate');
-            return $msg;
-        } elseif (!empty($end_limit) && empty($nolimit) && (!$month_end || !$day_end || !$year_end || !checkdate($month_end,$day_end,$year_end))) {
-            $msg=get_lang('InvalidEndDate');
-            return $msg;
-        } elseif (!empty($start_limit) && !empty($end_limit) && empty($nolimit) && $date_start >= $date_end) {
-            $msg=get_lang('StartDateShouldBeBeforeEndDate');
-            return $msg;
-        } else {
-            $rs = Database::query("SELECT id FROM $tbl_session WHERE name='".Database::escape_string($name)."'");
-            $exists = false;
-            while ($row = Database::fetch_array($rs)) {
-                if($row['id']!=$id)
-                    $exists = true;
-            }
-            if ($exists) {
-                $msg=get_lang('SessionNameAlreadyExists');
-                return $msg;
-            } else {
-                $sql="UPDATE $tbl_session " .
-                    "SET name='".Database::escape_string($name)."',
-                        date_start='".$date_start."',
-                        date_end='".$date_end."',
-                        id_coach='".$id_coach."',
-                        nb_days_access_before_beginning = ".$nb_days_acess_before.",
-                        nb_days_access_after_end = ".$nb_days_acess_after.",
-                        session_category_id = ".$id_session_category." ,
-                        visibility= ".$id_visibility."
-                      WHERE id='$id'";
-                Database::query($sql);
-                return $id;
-            }
-        }
-    }
-    */
     /**
      * Delete session
      * @author Carlos Vargas  from existing code
@@ -844,7 +744,7 @@ class SessionManager {
      **/
     public static function delete_session ($id_checked, $from_ws = false) {
         $tbl_session=                        Database::get_main_table(TABLE_MAIN_SESSION);
-        $tbl_session_rel_course=            Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
+        $tbl_session_rel_course =            Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
         $tbl_session_rel_course_rel_user=    Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
         $tbl_session_rel_user=                Database::get_main_table(TABLE_MAIN_SESSION_USER);
         $tbl_url_session                  = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
@@ -983,11 +883,11 @@ class SessionManager {
             $existingUsers[] = $row['id_user'];
         }
 
-        $sql = "SELECT course_code FROM $tbl_session_rel_course WHERE id_session = '$id_session'";
+        $sql = "SELECT c_id FROM $tbl_session_rel_course WHERE id_session = '$id_session'";
         $result = Database::query($sql);
         $course_list = array();
         while ($row = Database::fetch_array($result)) {
-            $course_list[] = $row['course_code'];
+            $course_list[] = $row['c_id'];
         }
 
         if ($send_email) {
@@ -1004,15 +904,15 @@ class SessionManager {
             }
         }
 
-        foreach ($course_list as $enreg_course) {
+        foreach ($course_list as $courseId) {
             // for each course in the session
             $nbr_users = 0;
-            $enreg_course = Database::escape_string($enreg_course);
+            $courseId = Database::escape_string($courseId);
             // delete existing users
             if ($empty_users) {
                 foreach ($existingUsers as $existing_user) {
                     if (!in_array($existing_user, $user_list)) {
-                        $sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND id_user='$existing_user' AND status = 0";
+                        $sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND c_id ='$courseId' AND id_user='$existing_user' AND status = 0";
                         Database::query($sql);
                         if (Database::affected_rows()) {
                             $nbr_users--;
@@ -1027,7 +927,7 @@ class SessionManager {
             foreach ($user_list as $enreg_user) {
                 if(!in_array($enreg_user, $existingUsers)) {
                     $enreg_user = Database::escape_string($enreg_user);
-                    $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session, course_code, id_user, visibility, status) VALUES('$id_session','$enreg_course','$enreg_user','$session_visibility', '0')";
+                    $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session, c_id, id_user, visibility, status) VALUES('$id_session','$courseId','$enreg_user','$session_visibility', '0')";
                     Database::query($insert_sql);
 
                     if(Database::affected_rows()) {
@@ -1036,11 +936,11 @@ class SessionManager {
                 }
             }
             // count users in this session-course relation
-            $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND status<>2";
+            $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND c_id ='$courseId' AND status<>2";
             $rs = Database::query($sql);
             list($nbr_users) = Database::fetch_array($rs);
             // update the session-course relation to add the users total
-            $update_sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'";
+            $update_sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users WHERE id_session='$id_session' AND c_id ='$courseId'";
             Database::query($update_sql);
         }
 
@@ -1075,7 +975,14 @@ class SessionManager {
         }
     }
 
-    static function subscribe_users_to_session_course($user_list, $session_id, $course_code, $session_visibility = SESSION_VISIBLE_READ_ONLY ) {
+    /**
+     * @param $user_list
+     * @param $session_id
+     * @param $courseId
+     * @param int $session_visibility
+     * @return bool
+     */
+    static function subscribe_users_to_session_course($user_list, $session_id, $courseId, $session_visibility = SESSION_VISIBLE_READ_ONLY ) {
         $tbl_session_rel_course                = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
@@ -1084,15 +991,15 @@ class SessionManager {
         }
 
         $session_id = intval($session_id);
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
         $session_visibility = intval($session_visibility);
 
         $nbr_users = 0;
         foreach ($user_list as $enreg_user) {
             //if (!in_array($enreg_user, $existingUsers)) {
                 $enreg_user = intval($enreg_user);
-                $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session, course_code, id_user, visibility)
-                               VALUES ('$session_id','$course_code','$enreg_user','$session_visibility')";
+                $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session, c_id, id_user, visibility)
+                               VALUES ('$session_id','$courseId','$enreg_user','$session_visibility')";
                 Database::query($insert_sql);
                 if (Database::affected_rows()) {
                     $nbr_users++;
@@ -1100,11 +1007,11 @@ class SessionManager {
             //}
         }
         // count users in this session-course relation
-        $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND status<>2";
+        $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND c_id = '$courseId' AND status<>2";
         $rs = Database::query($sql);
         list($nbr_users) = Database::fetch_array($rs);
         // update the session-course relation to add the users total
-        $update_sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users WHERE id_session='$session_id' AND course_code='$course_code'";
+        $update_sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users WHERE id_session='$session_id' AND c_id = '$courseId'";
         Database::query($update_sql);
     }
 
@@ -1146,13 +1053,13 @@ class SessionManager {
 
         if (!empty($course_list)) {
             foreach($course_list as $course) {
-                $course_code = $course['code'];
+                $courseId = $course['id'];
                 // Delete user from course
-                Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='$user_id'");
+                Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND c_id='$courseId' AND id_user='$user_id'");
 
-                if(Database::affected_rows()) {
+                if (Database::affected_rows()) {
                     // Update number of users in this relation
-                    Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users - 1 WHERE id_session='$session_id' AND course_code='$course_code'");
+                    Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users - 1 WHERE id_session='$session_id' AND c_id ='$courseId'");
                 }
             }
         }
@@ -1163,9 +1070,9 @@ class SessionManager {
      *
      * @param int $session_id
      * @param array user id list
-     * @param string $course_code
+     * @param int $courseId
      */
-    static function unsubscribe_user_from_course_session($session_id, $user_list, $course_code) {
+    static function unsubscribe_user_from_course_session($session_id, $user_list, $courseId) {
         $tbl_session_rel_course             = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
@@ -1174,12 +1081,12 @@ class SessionManager {
             $user_list = implode(',', $user_list);
         }
         $session_id = intval($session_id);
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
 
         if (!empty($user_list)) {
-            Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='".$course_code."' AND id_user IN($user_list)");
+            Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND c_id='".$courseId."' AND id_user IN($user_list)");
             $nbr_affected_rows = Database::affected_rows();
-            Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users-$nbr_affected_rows WHERE id_session='$session_id' AND course_code='".$course_code."'");
+            Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users-$nbr_affected_rows WHERE id_session='$session_id' AND c_id='".$courseId."'");
         }
     }
 
@@ -1205,7 +1112,7 @@ class SessionManager {
         $id_coach = Database::fetch_array($id_coach);
         $id_coach = $id_coach[0];
         // get list of courses subscribed to this session
-        $rs = Database::query("SELECT course_code FROM $tbl_session_rel_course WHERE id_session=$id_session");
+        $rs = Database::query("SELECT c_id FROM $tbl_session_rel_course WHERE id_session=$id_session");
         $existingCourses = Database::store_result($rs);
         $nbr_courses=count($existingCourses);
         // get list of users subscribed to this session
@@ -1218,9 +1125,9 @@ class SessionManager {
         // Remove existing courses from the session
         if ($empty_courses===true) {
             foreach ($existingCourses as $existingCourse) {
-                if (!in_array($existingCourse['course_code'], $course_list)){
-                    Database::query("DELETE FROM $tbl_session_rel_course WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
-                    Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
+                if (!in_array($existingCourse['c_id'], $course_list)){
+                    Database::query("DELETE FROM $tbl_session_rel_course WHERE c_id='".$existingCourse['c_id']."' AND id_session=$id_session");
+                    Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE c_id='".$existingCourse['c_id']."' AND id_session=$id_session");
                 }
             }
             $nbr_courses=0;
@@ -1232,16 +1139,14 @@ class SessionManager {
             $exists = false;
             // check if the course we want to add is already subscribed
             foreach ($existingCourses as $existingCourse) {
-                if ($enreg_course == $existingCourse['course_code']) {
+                if ($enreg_course == $existingCourse['c_id']) {
                     $exists=true;
                 }
             }
             if (!$exists) {
-                $courseInfo = api_get_course_info($enreg_course);
-                $courseId = $courseInfo['real_id'];
 
                 //if the course isn't subscribed yet
-                $sql_insert_rel_course= "INSERT INTO $tbl_session_rel_course (id_session, course_code, course_id) VALUES ('$id_session','$enreg_course', $courseId)";
+                $sql_insert_rel_course= "INSERT INTO $tbl_session_rel_course (id_session, c_id, course_id) VALUES ('$id_session','$enreg_course', $courseId)";
                 Database::query($sql_insert_rel_course);
                 //We add the current course in the existing courses array, to avoid adding another time the current course
                 $existingCourses[]=array('course_code'=>$enreg_course);
@@ -1251,13 +1156,13 @@ class SessionManager {
                 $nbr_users=0;
                 foreach ($user_list as $enreg_user) {
                     $enreg_user_id = Database::escape_string($enreg_user['id_user']);
-                    $sql_insert = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user (id_session,course_code,id_user) VALUES ('$id_session','$enreg_course','$enreg_user_id')";
+                    $sql_insert = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user (id_session, c_id, id_user) VALUES ('$id_session','$enreg_course','$enreg_user_id')";
                     Database::query($sql_insert);
                     if (Database::affected_rows()) {
                         $nbr_users++;
                     }
                 }
-                Database::query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'");
+                Database::query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND c_id = '$enreg_course'");
             }
         }
         Database::query("UPDATE $tbl_session SET nbr_courses=$nbr_courses WHERE id='$id_session'");
@@ -1278,17 +1183,11 @@ class SessionManager {
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
         $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
 
-        // Get course code
-        $course_code = CourseManager::get_course_code_from_course_id($course_id);
-        if($course_code == 0) {
-            return false;
-        }
-
         // Unsubscribe course
-        Database::query("DELETE FROM $tbl_session_rel_course WHERE course_code='$course_code' AND id_session='$session_id'");
+        Database::query("DELETE FROM $tbl_session_rel_course WHERE c_id ='$course_id' AND id_session='$session_id'");
         $nb_affected = Database::affected_rows();
 
-        Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE course_code='$course_code' AND id_session='$session_id'");
+        Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE c_id ='$course_id' AND id_session='$session_id'");
         if($nb_affected > 0) {
             // Update number of courses in the session
             Database::query("UPDATE $tbl_session SET nbr_courses= nbr_courses + $nb_affected WHERE id='$session_id' ");
@@ -1402,10 +1301,11 @@ class SessionManager {
     * @param int $course_id
     * @return bool                Returns TRUE if the session and the course are related, FALSE otherwise.
     * */
-    public static function relation_session_course_exist ($session_id, $course_id) {
+    public static function relation_session_course_exist ($session_id, $courseId) {
         $tbl_session_course    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
         $return_value = false;
-        $sql= "SELECT course_code FROM $tbl_session_course WHERE id_session = ".Database::escape_string($session_id)." AND course_code = '".Database::escape_string($course_id)."'";
+        $sql= "SELECT c_id FROM $tbl_session_course
+              WHERE id_session = ".Database::escape_string($session_id)." AND c_id = '".Database::escape_string($courseId)."'";
         $result = Database::query($sql);
         $num = Database::num_rows($result);
         if ($num>0) {
@@ -1691,11 +1591,11 @@ class SessionManager {
      * Assign a coach to course in session with status = 2
      * @param int          - user id
      * @param int          - session id
-     * @param string      - course code
+     * @param int      - course id
      * @param bool      - optional, if is true the user don't be a coach now, otherwise it'll assign a coach
      * @return bool true if there are affected rows, otherwise false
      */
-    public static function set_coach_to_course_session($user_id, $session_id = 0, $course_code = '',$nocoach = false) {
+    public static function set_coach_to_course_session($user_id, $session_id = 0, $courseId = '',$nocoach = false) {
 
         // Definition of variables
         $user_id = intval($user_id);
@@ -1706,10 +1606,10 @@ class SessionManager {
             $session_id = api_get_session_id();
         }
 
-        if (!empty($course_code)) {
-            $course_code = Database::escape_string($course_code);
+        if (!empty($courseId)) {
+            $courseId = Database::escape_string($courseId);
         } else {
-            $course_code = api_get_course_id();
+            $courseId = api_get_course_int_id();
         }
 
         // definitios of tables
@@ -1732,13 +1632,13 @@ class SessionManager {
 
                 if (Database::num_rows($res) > 0) {
                     // The user don't be a coach now
-                    $sql = "UPDATE $tbl_session_rel_course_rel_user SET status = 0 WHERE id_session = '$session_id' AND course_code = '$course_code' AND id_user = '$user_id' ";
+                    $sql = "UPDATE $tbl_session_rel_course_rel_user SET status = 0 WHERE id_session = '$session_id' AND c_id = '$courseId' AND id_user = '$user_id' ";
                     $rs_update = Database::query($sql);
                     if (Database::affected_rows() > 0) return true;
                     else return false;
                 } else {
                     // The user don't be a coach now
-                    $sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session = '$session_id' AND course_code = '$course_code' AND id_user = '$user_id' ";
+                    $sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session = '$session_id' AND c_id = '$courseId' AND id_user = '$user_id' ";
                     $rs_delete = Database::query($sql);
                     if (Database::affected_rows() > 0) return true;
                     else return false;
@@ -1747,17 +1647,17 @@ class SessionManager {
             } else {
                 // Assign user like a coach to course
                 // First check if the user is registered in the course
-                $sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session = '$session_id' AND course_code = '$course_code' AND id_user = '$user_id'";
+                $sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session = '$session_id' AND c_id = '$courseId' AND id_user = '$user_id'";
                 $rs_check = Database::query($sql);
 
                 //Then update or insert
                 if (Database::num_rows($rs_check) > 0) {
-                    $sql = "UPDATE $tbl_session_rel_course_rel_user SET status = 2 WHERE id_session = '$session_id' AND course_code = '$course_code' AND id_user = '$user_id' ";
+                    $sql = "UPDATE $tbl_session_rel_course_rel_user SET status = 2 WHERE id_session = '$session_id' AND c_id = '$courseId' AND id_user = '$user_id' ";
                     $rs_update = Database::query($sql);
                     if (Database::affected_rows() > 0) return true;
                     else return false;
                 } else {
-                    $sql = " INSERT INTO $tbl_session_rel_course_rel_user(id_session, course_code, id_user, status) VALUES('$session_id', '$course_code', '$user_id', 2)";
+                    $sql = " INSERT INTO $tbl_session_rel_course_rel_user(id_session, c_id, id_user, status) VALUES('$session_id', '$courseId', '$user_id', 2)";
                     $rs_insert = Database::query($sql);
                     if (Database::affected_rows() > 0) return true;
                     else return false;
@@ -1786,8 +1686,9 @@ class SessionManager {
         $affected_rows = 0;
 
         //Deleting assigned sessions to hrm_id
-        if ($_configuration['multiple_access_urls']) {
-            $sql = "SELECT id_session FROM $tbl_session_rel_user s INNER JOIN $tbl_session_rel_access_url a ON (a.session_id = s.id_session) WHERE id_user = $hr_manager_id AND relation_type=".SESSION_RELATION_TYPE_RRHH." AND access_url_id = ".api_get_current_access_url_id()."";
+        if (api_is_multiple_url_enabled()) {
+            $sql = "SELECT id_session FROM $tbl_session_rel_user s INNER JOIN $tbl_session_rel_access_url a ON (a.session_id = s.id_session)
+                    WHERE id_user = $hr_manager_id AND relation_type=".SESSION_RELATION_TYPE_RRHH." AND access_url_id = ".api_get_current_access_url_id()."";
         } else {
             $sql = "SELECT id_session FROM $tbl_session_rel_user s WHERE id_user = $hr_manager_id AND relation_type=".SESSION_RELATION_TYPE_RRHH."";
         }
@@ -1795,22 +1696,11 @@ class SessionManager {
 
         if (Database::num_rows($result) > 0) {
             while ($row = Database::fetch_array($result))   {
-                 $sql = "DELETE FROM $tbl_session_rel_user WHERE id_session = {$row['id_session']} AND id_user = $hr_manager_id AND relation_type=".SESSION_RELATION_TYPE_RRHH." ";
+                 $sql = "DELETE FROM $tbl_session_rel_user
+                         WHERE id_session = {$row['id_session']} AND id_user = $hr_manager_id AND relation_type=".SESSION_RELATION_TYPE_RRHH." ";
                  Database::query($sql);
             }
         }
-
-        /*
-        //Deleting assigned courses in sessions to hrm_id
-           $sql = "SELECT * FROM $tbl_session_rel_course_user WHERE id_user = $hr_manager_id ";
-        $result = Database::query($sql);
-
-        if (Database::num_rows($result) > 0) {
-            $sql = "DELETE FROM $tbl_session_rel_course_user WHERE id_user = $hr_manager_id ";
-            Database::query($sql);
-        }
-        */
-
         // inserting new sessions list
         if (is_array($sessions_list)) {
             foreach ($sessions_list as $session_id) {
@@ -1864,8 +1754,9 @@ class SessionManager {
         $tbl_session_rel_course    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
 
         // select the courses
-        $sql = "SELECT * FROM $tbl_course c INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code
-                WHERE src.id_session = '$session_id' ORDER BY title;";
+        $sql = "SELECT c.*, c.id as real_id FROM $tbl_course c INNER JOIN $tbl_session_rel_course src ON c.id = src.c_id
+                WHERE src.id_session = '$session_id'
+                ORDER BY title;";
         $result     = Database::query($sql);
         $num_rows     = Database::num_rows($result);
         $courses = array();
@@ -2057,14 +1948,14 @@ class SessionManager {
      * @param $session_id
      * @return unknown_type
      */
-    public static function get_user_status_in_course_session($user_id, $course_code, $session_id) {
+    public static function get_user_status_in_course_session($user_id, $courseId, $session_id) {
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
         $tbl_user                           = Database::get_main_table(TABLE_MAIN_USER);
         $sql = "SELECT session_rcru.status
                 FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
                 WHERE session_rcru.id_user = user.user_id AND
                 session_rcru.id_session = '".intval($session_id)."' AND
-                session_rcru.course_code ='".Database::escape_string($course_code)."' AND
+                session_rcru.c_id ='".Database::escape_string($courseId)."' AND
                 user.user_id = ".intval($user_id);
 
         $result = Database::query($sql);
@@ -2181,7 +2072,7 @@ class SessionManager {
                                 $list       = new LearnpathList('', $course_info['code'], $sid);
                                 $flat_list  = $list->get_flat_list();
                                 if (!empty($flat_list)) {
-                                    foreach($flat_list as $lp_id => $data) {
+                                    foreach ($flat_list as $lp_id => $data) {
                                         api_item_property_update($course_info, TOOL_LEARNPATH, $lp_id, 'invisible', api_get_user_id(), 0 ,0, 0, 0, $sid);
                                         api_item_property_update($course_info, TOOL_LEARNPATH, $lp_id, 'invisible', api_get_user_id(), 0 ,0, 0, 0);
                                     }
@@ -2199,7 +2090,7 @@ class SessionManager {
                     }
                 } else {
                     foreach($short_courses as $course_data) {
-                         $new_short_courses[] = $course_data['code'];
+                         $new_short_courses[] = $course_data['id'];
                     }
                 }
                 $short_courses = $new_short_courses;
@@ -2281,12 +2172,16 @@ class SessionManager {
         }
     }
 
-    static function get_session_by_course($course_code) {
+    /**
+     * @param $courseId
+     * @return array
+     */
+    static function get_session_by_course($courseId) {
         $table_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
         $table_session = Database::get_main_table(TABLE_MAIN_SESSION);
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
         $sql = "SELECT name, s.id FROM $table_session_course sc INNER JOIN $table_session s ON (sc.id_session = s.id)
-                WHERE sc.course_code = '$course_code' ";
+                WHERE sc.c_id = '$courseId' ";
         $result = Database::query($sql);
         return Database::store_result($result);
     }
@@ -2362,9 +2257,6 @@ class SessionManager {
             $new_session_id = intval($new_session_id);
             $reason_id = intval($reason_id);
 
-            //self::unsubscribe_user_from_session($old_session_id, $user_id, $reason_id);
-
-            //$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
             $tbl_session_rel_course    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
             $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
             $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
@@ -2377,12 +2269,12 @@ class SessionManager {
             $course_list = SessionManager::get_course_list_by_session_id($old_session_id);
             if (!empty($course_list)) {
                 foreach ($course_list as $course) {
-                    $course_code = $course['code'];
+                    $courseId = $course['id'];
                     // Delete user from course
                     //Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='$user_id'");
                     //if (Database::affected_rows()) {
                         // Update number of users in this relation
-                        $sql = "UPDATE $tbl_session_rel_course SET nbr_users = nbr_users - 1 WHERE id_session = '$old_session_id' AND course_code='$course_code'";
+                        $sql = "UPDATE $tbl_session_rel_course SET nbr_users = nbr_users - 1 WHERE id_session = '$old_session_id' AND c_id='$courseId'";
                         Database::query($sql);
                     //}
                 }
@@ -2421,12 +2313,12 @@ class SessionManager {
     /**
      * Get users inside a course session
      */
-    static function get_users_in_course_session($course_code, $id_session, $sort, $direction, $from = null, $limit = null) {
+    static function get_users_in_course_session($courseId, $id_session, $sort, $direction, $from = null, $limit = null) {
         $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
         $tbl_user                           = Database::get_main_table(TABLE_MAIN_USER);
 
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
         $id_session  = Database::escape_string($id_session);
         $from = intval($from);
         $limit = intval($limit);
@@ -2436,7 +2328,7 @@ class SessionManager {
         //Select the number of users
         $sql = " SELECT DISTINCT u.user_id,".($is_western_name_order ? 'u.firstname, u.lastname' : 'u.lastname, u.firstname').", u.username, scru.id_user as is_subscribed
                  FROM $tbl_session_rel_user sru INNER JOIN $tbl_user u ON (u.user_id=sru.id_user)
-                      LEFT JOIN $tbl_session_rel_course_rel_user scru ON (u.user_id = scru.id_user AND  scru.course_code = '".$course_code."' )
+                      LEFT JOIN $tbl_session_rel_course_rel_user scru ON (u.user_id = scru.id_user AND scru.c_id = '".$courseId."' )
                  WHERE  sru.id_session = '$id_session' AND
                         sru.moved_to = 0 AND sru.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION." AND
                         sru.relation_type<>".SESSION_RELATION_TYPE_RRHH;
@@ -2453,7 +2345,12 @@ class SessionManager {
         return false;
     }
 
-    static function get_count_users_in_course_session($course_code, $id_session) {
+    /**
+     * @param $courseId
+     * @param $id_session
+     * @return int|mixed
+     */
+    static function get_count_users_in_course_session($courseId, $id_session) {
         $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
@@ -2461,7 +2358,7 @@ class SessionManager {
         $sql = " SELECT count(*) FROM $tbl_session_rel_user sru, $tbl_session_rel_course_rel_user srcru
                  WHERE  srcru.id_user = sru.id_user AND
                         srcru.id_session = sru.id_session AND
-                        srcru.course_code = '".Database::escape_string($course_code)."' AND
+                        srcru.c_id = '".Database::escape_string($courseId)."' AND
                         srcru.id_session = '".intval($id_session)."'  AND
                         (sru.moved_to = 0 AND sru.moved_status <> ".SessionManager::SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION.") AND
                         sru.relation_type<>".SESSION_RELATION_TYPE_RRHH;
@@ -2479,7 +2376,8 @@ class SessionManager {
      * @param in session_id
      * @return array
      */
-    static function get_session_course_coaches($course_code, $session_id) {
+    static function get_session_course_coaches($courseId, $session_id)
+    {
         $tbl_user                            = Database::get_main_table(TABLE_MAIN_USER);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
@@ -2487,13 +2385,14 @@ class SessionManager {
         $sql = "SELECT user.user_id FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
                 WHERE   session_rcru.id_user = user.user_id AND
                         session_rcru.id_session = '".intval($session_id)."' AND
-                        session_rcru.course_code ='".Database::escape_string($course_code)."' AND
+                        session_rcru.c_id ='".Database::escape_string($courseId)."' AND
                         session_rcru.status=2";
         $result = Database::query($sql);
         return Database::store_result($result);
     }
 
-    static function get_session_course_coaches_by_user($course_code, $session_id, $user_id) {
+    static function get_session_course_coaches_by_user($courseId, $session_id, $user_id)
+    {
         $tbl_user                            = Database::get_main_table(TABLE_MAIN_USER);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
@@ -2501,15 +2400,16 @@ class SessionManager {
         $sql = "SELECT user.user_id FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
                 WHERE   session_rcru.id_user = user.user_id AND
                         session_rcru.id_session = '".intval($session_id)."' AND
-                        session_rcru.course_code ='".Database::escape_string($course_code)."' AND
+                        session_rcru.c_id ='".Database::escape_string($courseId)."' AND
                         session_rcru.status=2";
         $result = Database::query($sql);
         return Database::store_result($result);
     }
 
 
-    static function get_session_course_coaches_to_string($course_code, $session_id) {
-        $coaches = self::get_session_course_coaches($course_code, $session_id);
+    static function get_session_course_coaches_to_string($courseId, $session_id)
+    {
+        $coaches = self::get_session_course_coaches($courseId, $session_id);
         if (!empty($coaches)) {
             $coach_list = array();
             foreach ($coaches as $coach_info) {
@@ -2523,25 +2423,31 @@ class SessionManager {
         return get_lang('None');
     }
 
-    static function delete_course_in_session($id_session, $course_code) {
+    /**
+     * @param $id_session
+     * @param $courseId
+     */
+    static function delete_course_in_session($id_session, $courseId)
+    {
         $tbl_session_rel_course                = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
         $tbl_session_rel_course_rel_user    = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
         $tbl_session                        = Database::get_main_table(TABLE_MAIN_SESSION);
 
         $id_session = intval($id_session);
-        $course_code = Database::escape_string($course_code);
+        $courseId = Database::escape_string($courseId);
 
-        if (!empty($id_session) && !empty($course_code)) {
+        if (!empty($id_session) && !empty($courseId)) {
 
-            Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session='$id_session' AND course_code = '$course_code'");
+            Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session='$id_session' AND c_id = '$courseId'");
             $nbr_affected_rows=Database::affected_rows();
 
-            Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code = '$course_code'");
+            Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND c_id = '$courseId'");
             Database::query("UPDATE $tbl_session SET nbr_courses=nbr_courses-$nbr_affected_rows WHERE id='$id_session'");
         }
     }
 
-    static function get_sessions_by_user($user_id) {
+    static function get_sessions_by_user($user_id)
+    {
        $session_categories = UserManager::get_sessions_by_category($user_id);
        $session_array = array();
        if (!empty($session_categories)) {

+ 11 - 10
main/inc/lib/statistics.lib.php

@@ -437,7 +437,7 @@ class Statistics {
         if (api_is_multiple_url_enabled()) {
             $sql = "SELECT access_tool, count( access_id ) AS number_of_logins
                     FROM $table, $access_url_rel_course_table u, $tableCourse c
-                    WHERE access_tool IN ('".implode("','",$tools)."') AND c.id = u.c_id AND c.code = access_cours_code AND access_url_id='".$current_url_id."' ".
+                    WHERE access_tool IN ('".implode("','",$tools)."') AND c.id = u.c_id AND c.id = c_id AND access_url_id='".$current_url_id."' ".
                    "GROUP BY access_tool ";
         } else {
             $sql = "SELECT access_tool, count( access_id ) AS number_of_logins FROM $table ".
@@ -545,7 +545,7 @@ class Statistics {
         $access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
         $current_url_id = api_get_current_access_url_id();
 
-        $columns[0] = 'access_cours_code';
+        $columns[0] = 'c_id';
         $columns[1] = 'access_date';
         $sql_order[SORT_ASC] = 'ASC';
         $sql_order[SORT_DESC] = 'DESC';
@@ -575,16 +575,17 @@ class Statistics {
         $table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
         $tableCourse  = Database::get_main_table(TABLE_MAIN_COURSE);
         if (api_is_multiple_url_enabled()) {
-            $sql = "SELECT * FROM $table, $access_url_rel_course_table, $tableCourse c
-                    WHERE c.id c_id AND access_cours_code = c.code AND access_url_id='".$current_url_id."' ".
+            $sql = "SELECT access_date, c.code FROM $table s , $access_url_rel_course_table u, $tableCourse c
+                    WHERE c.id = u.c_id AND c.id = s.c_id AND access_url_id='".$current_url_id."' ".
                    "GROUP BY access_cours_code ".
-                   "HAVING access_cours_code <> '' ".
+                   "HAVING s.c_id <> '' ".
                    "AND DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;
         } else {
-            $sql = "SELECT * FROM $table ".
-                   "GROUP BY access_cours_code ".
-                   "HAVING access_cours_code <> '' ".
-                   "AND DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;
+            $sql = "SELECT access_date, c.code FROM $table , $tableCourse c
+                    WHERE c_id = c.id
+                    GROUP BY c_id
+                    HAVING c_id <> ''AND
+                    DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;
         }
         $res = Database::query($sql);
         $number_of_courses = Database::num_rows($res);
@@ -597,7 +598,7 @@ class Statistics {
             $courses = array ();
             while ($obj = Database::fetch_object($res)) {
                 $course = array ();
-                $course[]= '<a href="'.api_get_path(WEB_PATH).'courses/'.$obj->access_cours_code.'">'.$obj->access_cours_code.' <a>';
+                $course[]= '<a href="'.api_get_path(WEB_PATH).'courses/'.$obj->code.'">'.$obj->code.' <a>';
                                 //Allow sort by date hiding the numerical date
                 $course[] = '<span style="display:none;">'.$obj->access_date.'</span>'.api_convert_and_format_date($obj->access_date);
                 $courses[] = $course;

+ 2 - 3
main/inc/lib/template.lib.php

@@ -644,11 +644,11 @@ class Template
                 $this->assign('footer_extra_content', $extra_footer);
             }
         }
+        $id_course = api_get_course_int_id();
 
         //Tutor name
         if (api_get_setting('show_tutor_data') == 'true') {
             // Course manager
-            $id_course = api_get_course_id();
             $id_session = api_get_session_id();
             if (isset($id_course) && $id_course != -1) {
                 $tutor_data = '';
@@ -674,7 +674,6 @@ class Template
 
         if (api_get_setting('show_teacher_data') == 'true') {
             // course manager
-            $id_course = api_get_course_int_id();
             if (isset($id_course) && $id_course != -1) {
                 $teacher_data = '';
                 $mail = CourseManager::get_emails_of_tutors_to_course($id_course);
@@ -901,7 +900,7 @@ class Template
      */
     function get_tabs()
     {
-        global $_course;
+        $_course = api_get_course_info();
 
         $navigation = array();
 

+ 2 - 2
main/inc/lib/thematic.lib.php

@@ -686,7 +686,7 @@ class Thematic
 	 * @return	int		Affected rows
 	 */
 	public function thematic_advance_destroy($thematic_advance_id) {
-		global $_course;
+        $_course = api_get_course_info();
 		$course_id = $this->get_course_int_id();
 
 		// definition database table
@@ -946,7 +946,7 @@ class Thematic
 	 * @return	int		Affected rows
 	 */
 	public function update_done_thematic_advances($thematic_advance_id) {
-		global $_course;
+        $_course = api_get_course_info();
 		$thematic_data         = $this->get_thematic_list(null, api_get_course_id());
 		$thematic_advance_data = $this->get_thematic_advance_list(null, api_get_course_id(), true);
 		$tbl_thematic_advance  = Database::get_course_table(TABLE_THEMATIC_ADVANCE);

Diferenças do arquivo suprimidas por serem muito extensas
+ 397 - 419
main/inc/lib/tracking.lib.php


+ 25 - 20
main/inc/lib/usermanager.lib.php

@@ -1195,6 +1195,7 @@ class UserManager {
             case 'none':
             default: // Base: empty, the result path below will be relative.
                 $base = '';
+                break;
         }
 
         if (empty($id) || empty($type)) {
@@ -1215,13 +1216,15 @@ class UserManager {
         $picture_filename = trim($user['picture_uri']);
 
         if (api_get_setting('split_users_upload_directory') === 'true') {
+            $dir = $base.'upload/users/'.substr((string)$user_id, 0, 1).'/'.$user_id.'/';
+            /* @todo check this validation
             if (!empty($picture_filename) or $preview) {
-                $dir = $base.'data/upload/users/'.substr((string)$user_id, 0, 1).'/'.$user_id.'/';
+                $dir = $base.'upload/users/'.substr((string)$user_id, 0, 1).'/'.$user_id.'/';
             } else {
-                $dir = $base.'data/upload/users/'.$user_id.'/';
-            }
+                $dir = $base.'upload/users/'.$user_id.'/';
+            }*/
         } else {
-            $dir = $base.'data/upload/users/'.$user_id.'/';
+            $dir = $base.'upload/users/'.$user_id.'/';
         }
         if (empty($picture_filename) && $anonymous) {
             return array('dir' => $base_unknown.'img/', 'file' => 'unknown.jpg');
@@ -2516,13 +2519,13 @@ class UserManager {
                 foreach ($courses as $course) {
 
                     //Checking course session visibility
-                    $visibility = api_get_session_visibility($session_id, $course['code']);
+                    $visibility = api_get_session_visibility($session_id, $course['id']);
 
                     if ($visibility == SESSION_INVISIBLE) {
                         continue;
                     }
 
-                    $user_status_in_course = CourseManager::get_user_in_course_status($user_id, $course['code']);
+                    $user_status_in_course = CourseManager::get_user_in_course_status($user_id, $course['id']);
                     $course['user_status_in_course'] = $user_status_in_course;
                     $course_list[] = $course;
                 }
@@ -2622,13 +2625,13 @@ class UserManager {
                 $session_id = $enreg['id'];
                 $courseList = SessionManager::get_course_list_by_session_id($session_id);
                 foreach ($courseList as $course) {
-                    $sessionVisibility = api_get_session_visibility($session_id, $course['code']);
+                    $sessionVisibility = api_get_session_visibility($session_id, $course['id']);
 
                     if ($sessionVisibility == SESSION_INVISIBLE) {
                         continue;
                     }
                     $course['course_info'] = $course;
-                    $key = $session_id.' - '.$course['code'];
+                    $key = $session_id.' - '.$course['id'];
                     $personal_course_list[$key] = $course;
                 }
             }
@@ -2665,35 +2668,37 @@ class UserManager {
         $courses = array();
 
         // this query is very similar to the above query, but it will check the session_rel_course_user table if there are courses registered to our user or not
-        $personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu $join_access_url
+        $personal_course_list_sql = "SELECT DISTINCT scu.c_id as id
+                                    FROM $tbl_session_course_user as scu $join_access_url
                                     WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url
-                                    ORDER BY code";
+                                    ORDER BY c_id";
 
         $course_list_sql_result = Database::query($personal_course_list_sql);
 
         if (Database::num_rows($course_list_sql_result) > 0) {
             while ($result_row = Database::fetch_array($course_list_sql_result)) {
                 $result_row['status'] = 5;
-                if (!in_array($result_row['code'], $courses)) {
+                if (!in_array($result_row['id'], $courses)) {
                     $personal_course_list[] = $result_row;
-                    $courses[] = $result_row['code'];
+                    $courses[] = $result_row['id'];
                 }
             }
         }
 
         if (api_is_allowed_to_create_course()) {
-            $personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu, $tbl_session as s $join_access_url
+            $personal_course_list_sql = "SELECT DISTINCT scu.c_id as id
+                                        FROM $tbl_session_course_user as scu, $tbl_session as s $join_access_url
                                         WHERE s.id = $session_id AND scu.id_session = s.id AND ((scu.id_user=$user_id AND scu.status=2) OR s.id_coach = $user_id)
                                         $where_access_url
-                                        ORDER BY code";
+                                        ORDER BY c_id";
             $course_list_sql_result = Database::query($personal_course_list_sql);
 
             if (Database::num_rows($course_list_sql_result)>0) {
                 while ($result_row = Database::fetch_array($course_list_sql_result)) {
                     $result_row['status'] = 2;
-                    if (!in_array($result_row['code'],$courses)) {
+                    if (!in_array($result_row['id'],$courses)) {
                         $personal_course_list[] = $result_row;
-                        $courses[] = $result_row['code'];
+                        $courses[] = $result_row['id'];
                     }
                 }
             }
@@ -2717,7 +2722,7 @@ class UserManager {
                 $course_list = SessionManager::get_course_list_by_session_id($session_id);
                 if (!empty($course_list)) {
                     foreach ($course_list as $course) {
-                        if (!in_array($course['code'],$courses)) {
+                        if (!in_array($course['id'],$courses)) {
                             $personal_course_list[] = $course;
                         }
                     }
@@ -3790,7 +3795,6 @@ class UserManager {
      */
      public static function get_user_id_of_course_admin_or_session_admin($courseInfo) {
         $session = api_get_session_id();
-        $courseCode = $courseInfo['code'];
         $courseId = $courseInfo['real_id'];
 
         $table_user = Database::get_main_table(TABLE_MAIN_USER);
@@ -3799,7 +3803,7 @@ class UserManager {
          if ($session==0 || is_null($session)) {
              $sql='SELECT u.user_id FROM '.$table_user.' u
                     INNER JOIN '.$table_course_user.' ru ON ru.user_id=u.user_id
-                    WHERE ru.status=1 AND ru.course_code="'.Database::escape_string($courseId).'" ';
+                    WHERE ru.status=1 AND ru.c_id="'.Database::escape_string($courseId).'" ';
             $rs=Database::query($sql);
             $num_rows=Database::num_rows($rs);
             if ($num_rows==1) {
@@ -3813,7 +3817,7 @@ class UserManager {
         } elseif ($session>0) {
             $sql='SELECT u.user_id FROM '.$table_user.' u
                 INNER JOIN '.$table_session_course_user.' sru
-                ON sru.id_user=u.user_id WHERE sru.course_code="'.Database::escape_string($courseCode).'" ';
+                ON sru.id_user=u.user_id WHERE sru.c_id="'.Database::escape_string($courseId).'" ';
             $rs=Database::query($sql);
             $row=Database::fetch_array($rs);
             return $row['user_id'];
@@ -3915,6 +3919,7 @@ class UserManager {
       * @param  string  Course code
       * @param  int     Session id
       * @return bool    True if the user is a coach
+      * @deprecated seems not to be used
       *
       */
     public static function is_session_course_coach($user_id, $course_code, $session_id) {

+ 18 - 24
main/install/1.10.0/db_main.sql

@@ -489,34 +489,31 @@ ALTER TABLE session ADD INDEX idx_id_session_admin_id (session_admin_id);
 --
 DROP TABLE IF EXISTS session_rel_course;
 CREATE TABLE IF NOT EXISTS session_rel_course (
+    id INT unsigned NOT NULL auto_increment,
     id_session INT unsigned NOT NULL default '0',
-    course_id INT NOT NULL default '0',
-    course_code char(40),
+    c_id INT NOT NULL default '0',
     nbr_users int unsigned NOT NULL default '0',
-    PRIMARY KEY  (id_session, course_id)
+    PRIMARY KEY(id)
 );
-
-ALTER TABLE session_rel_course ADD INDEX idx_session_rel_course_course_id (course_id);
-
-
+ALTER TABLE session_rel_course ADD INDEX idx_session_rel_course_course_id (c_id);
 
 --
 -- Table structure for table session_rel_course_rel_user
 --
 DROP TABLE IF EXISTS session_rel_course_rel_user;
 CREATE TABLE IF NOT EXISTS session_rel_course_rel_user (
-  id_session MEDIUMINT unsigned NOT NULL default '0',
-  course_id INT NOT NULL default '0',
-  course_code char(40),
+  id INT unsigned NOT NULL auto_increment,
+  id_session INT unsigned NOT NULL default '0',
+  c_id INT NOT NULL default '0',
   id_user int unsigned NOT NULL default '0',
   visibility int NOT NULL default 1,
   status int NOT NULL default 0,
   legal_agreement INTEGER DEFAULT 0,
-  PRIMARY KEY (id_session, course_id, id_user)
+  PRIMARY KEY (id)
 );
 
 ALTER TABLE session_rel_course_rel_user ADD INDEX idx_session_rel_course_rel_user_id_user (id_user);
-ALTER TABLE session_rel_course_rel_user ADD INDEX idx_session_rel_course_rel_user_course_id (course_id);
+ALTER TABLE session_rel_course_rel_user ADD INDEX idx_session_rel_course_rel_user_course_id (c_id);
 
 
 
@@ -3127,7 +3124,7 @@ CREATE TABLE track_c_referers (
   id int NOT NULL auto_increment,
   referer varchar(255) NOT NULL default '',
   counter int NOT NULL default 0,
-  PRIMARY KEY  (id)
+  PRIMARY KEY (id)
 );
 
 DROP TABLE IF EXISTS track_e_access;
@@ -3135,12 +3132,12 @@ CREATE TABLE track_e_access (
   access_id int NOT NULL auto_increment,
   access_user_id int unsigned default NULL,
   access_date datetime NOT NULL default '0000-00-00 00:00:00',
-  access_cours_code varchar(40) NOT NULL default '',
+  c_id INT NOT NULL DEFAULT 0,
   access_tool varchar(30) default NULL,
   access_session_id int NOT NULL default 0,
   PRIMARY KEY  (access_id),
   KEY access_user_id (access_user_id),
-  KEY access_cours_code (access_cours_code)
+  KEY access_cid_user (c_id, access_user_id)
 );
 
 DROP TABLE IF EXISTS track_e_lastaccess;
@@ -3148,12 +3145,12 @@ CREATE TABLE track_e_lastaccess (
   access_id bigint NOT NULL auto_increment,
   access_user_id int unsigned default NULL,
   access_date datetime NOT NULL default '0000-00-00 00:00:00',
-  access_cours_code varchar(40) NOT NULL,
+  c_id INT NOT NULL DEFAULT 0,
   access_tool varchar(30) default NULL,
   access_session_id int unsigned default NULL,
   PRIMARY KEY  (access_id),
   KEY access_user_id (access_user_id),
-  KEY access_cours_code (access_cours_code),
+  KEY access_cours_code (c_id),
   KEY access_session_id (access_session_id)
 );
 
@@ -3168,7 +3165,7 @@ CREATE TABLE track_e_default (
   default_value text NOT NULL,
   c_id int unsigned default NULL,
   session_id int unsigned default 0,
-  PRIMARY KEY  (default_id)
+  PRIMARY KEY (default_id)
 );
 
 DROP TABLE IF EXISTS track_e_downloads;
@@ -3176,12 +3173,10 @@ CREATE TABLE track_e_downloads (
   down_id int NOT NULL auto_increment,
   down_user_id int unsigned default NULL,
   down_date datetime NOT NULL default '0000-00-00 00:00:00',
-  down_cours_id varchar(40) NOT NULL default '',
+  c_id int NOT NULL default 0,
   down_doc_path varchar(255) NOT NULL default '',
   down_session_id INT NOT NULL DEFAULT 0,
-  PRIMARY KEY  (down_id),
-  KEY down_user_id (down_user_id),
-  KEY down_cours_id (down_cours_id)
+  PRIMARY KEY  (down_id)
 );
 
 DROP TABLE IF EXISTS track_e_exercices;
@@ -3261,11 +3256,10 @@ CREATE TABLE track_e_links (
   links_id int NOT NULL auto_increment,
   links_user_id int unsigned default NULL,
   links_date datetime NOT NULL default '0000-00-00 00:00:00',
-  links_cours_id varchar(40) NOT NULL default '' ,
+  c_id INT NOT NULL DEFAULT 0,
   links_link_id int NOT NULL default 0,
   links_session_id INT NOT NULL DEFAULT 0,
   PRIMARY KEY (links_id),
-  KEY links_cours_id (links_cours_id),
   KEY links_user_id (links_user_id)
 );
 

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff