Forráskód Böngészése

Cleaning the course list

Julio Montoya 13 éve
szülő
commit
5e77766709

+ 2 - 1
main/admin/course_edit.php

@@ -101,7 +101,8 @@ $form->add_textfield('visual_code', array(get_lang('CourseCode'), get_lang('Only
 $form->applyFilter('visual_code','strtoupper');
 $form->applyFilter('visual_code','html_filter');
 
-//$form->add_textfield('tutor_name', get_lang('CourseTitular'));
+//$form->addElement('text', tutor_name', get_lang('CourseTitular'));
+
 //$form->addElement('select', 'tutor_name', get_lang('CourseTitular'), $platform_teachers, array('style'=>'width:350px','id'=>'tutor_name_id', 'class'=>'chzn-select'));
 //$form->applyFilter('tutor_name','html_filter');
 

+ 0 - 28
main/admin/course_user_list.php

@@ -1,28 +0,0 @@
-<?php
-$language_file = array ('registration');
-require_once '../inc/global.inc.php';
-require_once '../inc/lib/course.lib.php';
-$user_id=intval($_POST['user_id']);
-$list_course_all_info=array();
-$list_course=array();
-$list_course_all_info=CourseManager::get_courses_list_by_user_id($user_id,true);
-for ($i=0;$i<count($list_course_all_info);$i++) {
-	$list_course[]=$list_course_all_info[$i]['title'];
-}
-?>
-<table width="200" border="0" cellspacing="2" cellpadding="2">
-<?php
-if (count($list_course)==0) {
-?>
-<tr>
-	<td><?php echo api_ucfirst((get_lang('HaveNoCourse'))); ?></td>
-</tr>
-<?php
-}
-?>
-<?php for($k=0;$k<count($list_course);$k++) { ?>
-    <tr>
-        <td><?php echo api_convert_encoding($list_course[$k],'UTF-8',$charset);?></td>
-    </tr>
-<?php }?>
-</table>

+ 1 - 1
main/admin/settings.lib.php

@@ -1390,7 +1390,7 @@ function search_setting($search) {
                         continue;                        
                     } else {
                         $found = true;       
-                    }                    
+                    }                 
                 } else {
                     $found = true;   
                 }

+ 7 - 71
main/admin/user_list.php

@@ -18,17 +18,16 @@ $delete_user_available = true;
 if (isset($_configuration['deny_delete_users']) &&  $_configuration['deny_delete_users']) {
 	$delete_user_available = false;
 }
-
-$iam_a_global_admin = api_is_global_platform_admin(); 
-
+$url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=get_user_courses';
+        
 $htmlHeadXtra[] = '<script type="text/javascript">
 function load_course_list (div_course,my_user_id) {
 	 $.ajax({
 		contentType: "application/x-www-form-urlencoded",
 		beforeSend: function(objeto) {
-		$("div#"+div_course).html("<img src=\'../inc/lib/javascript/indicator.gif\' />"); },
+            $("div#"+div_course).html("<img src=\'../inc/lib/javascript/indicator.gif\' />"); },
 		type: "POST",
-		url: "course_user_list.php",
+		url: "'.$url.'",
 		data: "user_id="+my_user_id,
 		success: function(datos) {
 			$("div#"+div_course).html(datos);
@@ -149,69 +148,6 @@ $htmlHeadXtra[] = '<style type="text/css" media="screen, projection">
 }
 </style>';
 
-// xajax
-$xajax = new xajax();
-$xajax->registerFunction('courses_of_user');
-//$xajax->registerFunction('empty_courses_of_user');
-$xajax->processRequests();
-
-/**
- * Get a formatted list of courses for given user
- * @param   int     User ID
- * @return  resource    XAJAX response
- */
-function courses_of_user($arg) {
-	// do some stuff based on $arg like query data from a database and
-	// put it into a variable like $newContent
-    //$newContent = 'werkt het? en met een beetje meer text, wordt dat goed opgelost? ';
-    $personal_course_list = UserManager::get_personal_session_course_list($arg);
-    $newContent = '';
-    if(count($personal_course_list)>0) {
-	    foreach ($personal_course_list as $key=>$course) {
-	    	$newContent .= $course['i'].'<br />';
-	    }
-    } else {
-    	$newContent .= '- '.get_lang('None').' -<br />';
-    }
-    $newContent = api_convert_encoding($newContent,'utf-8',api_get_system_encoding());
-
-	// Instantiate the xajaxResponse object
-	$objResponse = new xajaxResponse();
-
-	// add a command to the response to assign the innerHTML attribute of
-	// the element with id="SomeElementId" to whatever the new content is
-	$objResponse->addAssign("user".$arg,"innerHTML", $newContent);
-	$objResponse->addReplace("coursesofuser".$arg,"alt", $newContent);
-	$objResponse->addReplace("coursesofuser".$arg,"title", $newContent);
-
-	$objResponse->addAssign("user".$arg,"style.display", "block");
-
-	//return the  xajaxResponse object
-	return $objResponse;
-}
-/**
- * Empties the XAJAX object representing the courses list
- * @param   int     User ID
- * @return  resource    XAJAX object
- */
-function empty_courses_of_user($arg)
-{
-	// do some stuff based on $arg like query data from a database and
-	// put it into a variable like $newContent
-    $newContent = '';
-	// Instantiate the xajaxResponse object
-	$objResponse = new xajaxResponse();
-	// add a command to the response to assign the innerHTML attribute of
-	// the element with id="SomeElementId" to whatever the new content is
-	$objResponse->addAssign("user".$arg,"innerHTML", $newContent);
-
-
-	//return the  xajaxResponse object
-	return $objResponse;
-}
-
-
-$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
 $htmlHeadXtra[] = '<style>
 .tooltipLinkInner {
 	position:relative;
@@ -574,7 +510,7 @@ function user_filter($name, $params, $row) {
  * @return string Some HTML-code with modify-buttons
  */
 function modify_filter($user_id, $url_params, $row) {
-	global $charset, $_user, $_admins_list, $delete_user_available, $iam_a_global_admin;
+	global $charset, $_user, $_admins_list, $delete_user_available;
     
 	$is_admin   = in_array($user_id,$_admins_list);
 	$statusname = api_get_status_langvars();
@@ -584,8 +520,8 @@ function modify_filter($user_id, $url_params, $row) {
 	}
 	$result = '';
 	if (!$user_is_anonymous) {
-		$result .= '<a  href="javascript:void(0)" onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')">
-					<img onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')" onmouseout="clear_course_list (\'div_'.$user_id.'\')" src="../img/course.gif" title="'.get_lang('Courses').'" alt="'.get_lang('Courses').'"/>
+		$result .= '<a href="javascript:void(0)" onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')" >
+					<img onmouseout="clear_course_list (\'div_'.$user_id.'\')" src="../img/course.gif" title="'.get_lang('Courses').'" alt="'.get_lang('Courses').'"/>
 					<div class="blackboard_hide" id="div_'.$user_id.'">&nbsp;&nbsp;</div>
 					</a>&nbsp;&nbsp;';
 	} else {

+ 14 - 0
main/inc/ajax/course.ajax.php

@@ -24,6 +24,20 @@ switch ($action) {
 	    $rating = Display::return_rating_system('star_'.$course_id, $ajax_url.'&amp;course_id='.$course_id, $point_info, false);
 		echo $rating;
 		
+        break;
+    case  'get_user_courses':
+        if (api_is_platform_admin()) {
+            $user_id = intval($_POST['user_id']);            
+            $list_course_all_info = CourseManager::get_courses_list_by_user_id($user_id, false);
+            if (!empty($list_course_all_info)) {
+                foreach($list_course_all_info as $course_item) {                
+                    $course_info = api_get_course_info($course_item['code']);                    
+                    echo $course_info['title'].'<br />';
+                }
+            } else {            
+                echo get_lang('HaveNoCourse');
+            } 
+        }
         break;
     default:
         echo '';

+ 138 - 223
main/inc/lib/course.lib.php

@@ -2054,7 +2054,7 @@ class CourseManager {
         $tbl_course_user            = Database::get_main_table(TABLE_MAIN_COURSE_USER);
         $tbl_user_course_category   = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY);               
         
-        $special_course_list 		= self::get_special_course_list();
+        $special_course_list 		= self::get_special_course_list();        
         
         $with_special_courses = $without_special_courses = '';
         if (!empty($special_course_list)) {
@@ -2064,7 +2064,7 @@ class CourseManager {
         }
         
         if (!empty($with_special_courses)) {
-            $sql = "SELECT DISTINCT(course.code), course.db_name db_name, course.title , course.id as course_id, course.id as real_id
+            $sql = "SELECT DISTINCT(course.code), course.id as real_id
                         FROM    ".$tbl_course_user." course_rel_user
                         LEFT JOIN ".$tbl_course." course
                         ON course.code = course_rel_user.course_code
@@ -2076,19 +2076,18 @@ class CourseManager {
             $rs_special_course = Database::query($sql);
             if (Database::num_rows($rs_special_course) > 0) {
                 while ($result_row = Database::fetch_array($rs_special_course)) {
-                        $result_row['special_course'] = 1;
-                        $course_list[] = $result_row;
-                        $codes[] = $result_row['code'];
+                    $result_row['special_course'] = 1;
+                    $course_list[] = $result_row;
+                    $codes[] = $result_row['real_id'];
                 }
             }
         }
 
         // get course list not auto-register. Use Distinct to avoid multiple
         // entries when a course is assigned to a HRD (DRH) as watcher
-        $sql = "SELECT DISTINCT(course.code),course.db_name,course.title , course.id as course_id, course.id as real_id
+        $sql = "SELECT DISTINCT(course.code), course.id as real_id
                 FROM $tbl_course course
-                INNER JOIN $tbl_course_user cru
-                ON course.code=cru.course_code
+                INNER JOIN $tbl_course_user cru ON course.code=cru.course_code
                 WHERE  cru.user_id='$user_id' $without_special_courses";
 
         $result = Database::query($sql);
@@ -2101,11 +2100,11 @@ class CourseManager {
         }
 
         if ($include_sessions === true) {
-            $r = Database::query("SELECT DISTINCT(c.code), c.db_name, c.title, c.id as course_id, c.id as real_id
+            $r = Database::query("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");
             while ($row = Database::fetch_array($r, 'ASSOC')) {
-                if (!in_array($row['code'], $codes)) {
+                if (!in_array($row['real_id'], $codes)) {
                     $course_list[] = $row;
                 }
             }
@@ -2118,7 +2117,7 @@ class CourseManager {
      * @param   string  Course directory (without any slash)
      * @return  string  Course code, or false if not found
      */
-    public static function get_course_id_from_path ($path) {
+    public static function get_course_id_from_path($path) {
         $path = Database::escape_string(str_replace('.', '', str_replace('/', '', $path)));
         $res = Database::query("SELECT code FROM ".Database::get_main_table(TABLE_MAIN_COURSE)."
                 WHERE directory LIKE BINARY '$path'");
@@ -2703,9 +2702,10 @@ class CourseManager {
         return self::course_code_exists($wanted_course_code);
     }
     
+    /* Use smarty*/
+    
     public function course_item_html($params, $is_sub_content = false) {
         $html = '';
-//        $html .= '<div class="span8">';  
         $class = "well";
         if ($is_sub_content) {
             $class = "";
@@ -2714,7 +2714,16 @@ class CourseManager {
             $html .= '<div class="span10">';         
                 $html .= '<div class="well3">'; 
                     $html .= '<div class="span1">'.$params['icon'].'</div>';
-                    $html .= '<div class="span5"><h4>'.$params['title'].'</h4></div>';                        
+                    $html .= '<div class="span5">';
+                    $html .= '<h4>'.$params['title'].$params['notifications'].'</h4>';
+                    
+                    if (!empty($params['teachers'])) {                    
+                        $html .= '<h5>'.$params['teachers'].'</h5>';
+                    }                    
+                    if (!empty($params['coaches'])) {                    
+                        $html .= '<h5>'.$params['coaches'].'</h5>';
+                    }    
+                    $html .= '</div>';                        
                     $html .= '<div class="span1 pull-right">'.$params['right_actions'].'</div>';        
                 $html .= '</div>';
             $html .= '</div>';
@@ -2736,10 +2745,7 @@ class CourseManager {
      * @return void
      */
     function display_special_courses($user_id, $load_dirs = false) {
-
-        $user_id = intval($user_id);
-        $user_info = api_get_user_info($user_id);
-        
+        $user_id = intval($user_id);                
         $tbl_course                 = Database::get_main_table(TABLE_MAIN_COURSE);
         $tbl_course_user            = Database::get_main_table(TABLE_MAIN_COURSE_USER);        
         
@@ -2751,9 +2757,8 @@ class CourseManager {
         }
 
         if (!empty($with_special_courses)) {
-            $sql = "SELECT course.id, course.code, course.visual_code, course.subscribe subscr, course.unsubscribe unsubscr,
-                            course.title title, course.tutor_name tutor, course.db_name, course.directory, course_rel_user.status status,
-                            course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id, course.visibility
+            $sql = "SELECT course.id, course.code, course.subscribe subscr, course.unsubscribe unsubscr, course_rel_user.status status,
+                            course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id
                             FROM $tbl_course course
                             LEFT JOIN $tbl_course_user course_rel_user ON course.code = course_rel_user.course_code AND course_rel_user.user_id = '$user_id'
                             WHERE $with_special_courses group by course.code";
@@ -2767,67 +2772,58 @@ class CourseManager {
             
             if ($number_of_courses > 0) {
                 while ($course = Database::fetch_array($rs_special_course)) {
+                    $course_info = api_get_course_info($course['code']);
+                    
                     $params = array();
                     // Get notifications.
-                    $my_course = array();                    
-                    $my_course['k']          = $course['code'];
-                    $my_course['id_session'] = null;
-                    $my_course['s']          = $course['status'];
-                    $show_notification = Display::show_notification($my_course);
+                    $course['id_session']   = null;
+                    $course['status']       = $course['status'];
+                    $show_notification = Display::show_notification($course);
 
                     if (empty($course['user_id'])) {
-                        $course['status'] = $user_info['status'];
+                        $course['status'] = STUDENT;
                     }
 
                     $status_icon = Display::return_icon('blackboard.png', null, array(), ICON_SIZE_LARGE);
                     
                     $params['right_actions'] = '';
-                    if (api_is_platform_admin()) {
-                        
+                    if (api_is_platform_admin()) {                        
                         if ($load_dirs) {
-                            $params['right_actions'] .= '<a id="document_preview_'.$course['id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
+                            $params['right_actions'] .= '<a id="document_preview_'.$course['real_id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
                             $params['right_actions'] .= '<a href="'.api_get_path(WEB_CODE_PATH).'course_info/infocours.php?cidReq='.$course['code'].'">'.Display::return_icon('edit.png', get_lang('Edit'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
-                            $params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course['id'].'_0', 'class'=>'document_preview_container'));
+                            $params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course['real_id'].'_0', 'class'=>'document_preview_container'));
                         } else {
                             $params['right_actions'] .= '<a href="'.api_get_path(WEB_CODE_PATH).'course_info/infocours.php?cidReq='.$course['code'].'">'.Display::return_icon('edit.png', get_lang('Edit'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';                  
-                        }
-                        
+                        }                        
                         if ($course['status'] == COURSEMANAGER) {
                             //echo Display::return_icon('teachers.gif', get_lang('Status').': '.get_lang('Teacher'), array('style'=>'width: 11px; height: 11px;'));
                         }                        
-                    } else {
-                                      
+                    } else {                                      
                         if ($load_dirs) {
-                            $params['right_actions'] .=  '<a id="document_preview_'.$course['id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
-                            $params['right_actions'] .=  Display::div('', array('id' => 'document_result_'.$course['id'].'_0', 'class'=>'document_preview_container'));
+                            $params['right_actions'] .=  '<a id="document_preview_'.$course['real_id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
+                            $params['right_actions'] .=  Display::div('', array('id' => 'document_result_'.$course['real_id'].'_0', 'class'=>'document_preview_container'));
                         }                                                                     
                     }
 
-                    $course_visibility = $course['visibility'];
-                    if ($course_visibility != COURSE_VISIBILITY_CLOSED || $course['status'] == COURSEMANAGER) {
-                        $course_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course['directory'].'/?id_session=0&amp;autoreg=1">'.$course['title'].'</a>';
+                    if ($course_info['visibility'] != COURSE_VISIBILITY_CLOSED || $course['status'] == COURSEMANAGER) {
+                        $course_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session=0&amp;autoreg=1">'.$course_info['title'].'</a>';
                     } else {
-                        $course_title = $course['title']." ".Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
+                        $course_title = $course_info['title']." ".Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
                     }
+                    
                     $params['image'] = $status_icon;                    
                                         
                     if (api_get_setting('display_coursecode_in_courselist') == 'true') {
-                        $course_title .= $course['visual_code'];
-                    }
-                    if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') {
-                        $course_title .= ' - ';
-                    }
-
-                    if (api_get_setting('display_teacher_in_courselist') == 'true') {
-                        $course_title .= $course['tutor'];
+                        $course_title .= $course_info['visual_code'];
+                    }                    
+                    if (api_get_setting('display_teacher_in_courselist') == 'true') {                        
+                        $params['teachers'] = CourseManager::get_teacher_list_from_course_code_to_string($course['code']);                        
                     }
                     $course_title .= '&nbsp;';
                     $course_title .= Display::return_icon('klipper.png', get_lang('CourseAutoRegister'));
-
-                    // Show notifications.
-                    $course_title .= $show_notification;
                     
                     $params['image'] = $course_title;
+                    $params['notifications'] = $show_notification;                    
                     $html .= self::course_item_html($params);
                     $key++;
                 }
@@ -2853,16 +2849,15 @@ class CourseManager {
         // Step 0: We display the course without a user category.
         $html = self :: display_courses_in_category(0, $load_dirs);
     
-        // Step 1: We get all the categories of the user.
+        // Step 1: We get all the categories of the user
         $tucc = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY);
         $sql = "SELECT id, title FROM $tucc WHERE user_id='".$user_id."' ORDER BY sort ASC";
         $result = Database::query($sql);
         while ($row = Database::fetch_array($result)) {
-            $params = array();
-            
+            $params = array();            
             // We simply display the title of the category.
             $params['icon'] = Display::return_icon('folder_yellow.png', null, array(), ICON_SIZE_LARGE);
-            $params['title'] = $row['title'];            
+            $params['title'] = $row['title'];               
             $html .= self::course_item_parent(self::course_item_html($params), self :: display_courses_in_category($row['id'], $load_dirs));
         }
         return $html;
@@ -2875,7 +2870,7 @@ class CourseManager {
      *  @return void
      */
     function display_courses_in_category($user_category_id, $load_dirs = false) {    
-        global $_user;
+        $user_id = api_get_user_id();
         // Table definitions
         $TABLECOURS                     = Database :: get_main_table(TABLE_MAIN_COURSE);
         $TABLECOURSUSER                 = Database :: get_main_table(TABLE_MAIN_COURSE_USER);                
@@ -2890,13 +2885,12 @@ class CourseManager {
             $without_special_courses = ' AND course.code NOT IN ("'.implode('","',$special_course_list).'")';
         }
     
-        $sql_select_courses = "SELECT course.id, course.code, course.visual_code, course.subscribe subscr, course.unsubscribe unsubscr,
-                                        course.title title, course.tutor_name tutor, course.db_name, course.directory, course_rel_user.status status,
-                                        course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course.visibility
-                                        FROM    $TABLECOURS       course,
+        $sql_select_courses = "SELECT course.id, course.code, course.subscribe subscr, course.unsubscribe unsubscr, course_rel_user.status status,
+                                        course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
+                                        FROM    $TABLECOURS      course,
                                                 $TABLECOURSUSER  course_rel_user, ".$TABLE_ACCESS_URL_REL_COURSE." url
                                         WHERE course.code = course_rel_user.course_code AND url.course_code = course.code
-                                        AND   course_rel_user.user_id = '".$_user['user_id']."'
+                                        AND   course_rel_user.user_id = '".$user_id."'
                                         AND course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
                                         AND course_rel_user.user_course_cat='".$user_category_id."' $without_special_courses ";
         // If multiple URL access mode is enabled, only fetch courses
@@ -2906,23 +2900,20 @@ class CourseManager {
         }
         // Use user's classification for courses (if any).
         $sql_select_courses .= " ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC";
-        $result = Database::query($sql_select_courses);
-        //$number_of_courses = Database::num_rows($result);
+        $result = Database::query($sql_select_courses);        
         $key = 0;
         $status_icon = '';
         
         $html = '';
             
         // Browse through all courses.
-        while ($course = Database::fetch_array($result)) {
-            // Get notifications.
-            $my_course = array();            
-            $my_course['k']          = $course['code'];
-            $my_course['id_session'] = null;
-            $my_course['s']          = $course['status'];
+        while ($course = Database::fetch_array($result)) {   
+            $course_info = api_get_course_info($course['code']);            
+            $course['id_session'] = null;            
+            
             // For each course, get if there is any notification icon to show
             // (something that would have changed since the user's last visit).
-            $show_notification = Display :: show_notification($my_course);
+            $show_notification = Display :: show_notification($course);
             // New code displaying the user's status in respect to this course.
             $status_icon = Display::return_icon('blackboard.png', null, array(), ICON_SIZE_LARGE);
             
@@ -2931,24 +2922,26 @@ class CourseManager {
             
             if (api_is_platform_admin()) {
                 if ($load_dirs) {
-                	$params['right_actions'] .= '<a id="document_preview_'.$course['id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
+                	$params['right_actions'] .= '<a id="document_preview_'.$course_info['real_id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
                 	$params['right_actions'] .= '<a href="'.api_get_path(WEB_CODE_PATH).'course_info/infocours.php?cidReq='.$course['code'].'">'.Display::return_icon('edit.png', get_lang('Edit'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
-                	$params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course['id'].'_0', 'class'=>'document_preview_container'));
+                	$params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course_info['real_id'].'_0', 'class'=>'document_preview_container'));
                 } else {
                     $params['right_actions'].= '<a href="'.api_get_path(WEB_CODE_PATH).'course_info/infocours.php?cidReq='.$course['code'].'">'.Display::return_icon('edit.png', get_lang('Edit'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';                	
                 }
                 
-                if ($course['status'] == COURSEMANAGER) {
+                if ($course_info['status'] == COURSEMANAGER) {
                     //echo Display::return_icon('teachers.gif', get_lang('Status').': '.get_lang('Teacher'), array('style'=>'width: 11px; height: 11px;'));
                 }                                
             } else {            	           	
             	if ($load_dirs) {
-            		$params['right_actions'] .= '<a id="document_preview_'.$course['id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
-            		$params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course['id'].'_0', 'class'=>'document_preview_container'));
+            		$params['right_actions'] .= '<a id="document_preview_'.$course['real_id'].'_0" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
+            		$params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course_info['real_id'].'_0', 'class'=>'document_preview_container'));
             	}            		
             }
     
             // Function logic - act on the data (check if the course is virtual, if yes change the link).
+            /*
+             * no virtual courses
             $is_virtual_course = CourseManager :: is_virtual_course_from_system_code($course['code']);
             
             if ($is_virtual_course) {
@@ -2960,8 +2953,10 @@ class CourseManager {
                 if ($is_subscribed_in_target_course) {
                     return; // Do not display this course entry.
                 }
-            }
+            }*/
+            
             // Check if the course has virtual courses attached. If yes change the course title and display code.
+            /*
             $has_virtual_courses = CourseManager :: has_virtual_courses_from_code($course['code'], api_get_user_id());
             if ($has_virtual_courses) {
                 $course_info = api_get_course_info($course['code']);
@@ -2971,17 +2966,16 @@ class CourseManager {
             } else {
                 $course_title = $course['title'];
                 $course_display_code = $course['visual_code'];
-            }
-    
-            // Show a hyperlink to the course, unless the course is closed and user is not course admin.
-            $course_visibility = $course['visibility'];
+            }*/
+
+            $course_title = $course_info['title'];
+                        
             $course_title_url = '';
-            if ($course_visibility != COURSE_VISIBILITY_CLOSED || $course['status'] == COURSEMANAGER) {
-                $course_title_url = api_get_path(WEB_COURSE_PATH).$course['directory'].'/?id_session=0';
-                $course_title = Display::url($course['title'], $course_title_url);
-                
+            if ($course_info['visibility'] != COURSE_VISIBILITY_CLOSED || $course['status'] == COURSEMANAGER) {
+                $course_title_url = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session=0';
+                $course_title = Display::url($course_info['title'], $course_title_url);                
             } else {
-                $course_title = $course['title']." ".Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
+                $course_title = $course_info['title']." ".Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
             }
             if (!empty($course_title_url)) {
                 $status_icon = Display::url($status_icon, $course_title_url);
@@ -2989,20 +2983,16 @@ class CourseManager {
             // Start displaying the course block itself.            
             
             if (api_get_setting('display_coursecode_in_courselist') == 'true') {
-                $course_title .= $course_display_code;
-            }
-            if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') {
-                $course_title .= ' - ';
+                $course_title .= $course_info['visual_code'];
             }
             if (api_get_setting('display_teacher_in_courselist') == 'true') {
-                if (!empty($course['tutor']))
-                    $course_title .= $course['tutor'];
-            }
-            // Show notifications.
-            $course_title .= $show_notification;
+                $teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['code']);
+            }            
             
             $params['icon'] = $status_icon;            
             $params['title'] = $course_title;
+            $params['teachers'] = $teachers;
+            $params['notifications'] = $show_notification;
             $html .= self::course_item_html($params);
             $key++;
         }
@@ -3053,8 +3043,7 @@ class CourseManager {
      * $my_course['d'] - course directory
      * $my_course['i'] - course title
      * $my_course['c'] - visual course code
-     * $my_course['k']  - system course code
-     * $my_course['db'] - course database
+     * $my_course['k']  - system course code    
      * 
      * @param   array       Course details
      * @param   integer     Session ID
@@ -3071,74 +3060,52 @@ class CourseManager {
      */
     function get_logged_user_course_html($course, $session_id = 0, $class = 'courses', $session_accessible = true, $load_dirs = false) {
         global $nosession, $nbDigestEntries, $digest, $thisCourseSysCode, $orderKey;
-        $charset = api_get_system_encoding();
-    
-        $current_uid = api_get_user_id();
-        $info = api_get_course_info($course['code']);
-        $status_course = CourseManager::get_user_in_course_status($current_uid, $course['code']);
-    
-        if (!is_array($course['code'])) {
-            $my_course = api_get_course_info($course['code']);
-            $my_course['k'] = $my_course['id'];
-            $my_course['db'] = $my_course['dbName'];
-            $my_course['c'] = $my_course['official_code'];
-            $my_course['i'] = $my_course['name'];
-            $my_course['d'] = $my_course['path'];
-            $my_course['t'] = $my_course['titular'];
-            $my_course['id_session'] = $session_id;
-            $my_course['status'] = empty($session_id) ? $status_course : 5;
-        }
+        $charset = api_get_system_encoding();    
+        $user_id  = api_get_user_id();
+        $course_info = api_get_course_info($course['code']);
+        $status_course = CourseManager::get_user_in_course_status($user_id, $course_info['code']);
+        
+        $course_info['status'] = empty($session_id) ? $status_course : STUDENT;
+        
+        $course_info['id_session'] = $session_id;
     
         if (api_get_setting('use_session_mode') == 'true' && !$nosession) {
             global $now, $date_start, $date_end;
         }
     
-        // Initialise.
-        $result = '';
-    
         // Table definitions
         $main_user_table            = Database :: get_main_table(TABLE_MAIN_USER);
         $tbl_session                = Database :: get_main_table(TABLE_MAIN_SESSION);
         $tbl_session_category       = Database :: get_main_table(TABLE_MAIN_SESSION_CATEGORY);
-            
-        $user_id                = api_get_user_id();
-        $course_system_code     = $my_course['k'];
-        $course_visual_code     = $my_course['c'];
-        $course_title           = $my_course['i'];
-        $course_directory       = $my_course['d'];
-        $course_teacher         = $my_course['t'];
-        $course_teacher_email   = isset($my_course['email']) ? $my_course['email'] : '';
-        $course_info 			= Database :: get_course_info($course_system_code);
-        $course_access_settings = CourseManager :: get_access_settings($course_system_code);
-        $course_id = isset($course_info['course_id']) ? $course_info['course_id'] : null;
+        
+        $course_access_settings = CourseManager :: get_access_settings($course_info['code']);        
         $course_visibility = $course_access_settings['visibility'];
     
-        $user_in_course_status = CourseManager :: get_user_in_course_status(api_get_user_id(), $course_system_code);
+        $user_in_course_status = CourseManager :: get_user_in_course_status(api_get_user_id(), $course_info['code']);
     
         // Function logic - act on the data.
-        $is_virtual_course = CourseManager :: is_virtual_course_from_system_code($my_course['k']);
+        $is_virtual_course = CourseManager :: is_virtual_course_from_system_code($course_info['code']);
         if ($is_virtual_course) {
             // If the current user is also subscribed in the real course to which this
             // virtual course is linked, we don't need to display the virtual course entry in
             // the course list - it is combined with the real course entry.
-            $target_course_code = CourseManager :: get_target_of_linked_course($course_system_code);
+            $target_course_code = CourseManager :: get_target_of_linked_course($course_info['code']);
             $is_subscribed_in_target_course = CourseManager :: is_user_subscribed_in_course(api_get_user_id(), $target_course_code);
             if ($is_subscribed_in_target_course) {
                 return; //do not display this course entry
             }
         }
-        $has_virtual_courses = CourseManager :: has_virtual_courses_from_code($course_system_code, api_get_user_id());
+        $has_virtual_courses = CourseManager :: has_virtual_courses_from_code($course_info['code'], api_get_user_id());
         if ($has_virtual_courses) {
             $return_result = CourseManager :: determine_course_title_from_course_info(api_get_user_id(), $course_info);
-            $course_display_title = $return_result['title'];
+            $course_display_title = $return_result['name'];
             $course_display_code = $return_result['code'];
         } else {
-            $course_display_title = $course_title;
-            $course_display_code = $course_visual_code;
+            $course_display_title = $course_info['name'];
+            $course_display_code = $course_info['official_code'];
         }
     
-        $s_course_status = $my_course['status'];
-        $is_coach = api_is_coach($my_course['id_session'], $course['code']);
+        $is_coach = api_is_coach($course_info['id_session'], $course['code']);
             
         $s_htlm_status_icon = Display::return_icon('blackboard_blue.png', null, array(), ICON_SIZE_LARGE);
         
@@ -3149,16 +3116,16 @@ class CourseManager {
         if ($session_accessible) {
             if ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER) {
                 if (api_get_setting('use_session_mode') == 'true' && !$nosession) {
-                    if (empty($my_course['id_session'])) {
-                        $my_course['id_session'] = 0;
+                    if (empty($course_info['id_session'])) {
+                        $course_info['id_session'] = 0;
                     }
                     if ($user_in_course_status == COURSEMANAGER || ($date_start <= $now && $date_end >= $now) || $date_start == '0000-00-00') {
-                        $session_url = api_get_path(WEB_COURSE_PATH).$course_directory.'/?id_session='.$my_course['id_session'];
-                        $session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_directory.'/?id_session='.$my_course['id_session'].'">'.$course_display_title.'</a>';
+                        $session_url = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'];
+                        $session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'].'">'.$course_display_title.'</a>';
                     }
                 } else {
-                    $session_url   = api_get_path(WEB_COURSE_PATH).$course_directory.'/';
-                    $session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_directory.'/">'.$course_display_title.'</a>';
+                    $session_url   = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/';
+                    $session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/">'.$course_display_title.'</a>';
                 }
             } else {
                 $session_title = $course_display_title.' '.Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));                
@@ -3177,108 +3144,56 @@ class CourseManager {
         $params['right_actions'] = '';
         if ($load_dirs) {        	
         	$params['right_actions'] .= '<div style="float:right;">';
-            $params['right_actions'] .= '<a id="document_preview_'.$info['real_id'].'_'.$my_course['id_session'].'" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
-            $params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$info['real_id'].'_'.$my_course['id_session'], 'class'=>'document_preview_container'));
+            $params['right_actions'] .= '<a id="document_preview_'.$course_info['real_id'].'_'.$course_info['id_session'].'" class="document_preview" href="javascript:void(0);">'.Display::return_icon('folder.png', get_lang('Documents'), array('align' => 'absmiddle'),ICON_SIZE_SMALL).'</a>';
+            $params['right_actions'] .= Display::div('', array('id' => 'document_result_'.$course_info['real_id'].'_'.$course_info['id_session'], 'class'=>'document_preview_container'));
 			$params['right_actions'] .= '</div>';
-        }
-        
-        // Show the course_code and teacher if chosen to display this.
-        if (api_get_setting('display_coursecode_in_courselist') == 'true' || api_get_setting('display_teacher_in_courselist') == 'true') {
-            $session_title .= '<br />';
-        }
+        }        
     
         if (api_get_setting('display_coursecode_in_courselist') == 'true') {
             $session_title .= $course_display_code;
         }
     
         if (api_get_setting('display_teacher_in_courselist') == 'true') {
-            if (api_get_setting('use_session_mode')=='true' && !$nosession) {
-                $coachs_course = api_get_coachs_from_course($my_course['id_session'], $course['code']);
+            if (api_get_setting('use_session_mode') == 'true' && !$nosession) {             
+                $teacher_list = CourseManager::get_teacher_list_from_course_code_to_string($course_info['code']);
+                
+                $coachs_course = api_get_coachs_from_course($course_info['id_session'], $course['code']);
                 $course_coachs = array();
+                
                 if (is_array($coachs_course)) {
                     foreach ($coachs_course as $coach_course) {
                         $course_coachs[] = api_get_person_name($coach_course['firstname'], $coach_course['lastname']);
                     }
                 }
-    
-                if ($s_course_status == 1 || ($s_course_status == 5 && empty($my_course['id_session'])) || empty($s_course_status)) {
-                    $session_title .= $course_teacher;
-                }
-    
-                if (($s_course_status == 5 && !empty($my_course['id_session'])) || ($is_coach && $s_course_status != 1)) {
-                    if (is_array($course_coachs) && count($course_coachs)> 0 ) {
-                        if (api_get_setting('display_coursecode_in_courselist') == 'true' && api_get_setting('display_teacher_in_courselist') == 'true') {
-                            $session_title .= ' &ndash; ';
-                        }
-                        $session_title .= get_lang('Coachs').': '.implode(', ',$course_coachs);
+                if ($course_info['status'] == 1 || ($course_info['status'] == 5 && empty($course_info['id_session'])) || empty($course_info['status'])) {
+                    $params['teachers'] = $teacher_list;
+                }    
+                if (($course_info['status'] == 5 && !empty($course_info['id_session'])) || ($is_coach && $course_info['status'] != 1)) {
+                    if (is_array($course_coachs) && count($course_coachs)> 0 ) {                       
+                        $params['coaches'] = implode(', ',$course_coachs);
                     }
                 }    
-            } else {
-                $session_title .= $course_teacher;
-            }
-    
-            if(!empty($course_teacher_email)) {
-                $session_title .= ' ('.$course_teacher_email.')';
+            } else {                
+                $params['teachers'] = $teacher_list;
+                
             }
         }
     
         $session_title .= isset($course['special_course']) ? ' '.Display::return_icon('klipper.png', get_lang('CourseAutoRegister')) : '';
-            
-        //$current_course_settings = CourseManager :: get_access_settings($my_course['k']);
     
         // Display the "what's new" icons.
-        $session_title .= Display :: show_notification($my_course);
+        $session_title .= Display :: show_notification($course_info);
         
         $params['title'] = $session_title;
         $params['extra'] = '';
-        
-        if ((CONFVAL_showExtractInfo == SCRIPTVAL_InCourseList || CONFVAL_showExtractInfo == SCRIPTVAL_Both) && $nbDigestEntries > 0) {
-    
-            reset($digest);
-            
-            while (list($key2) = each($digest[$thisCourseSysCode])) {
-                $params['extra']  .= '<li>';
-                if ($orderKey[1] == 'keyTools') {
-                    $params['extra'] .= "<a href=\"$toolsList[$key2] [\"path\"] $thisCourseSysCode \">";
-                    $params['extra'] .= "$toolsList[$key2][\"name\"]</a>";
-                } else {
-                    $params['extra'] .= api_convert_and_format_date($key2, DATE_FORMAT_LONG, date_default_timezone_get());
-                }
-                $params['extra'] .= '</li>';
-                $params['extra'] .= '<ul>';
-                reset ($digest[$thisCourseSysCode][$key2]);
-                while (list ($key3, $dataFromCourse) = each($digest[$thisCourseSysCode][$key2])) {
-                    $params['extra'] .= '<li>';
-                    if ($orderKey[2] == 'keyTools') {
-                        $params['extra'] .= "<a href=\"$toolsList[$key3] [\"path\"] $thisCourseSysCode \">";
-                        $params['extra'] .= "$toolsList[$key3][\"name\"]</a>";
-                    } else {
-                        $params['extra'] .= api_convert_and_format_date($key3, DATE_FORMAT_LONG, date_default_timezone_get());
-                    }
-                    $params['extra'] .= '<ul compact="compact">';
-                    reset($digest[$thisCourseSysCode][$key2][$key3]);
-                    while (list ($key4, $dataFromCourse) = each($digest[$thisCourseSysCode][$key2][$key3])) {
-                        $params['extra'] .= '<li>';
-                        $params['extra'] .= @htmlspecialchars(api_substr(strip_tags($dataFromCourse), 0, CONFVAL_NB_CHAR_FROM_CONTENT), ENT_QUOTES, $charset);
-                        $params['extra'] .= '</li>';
-                    }
-                    $params['extra'] .= '</ul>';
-                    $params['extra'] .= '</li>';
-                }
-                $params['extra'] .= '</ul>';
-                $params['extra'] .= '</li>';
-            }
-            $params['extra'] .= '</ul>';
-        }
-        $params['extra'] .= '</li>';
-        
+               
         $html = self::course_item_html($params);
         
         $session_category_id = null;
         if (api_get_setting('use_session_mode') == 'true' && !$nosession) {
             $session = '';
             $active = false;
-            if (!empty($my_course['session_name'])) {
+            if (!empty($course_info['session_name'])) {
     
                 // Request for the name of the general coach
                 $sql = 'SELECT lastname, firstname,sc.name
@@ -3286,17 +3201,17 @@ class CourseManager {
                 LEFT JOIN '.$main_user_table .' tu
                 ON ts.id_coach = tu.user_id
                 INNER JOIN '.$tbl_session_category.' sc ON ts.session_category_id = sc.id
-                WHERE ts.id='.(int) $my_course['id_session']. ' LIMIT 1';
+                WHERE ts.id='.(int) $course_info['id_session']. ' LIMIT 1';
     
                 $rs = Database::query($sql);
                 $sessioncoach = Database::store_result($rs);
                 $sessioncoach = $sessioncoach[0];
     
                 $session = array();
-                $session['title'] = $my_course['session_name'];
-                $session_category_id = CourseManager::get_session_category_id_by_session_id($my_course['id_session']);
+                $session['title'] = $course_info['session_name'];
+                $session_category_id = CourseManager::get_session_category_id_by_session_id($course_info['id_session']);
                 $session['category'] = $sessioncoach['name'];
-                if ($my_course['date_start'] == '0000-00-00') {
+                if ($course_info['date_start'] == '0000-00-00') {
                     //$session['dates'] = get_lang('WithoutTimeLimits');
                     $session['dates'] = '';
                     if (api_get_setting('show_session_coach') === 'true') {
@@ -3304,7 +3219,7 @@ class CourseManager {
                     }
                     $active = true;
                 } else {
-                    $session ['dates'] = ' - '.get_lang('From').' '.$my_course['date_start'].' '.get_lang('To').' '.$my_course['date_end'];
+                    $session ['dates'] = ' - '.get_lang('From').' '.$course_info['date_start'].' '.get_lang('To').' '.$course_info['date_end'];
                     if (api_get_setting('show_session_coach') === 'true') {
                         $session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']);
                     }
@@ -3312,12 +3227,12 @@ class CourseManager {
                 }
             }
             $user_course_category = '';
-            if (isset($my_course['user_course_cat'])) {
-                 $user_course_category = $my_course['user_course_cat'];
+            if (isset($course_info['user_course_cat'])) {
+                 $user_course_category = $course_info['user_course_cat'];
             }
-            $output = array ($user_course_category, $html, $my_course['id_session'], $session, 'active' => $active, 'session_category_id' => $session_category_id);
+            $output = array ($user_course_category, $html, $course_info['id_session'], $session, 'active' => $active, 'session_category_id' => $session_category_id);
         } else {
-            $output = array ($my_course['user_course_cat'], $html);
+            $output = array ($course_info['user_course_cat'], $html);
         }
     
         return $output;

+ 19 - 20
main/inc/lib/display.lib.php

@@ -1016,25 +1016,22 @@ class Display {
      * @param array     Course information array, containing at least elements 'db' and 'k'
      * @return string   The HTML link to be shown next to the course
      */
-    function show_notification($my_course) {        
-        $t_track_e_access 	= Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
-        
+    function show_notification($course_info) {        
+        $t_track_e_access 	= Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);        
         $user_id = api_get_user_id();
-        $course_database 			= $my_course['db'];
-        $course_tool_table			= Database::get_course_table(TABLE_TOOL_LIST);
-        $tool_edit_table 			= Database::get_course_table(TABLE_ITEM_PROPERTY);
+        
+        $course_tool_table	= Database::get_course_table(TABLE_TOOL_LIST);
+        $tool_edit_table 	= Database::get_course_table(TABLE_ITEM_PROPERTY);
                 
-        $course_code 	= Database::escape_string($my_course['k']);
-        $course_info	= api_get_course_info($course_code);
-        $course_id 		= $course_info['real_id'];
+        $course_code        = Database::escape_string($course_info['code']);        
+        $course_id          = $course_info['real_id'];
         
-        $my_course['id_session'] = intval($my_course['id_session']);
+        $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 
-        										access_user_id = '$user_id' AND 
-        										access_session_id ='".$my_course['id_session']."'";
+        $sqlLastTrackInCourse = "SELECT * FROM $t_track_e_access USE INDEX (access_cours_code, access_user_id) 
+                                 WHERE  access_cours_code = '".$course_code."' AND 
+                                        access_user_id = '$user_id' AND 
+                                        access_session_id ='".$course_info['id_session']."'";
         $resLastTrackInCourse = Database::query($sqlLastTrackInCourse);
 
         $oldestTrackDate = $oldestTrackDateOrig = '3000-01-01 00:00:00';
@@ -1068,11 +1065,11 @@ class Display {
                         		tet.lastedit_date > '$oldestTrackDate' ".
                         " AND ctt.name = tet.tool ".
                         " AND ctt.visibility = '1' ".
-                        " AND tet.lastedit_user_id != $user_id AND tet.id_session = '".$my_course['id_session']."' ".
+                        " AND tet.lastedit_user_id != $user_id AND tet.id_session = '".$course_info['id_session']."' ".
                         " ORDER BY tet.lastedit_date";
         $res = Database::query($sql);
         // Get the group_id's with user membership.
-        $group_ids = GroupManager :: get_group_ids($my_course['real_id'], $user_id);
+        $group_ids = GroupManager :: get_group_ids($course_info['real_id'], $user_id);
         $group_ids[] = 0; //add group 'everyone'
         $notifications = array();
         // Filter all last edits of all tools of the course
@@ -1092,7 +1089,7 @@ class Display {
                   )
                 // Take only what's visible or invisible but where the user is a teacher or where the visibility is unset.
                 && ($item_property['visibility'] == '1'
-                    || ($my_course['s'] == '1' && $item_property['visibility'] == '0')
+                    || ($course_info['status'] == '1' && $item_property['visibility'] == '0')
                     || !isset($item_property['visibility'])))
             {
                 // Also drop announcements and events that are not for the user or his group.
@@ -1125,10 +1122,12 @@ class Display {
         while (list($key, $notification) = each($notifications)) {
             $lastDate = date('d/m/Y H:i', convert_sql_date($notification['lastedit_date']));
             $type = $notification['lastedit_type'];
-            if (empty($my_course['id_session'])) {
+            if (empty($course_info['id_session'])) {
                 $my_course['id_session'] = 0;
             }
-            $retvalue .= '<a href="'.api_get_path(WEB_CODE_PATH).$notification['link'].'?cidReq='.$course_code.'&amp;ref='.$notification['ref'].'&amp;gidReq='.$notification['to_group_id'].'&amp;id_session='.$my_course['id_session'].'">'.'<img title="-- '.get_lang(ucfirst($notification['tool'])).' -- '.get_lang('_title_notification').": ".get_lang($type)." ($lastDate).\"".' src="'.api_get_path(WEB_CODE_PATH).'img/'.$notification['image'].'" border="0" align="absbottom" /></a>&nbsp;';
+            $retvalue .= '<a href="'.api_get_path(WEB_CODE_PATH).$notification['link'].'?cidReq='.$course_code.'&amp;ref='.$notification['ref'].'&amp;gidReq='.$notification['to_group_id'].'&amp;id_session='.$my_course['id_session'].'">'.
+                         '<img title="-- '.get_lang(ucfirst($notification['tool'])).' -- '.get_lang('_title_notification').": ".get_lang($type)." ($lastDate).\"".' src="'.api_get_path(WEB_CODE_PATH).'img/'.$notification['image'].'" border="0" align="absbottom" />
+                          </a>&nbsp;';
         }
         return $retvalue;
     }

+ 2 - 1
main/inc/lib/main_api.lib.php

@@ -1152,6 +1152,7 @@ function api_get_course_info($course_code = null) {
             $_course['id'           ]         = $course_data['code'           ];
             $_course['code'         ]         = $course_data['code'           ];
             $_course['name'         ]         = $course_data['title'          ];
+            $_course['title'         ]        = $course_data['title'          ];
             $_course['official_code']         = $course_data['visual_code'    ]; // Use in echo statements.
             $_course['sysCode'      ]         = $course_data['code'           ]; // Use as key in db.
             $_course['path'         ]         = $course_data['directory'      ]; // Use as key in path.
@@ -1222,6 +1223,7 @@ function api_get_course_info_by_id($id = null) {
             // Added
             $_course['code'         ]         = $course_data['code'           ];
             $_course['name'         ]         = $course_data['title'          ];
+            $_course['title'         ]        = $course_data['title'          ];
             $_course['official_code']         = $course_data['visual_code'    ]; // Use in echo statements.
             $_course['sysCode'      ]         = $course_data['code'           ]; // Use as key in db.
             $_course['path'         ]         = $course_data['directory'      ]; // Use as key in path.
@@ -1857,7 +1859,6 @@ function api_get_coachs_from_course($session_id=0,$course_code='') {
     $rs = Database::query($sql);
 
     if (Database::num_rows($rs) > 0) {
-
         while ($row = Database::fetch_array($rs)) {
             $coaches[] = $row;
         }

+ 39 - 48
main/inc/lib/usermanager.lib.php

@@ -1749,13 +1749,12 @@ class UserManager {
 	public static function get_sessions_by_category ($user_id, $fill_first = false, $is_time_over = false, $sort_by_session_name = false) {
 		// Database Table Definitions
 		$tbl_session_user			= Database :: get_main_table(TABLE_MAIN_SESSION_USER);
-		$tbl_session				= Database :: get_main_table(TABLE_MAIN_SESSION);
-		$tbl_session_course			= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
+		$tbl_session				= Database :: get_main_table(TABLE_MAIN_SESSION);		
 		$tbl_session_course_user	= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 		if ($user_id != strval(intval($user_id))) return array();
 
 		$categories = array();
-                $names = array();
+        $names = array();
 		if ($fill_first) {
 			$categories[0] = array();
 		}
@@ -1818,8 +1817,7 @@ class UserManager {
             if (!empty($categories)) {
                 foreach ($categories as $cat_id => $category) {
                     // inside each category, prepare a new empty array to sort sessions
-                    $new_cat = array();
-                    
+                    $new_cat = array();                    
                     if (is_array($category) && !empty($category)) {
                 	    foreach ($category as $session) {
                 	       $new_cat[$names[$session]] = $session;
@@ -1830,7 +1828,6 @@ class UserManager {
                 }
             }
         }
-        
 		return $categories;
 	}
 
@@ -1846,8 +1843,7 @@ class UserManager {
 		$tbl_user 					= Database :: get_main_table(TABLE_MAIN_USER);
 		$tbl_session 				= Database :: get_main_table(TABLE_MAIN_SESSION);
 		$tbl_session_user			= Database :: get_main_table(TABLE_MAIN_SESSION_USER);
-		$tbl_course_user 			= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
-		$tbl_session_course 		= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
+		$tbl_course_user 			= Database :: get_main_table(TABLE_MAIN_COURSE_USER);		
 		$tbl_session_course_user 	= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
 		if ($user_id != strval(intval($user_id))) return array();
@@ -1864,15 +1860,10 @@ class UserManager {
 			}
 		}
 
-		// variable initialisation
-		$personal_course_list_sql = '';
-
 		//Courses in which we suscribed out of any session
 		$tbl_user_course_category = Database :: get_user_personal_table(TABLE_USER_COURSE_CATEGORY);
 
-		$personal_course_list_sql = "SELECT   course.code, course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, course.tutor_name t, 
-		                                      course.course_language l, course_rel_user.status s, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, 
-		                                      course.id as course_id
+		$personal_course_list_sql = "SELECT course.code, course_rel_user.status course_rel_status, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat		                                      
 			                         FROM ".$tbl_course_user." course_rel_user
 				                     LEFT JOIN ".$tbl_course." course
 					                 ON course.code = course_rel_user.course_code
@@ -1880,14 +1871,16 @@ class UserManager {
 					                 ON course_rel_user.user_course_cat = user_course_category.id
 				                     $join_access_url
 			                         WHERE   course_rel_user.user_id = '".$user_id."' AND 
-			                                 course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."  $where_access_url
+			                                 course_rel_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH."  $where_access_url
 								     ORDER BY user_course_category.sort, course_rel_user.sort, course.title ASC";
 
 		$course_list_sql_result = Database::query($personal_course_list_sql);
 
 		$personal_course_list = array();
 		if (Database::num_rows($course_list_sql_result) > 0 ) {
-			while ($result_row = Database::fetch_array($course_list_sql_result)) {
+			while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) {
+                $course_info = api_get_course_info($result_row['code']);
+                $result_row['course_info'] = $course_info;
 				$personal_course_list[] = $result_row;
 			}
 		}
@@ -1895,42 +1888,41 @@ class UserManager {
 		// get the list of sessions where the user is subscribed as student
 		$sessions_sql = "SELECT DISTINCT id, name, date_start, date_end
 						FROM $tbl_session_user, $tbl_session
-						WHERE id_session=id AND id_user=$user_id AND relation_type<>".SESSION_RELATION_TYPE_RRHH."
-						AND (date_start <= CURDATE() AND date_end >= CURDATE() OR date_start='0000-00-00')
+						WHERE   id_session=id AND 
+                                id_user=$user_id AND 
+                                relation_type<>".SESSION_RELATION_TYPE_RRHH." AND 
+                                (date_start <= CURDATE() AND date_end >= CURDATE() OR date_start='0000-00-00')
 						ORDER BY date_start, date_end, name";
 		$result     = Database::query($sessions_sql);
-		$sessions   = Database::store_result($result);
-		$sessions   = array_merge($sessions , Database::store_result($result));
-
+		$sessions   = Database::store_result($result, 'ASSOC');
 
 		// get the list of sessions where the user is subscribed as student where visibility = SESSION_VISIBLE_READ_ONLY = 1  SESSION_VISIBLE = 2
 		$sessions_out_date_sql = "SELECT DISTINCT id, name, date_start, date_end
 								FROM $tbl_session_user, $tbl_session
-								WHERE
-								id_session=id AND id_user=$user_id AND 
-								relation_type<>".SESSION_RELATION_TYPE_RRHH." AND
-								(date_end <= CURDATE() AND date_end<>'0000-00-00') AND (visibility = ".SESSION_VISIBLE_READ_ONLY." || visibility = ".SESSION_VISIBLE.")
+								WHERE   id_session=id AND id_user=$user_id AND 
+                                        relation_type<>".SESSION_RELATION_TYPE_RRHH." AND
+                                        (date_end <= CURDATE() AND date_end<>'0000-00-00') AND (visibility = ".SESSION_VISIBLE_READ_ONLY." || visibility = ".SESSION_VISIBLE.")
 								ORDER BY date_start, date_end, name";
         
 		$result_out_date    = Database::query($sessions_out_date_sql);
-		$sessions_out_date  = Database::store_result($result_out_date);
+		$sessions_out_date  = Database::store_result($result_out_date, 'ASSOC');
 		$sessions           = array_merge($sessions , $sessions_out_date);
 
 		// get the list of sessions where the user is subscribed as coach in a course
 		$sessions_sql = "SELECT DISTINCT id, name, date_start, date_end, DATE_SUB(date_start, INTERVAL nb_days_access_before_beginning DAY), ADDDATE(date_end, INTERVAL nb_days_access_after_end DAY)
-			FROM $tbl_session as session
-				INNER JOIN $tbl_session_course_user as session_rel_course_user
-				ON session_rel_course_user.id_session = session.id
-				AND session_rel_course_user.id_user = $user_id AND session_rel_course_user.status = 2
-			WHERE (
-                    CURDATE() >= DATE_SUB(date_start, INTERVAL nb_days_access_before_beginning DAY) AND
-				    CURDATE() <= ADDDATE(date_end, INTERVAL nb_days_access_after_end DAY) OR 
-				    date_start='0000-00-00'
-                  )
-			ORDER BY date_start, date_end, name";
+                        FROM $tbl_session as session
+                            INNER JOIN $tbl_session_course_user as session_rel_course_user
+                            ON session_rel_course_user.id_session = session.id
+                            AND session_rel_course_user.id_user = $user_id AND session_rel_course_user.status = 2
+                        WHERE (
+                                CURDATE() >= DATE_SUB(date_start, INTERVAL nb_days_access_before_beginning DAY) AND
+                                CURDATE() <= ADDDATE(date_end, INTERVAL nb_days_access_after_end DAY) OR 
+                                date_start='0000-00-00'
+                            )
+                        ORDER BY date_start, date_end, name";
 
 		$result = Database::query($sessions_sql);
-		$session_is_coach = Database::store_result($result);
+		$session_is_coach = Database::store_result($result, 'ASSOC');
 		$sessions = array_merge($sessions, $session_is_coach);
 
 		// get the list of sessions where the user is subscribed as coach
@@ -1943,14 +1935,14 @@ class UserManager {
 			ORDER BY date_start, date_end, name";
 		$result = Database::query($sessions_sql);
 
-		$sessions = array_merge($sessions, Database::store_result($result));
+		$sessions = array_merge($sessions, Database::store_result($result,'ASSOC'));
 
 		if (api_is_allowed_to_create_course()) {
 			foreach($sessions as $enreg) {
 				$id_session = $enreg['id'];
-				$personal_course_list_sql = "SELECT DISTINCT course.code, course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, 
+				$personal_course_list_sql = "SELECT DISTINCT course.code,
 				                            ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." t, email, course.course_language l, 1 sort, 
-				                               category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name,  course.id as course_id
+				                               category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name
 					FROM $tbl_session_course_user as session_course_user
 						INNER JOIN $tbl_course AS course
 							ON course.code = session_course_user.course_code
@@ -1964,8 +1956,9 @@ class UserManager {
 
 				$course_list_sql_result = Database::query($personal_course_list_sql);
 
-				while ($result_row = Database::fetch_array($course_list_sql_result)) {					
-					$key = $result_row['id_session'].' - '.$result_row['k'];
+				while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) {			
+                    $result_row['course_info'] = api_get_course_info($result_row['code']);
+					$key = $result_row['id_session'].' - '.$result_row['code'];
 					$personal_course_list[$key] = $result_row;
 				}
 			}
@@ -1974,7 +1967,7 @@ class UserManager {
 		foreach ($sessions as $enreg) {
 			$id_session = $enreg['id'];
 			// 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 course.code, course.id as course_id, course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email, 
+			$personal_course_list_sql = "SELECT DISTINCT course.code CONCAT(user.lastname,' ',user.firstname) t, email, 
 			                             course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name, " .
                                         "IF((session_course_user.id_user = 3 AND session_course_user.status=2),'2', '5')
 										FROM $tbl_session_course_user as session_course_user
@@ -1986,15 +1979,14 @@ class UserManager {
 
 			$course_list_sql_result = Database::query($personal_course_list_sql);
 
-			while ($result_row = Database::fetch_array($course_list_sql_result)) {
+			while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) {
+                $result_row['course_info'] = api_get_course_info($result_row['code']);
 				$key = $result_row['id_session'].' - '.$result_row['k'];
 				if (!isset($personal_course_list[$key])) {
 					$personal_course_list[$key] = $result_row;
 				}
 			}
 		}
-		//print_r($personal_course_list);
-
 		return $personal_course_list;
 	}
 	/**
@@ -2004,8 +1996,7 @@ class UserManager {
 	 */
 	public static function get_courses_list_by_session($user_id, $session_id) {
 		// 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 				= Database :: get_main_table(TABLE_MAIN_SESSION);		
 		$tbl_session_course_user 	= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
 		$user_id    = intval($user_id);

+ 23 - 163
main/inc/lib/userportal.lib.php

@@ -991,81 +991,30 @@ class IndexManager {
 	 * The most important function here, prints the session and course list
 	 *  
 	 * */
-	function return_courses_and_sessions($personal_course_list) {
+	function return_courses_and_sessions() {		       
+        $courses_tree = array();        
+        $load_history = (isset($_GET['history']) && intval($_GET['history']) == 1) ? true : false;
 		
-		// Don't change these settings
-		define('SCRIPTVAL_No', 0);
-		define('SCRIPTVAL_InCourseList', 1);
-		define('SCRIPTVAL_UnderCourseList', 2);
-		define('SCRIPTVAL_Both', 3);
-		define('SCRIPTVAL_NewEntriesOfTheDay', 4);
-		define('SCRIPTVAL_NewEntriesOfTheDayOfLastLogin', 5);
-		define('SCRIPTVAL_NoTimeLimit', 6);
-		// End 'don't change' section	
-		
-		// ---- Course list options ----
-		define('CONFVAL_showCourseLangIfNotSameThatPlatform', true);
-		// Preview of course content
-		// to disable all: set CONFVAL_maxTotalByCourse = 0
-		// to enable all: set e.g. CONFVAL_maxTotalByCourse = 5
-		// by default disabled since what's new icons are better (see function display_digest() )
-		define('CONFVAL_maxValvasByCourse', 2); // Maximum number of entries
-		define('CONFVAL_maxAgendaByCourse', 2); // collected from each course
-		define('CONFVAL_maxTotalByCourse', 0); //  and displayed in summary.
-		define('CONFVAL_NB_CHAR_FROM_CONTENT', 80);
-		// Order to sort data
-		$orderKey = array('keyTools', 'keyTime', 'keyCourse'); // default "best" Choice
-		//$orderKey = array('keyTools', 'keyCourse', 'keyTime');
-		//$orderKey = array('keyCourse', 'keyTime', 'keyTools');
-		//$orderKey = array('keyCourse', 'keyTools', 'keyTime');
-		define('CONFVAL_showExtractInfo', SCRIPTVAL_UnderCourseList);
-		// SCRIPTVAL_InCourseList        // best choice if $orderKey[0] == 'keyCourse'
-		// SCRIPTVAL_UnderCourseList    // best choice
-		// SCRIPTVAL_Both // probably only for debug
-		//define('CONFVAL_dateFormatForInfosFromCourses', get_lang('dateFormatShort'));
-		define('CONFVAL_dateFormatForInfosFromCourses', get_lang('dateFormatLong'));
-		//define("CONFVAL_limitPreviewTo",SCRIPTVAL_NewEntriesOfTheDay);
-		//define("CONFVAL_limitPreviewTo",SCRIPTVAL_NoTimeLimit);
-		define("CONFVAL_limitPreviewTo", SCRIPTVAL_NewEntriesOfTheDayOfLastLogin);
-		
-		
-		/* PERSONAL COURSE LIST */
-		
-		if (!isset ($maxValvas)) {
-			$maxValvas = CONFVAL_maxValvasByCourse; // Maximum number of entries
-		}
-		if (!isset ($maxAgenda)) {
-			$maxAgenda = CONFVAL_maxAgendaByCourse; // collected from each course
-		}
-		if (!isset ($maxCourse)) {
-			$maxCourse = CONFVAL_maxTotalByCourse; // and displayed in summary.
-		}
-		
-		$maxValvas = (int) $maxValvas;
-		$maxAgenda = (int) $maxAgenda;
-		$maxCourse = (int) $maxCourse; // 0 if invalid.
-		
-		/* DISPLAY COURSES */
-		
-		// Compose a structured array of session categories, sessions and courses
-		// for the current user.
-		
-		if (isset($_GET['history']) && intval($_GET['history']) == 1) {
-			$courses_tree = UserManager::get_sessions_by_category(api_get_user_id(), true, true, true);
+		if ($load_history) {
+            //Load courses history 
+			$courses_tree = UserManager::get_sessions_by_category(api_get_user_id(), true, true, true);            
 			if (empty($courses_tree[0]) && count($courses_tree) == 1) {
 				$courses_tree = null;
 			}
 		} else {
-			$courses_tree = UserManager::get_sessions_by_category(api_get_user_id(), true, false, true);
+            //Load current courses
+			$courses_tree = UserManager::get_sessions_by_category(api_get_user_id(), true, false, true);            
 		}
-		
+        
 		if (!empty($courses_tree)) {
-			foreach ($courses_tree as $cat => $sessions) {
+			foreach ($courses_tree as $cat => $sessions) {                
 				$courses_tree[$cat]['details'] = SessionManager::get_session_category($cat);
-				if ($cat == 0) {
-					$courses_tree[$cat]['courses'] = CourseManager::get_courses_list_by_user_id(api_get_user_id(), false);
+                //Get courses
+				if ($cat == 0) {                    
+					$courses_tree[$cat]['courses'] = CourseManager::get_courses_list_by_user_id(api_get_user_id(), false);                    
 				}
 				$courses_tree[$cat]['sessions'] = array_flip(array_flip($sessions));
+                //Get courses in sessions
 				if (count($courses_tree[$cat]['sessions']) > 0) {
 					foreach ($courses_tree[$cat]['sessions'] as $k => $s_id) {
 						$courses_tree[$cat]['sessions'][$k] = array('details' => SessionManager::fetch($s_id));
@@ -1074,116 +1023,26 @@ class IndexManager {
 				}
 			}
 		}
-        
                 
-        $html = '';
+        $html = '';		
 		
-		
-		if (isset($_GET['history']) && intval($_GET['history']) == 1) {
-			$html .= Display::tag('h2', get_lang('HistoryTrainingSession'));
-			//if (empty($courses_tree[0]['sessions'])){
+		if ($load_history) {
+			$html .= Display::tag('h2', get_lang('HistoryTrainingSession'));			
 			if (empty($courses_tree)) {
 				$html .=  get_lang('YouDoNotHaveAnySessionInItsHistory');
 			}
-		}        
-	
-		foreach ($personal_course_list as $my_course) {						
-			$thisCourseSysCode 		= $my_course['k'];
-			$thisCoursePublicCode 	= $my_course['c'];
-			$thisCoursePath 		= $my_course['d'];
-			//$sys_course_path 		= api_get_path(SYS_COURSE_PATH);
-			$dbname 				= $my_course['k'];
-			$status 				= array();
-			$status[$dbname] 		= $my_course['s'];
-		
-			$nbDigestEntries = 0; // Number of entries already collected.
-			if ($maxCourse < $maxValvas) {
-				$maxValvas = $maxCourse;
-			}
-			if ($maxCourse > 0) {
-				$courses[$thisCourseSysCode]['coursePath'] = $thisCoursePath;
-				$courses[$thisCourseSysCode]['courseCode'] = $thisCoursePublicCode;
-			}
-		
-			/*  Announcements */
-			
-            $course_id = $my_course['course_id'];
-            
-			$course_tool_table = Database::get_course_table(TABLE_TOOL_LIST);
-			$query = "SELECT visibility FROM $course_tool_table WHERE c_id = $course_id AND link = 'announcements/announcements.php' AND visibility = 1";
-			$result = Database::query($query);
-            
-			// Collect from announcements, but only if tool is visible for the course.
-			if ($result && $maxValvas > 0 && Database::num_rows($result) > 0) {
-				// Search announcements table.
-				// Take the entries listed at the top of advalvas/announcements tool.
-				$course_announcement_table = Database::get_course_table(TABLE_ANNOUNCEMENT);
-				$sqlGetLastAnnouncements = "SELECT end_date publicationDate, content
-		                                            FROM ".$course_announcement_table." WHERE c_id = $course_id ";
-				switch (CONFVAL_limitPreviewTo) {
-					case SCRIPTVAL_NewEntriesOfTheDay :
-						$sqlGetLastAnnouncements .= " AND DATE_FORMAT(end_date,'%Y %m %d') >= '".date('Y m d')."'";
-						break;
-					case SCRIPTVAL_NoTimeLimit :
-						break;
-					case SCRIPTVAL_NewEntriesOfTheDayOfLastLogin :
-						// take care mysql -> DATE_FORMAT(time,format) php -> date(format,date)
-						$sqlGetLastAnnouncements .= " AND  DATE_FORMAT(end_date,'%Y %m %d') >= '".date('Y m d', $_user['lastLogin'])."'";
-				}
-				$sqlGetLastAnnouncements .= "ORDER BY end_date DESC LIMIT ".$maxValvas;
-				$resGetLastAnnouncements = Database::query($sqlGetLastAnnouncements);
-				if ($resGetLastAnnouncements) {
-					while ($annoncement = Database::fetch_array($resGetLastAnnouncements)) {
-						$keyTools = 'valvas';
-						$keyTime = $annoncement['publicationDate'];
-						$keyCourse = $thisCourseSysCode;
-						$digest[$$orderKey[0]][$$orderKey[1]][$$orderKey[2]][] = @htmlspecialchars(api_substr(strip_tags($annoncement['content']), 0, CONFVAL_NB_CHAR_FROM_CONTENT), ENT_QUOTES, $charset);
-						$nbDigestEntries ++; // summary has same order as advalvas
-					}
-				}
-			}
-		
-			/* Agenda */		
-			$course_tool_table = Database :: get_course_table(TABLE_TOOL_LIST);
-			$query = "SELECT visibility FROM $course_tool_table WHERE c_id = $course_id AND link = 'calendar/agenda.php' AND visibility = 1";
-			$result = Database::query($query);
-			$thisAgenda = $maxCourse - $nbDigestEntries; // New max entries for agenda.
-			if ($maxAgenda < $thisAgenda) {
-				$thisAgenda = $maxAgenda;
-			}
-			// Collect from agenda, but only if tool is visible for the course.
-			if ($result && $thisAgenda > 0 && Database::num_rows($result) > 0) {
-				//$tableCal = $courseTablePrefix.$thisCourseDbName.$_configuration['db_glue'].'calendar_event';
-                $course_table_agenda = Database::get_course_table(TABLE_AGENDA);
-				$sqlGetNextAgendaEvent = "SELECT start_date, title content, start_time
-                                            FROM $course_table_agenda
-                                            WHERE c_id = $course_id AND start_date >= CURDATE()
-                                            ORDER BY start_date, start_time
-                                            LIMIT $maxAgenda";
-				$resGetNextAgendaEvent = Database::query($sqlGetNextAgendaEvent);
-				if ($resGetNextAgendaEvent) {
-					while ($agendaEvent = Database::fetch_array($resGetNextAgendaEvent)) {
-						$keyTools = 'agenda';
-						$keyTime = $agendaEvent['start_date'];
-						$keyCourse = $thisCourseSysCode;
-						$digest[$$orderKey[0]][$$orderKey[1]][$$orderKey[2]][] = @htmlspecialchars(api_substr(strip_tags($agendaEvent['content']), 0, CONFVAL_NB_CHAR_FROM_CONTENT), ENT_QUOTES, $charset);
-						$nbDigestEntries ++; // Summary has same order as advalvas.
-					}
-				}
-			}
-		} // End while mycourse...
-		
-
+		}	
 		
 		if (is_array($courses_tree)) {
-			foreach ($courses_tree as $key => $category) {
-				if ($key == 0) {
+            foreach ($courses_tree as $key => $category) {
+                if ($key == 0) {
 					// Sessions and courses that are not in a session category.
 					if (!isset($_GET['history'])) {
 						// If we're not in the history view...
 						$html .= CourseManager :: display_special_courses(api_get_user_id(), $this->load_directories_preview);
-						$html .= CourseManager :: display_courses(api_get_user_id(), $this->load_directories_preview);
+                        $html .= CourseManager :: display_courses(api_get_user_id(), $this->load_directories_preview);
 					}
+                    
 					// Independent sessions.
 					foreach ($category['sessions'] as $session) {
 		
@@ -1242,6 +1101,7 @@ class IndexManager {
 						}
 					}
 				} else {
+                    
 					// All sessions included in.
 					if (!empty($category['details'])) {
 						$count_courses_session = 0;

+ 9 - 58
user_portal.php

@@ -37,18 +37,18 @@ require_once api_get_path(LIBRARY_PATH).'userportal.lib.php';
 api_block_anonymous_users(); // Only users who are logged in can proceed.
 
 /* Constants and CONFIGURATION parameters */
-
-
-//$load_dirs = api_get_setting('courses_list_document_dynamic_dropdown');
-$load_dirs = true;
-// Get the courses list
-$personal_course_list 	= UserManager::get_personal_session_course_list(api_get_user_id());
+$load_dirs = api_get_setting('show_documents_preview');
 
 // Check if a user is enrolled only in one course for going directly to the course after the login.
 if (api_get_setting('go_to_course_after_login') == 'true') {
+    
+    // Get the courses list
+    $personal_course_list 	= UserManager::get_personal_session_course_list(api_get_user_id());
+    
     $my_session_list = array();
     $count_of_courses_no_sessions = 0;
     $count_of_courses_with_sessions = 0;
+    
     foreach($personal_course_list as $course) {       
         if (!empty($course['id_session'])) {
             $my_session_list[$course['id_session']] = true;
@@ -59,8 +59,6 @@ if (api_get_setting('go_to_course_after_login') == 'true') {
     }
     $count_of_sessions = count($my_session_list);    
 
-    //echo $count_of_sessions.' '.$count_of_courses_with_sessions.' '.$count_of_courses_no_sessions;
-    //!isset($_SESSION['coursesAlreadyVisited'])
     if ($count_of_sessions == 1 && $count_of_courses_no_sessions == 0) {
      
         $key              = array_keys($personal_course_list);
@@ -77,64 +75,17 @@ if (api_get_setting('go_to_course_after_login') == 'true') {
     if (!isset($_SESSION['coursesAlreadyVisited']) && $count_of_sessions == 0 && $count_of_courses_no_sessions == 1) {
         $key              = array_keys($personal_course_list);
         $course_info      = $personal_course_list[$key[0]];
-        $course_directory = $course_info['d'];
+        $course_directory = $course_info['course_info']['path'];
         $id_session       = isset($course_info['id_session']) ? $course_info['id_session'] : 0;
        
         $url = api_get_path(WEB_COURSE_PATH).$course_directory.'/?id_session='.$id_session;
         header('location:'.$url);            
         exit;
-    }
-   /*
-        if (api_get_setting('hide_courses_in_sessions') == 'true') {
-            //Check sessions
-            $session_list = array();
-            $only_session_id = 0;
-            foreach($personal_course_list as $course_item) {
-                $session_list[$course_item['id_session']] = $course_item;
-                $only_session_id = $course_item['id_session'];
-            }        
-            if (count($session_list) == 1 && !empty($only_session_id)) {            
-                header('Location:'.api_get_path(WEB_CODE_PATH).'session/?session_id='.$session_list[$only_session_id]['id_session']);    
-            }
-        }
-    */    
+    } 
 }
-/*
-$nosession = false;
-if (api_get_setting('use_session_mode') == 'true' && !$nosession) {
-    $display_actives = !isset($_GET['inactives']);
-}*/
-
 $nameTools = get_lang('MyCourses');
 $this_section = SECTION_COURSES;
 
-/* Check configuration parameters integrity */
-/*
-if (CONFVAL_showExtractInfo != SCRIPTVAL_UnderCourseList and $orderKey[0] != 'keyCourse') {
-    // CONFVAL_showExtractInfo must be SCRIPTVAL_UnderCourseList to accept $orderKey[0] != 'keyCourse'
-    if (DEBUG || api_is_platform_admin()){ // Show bug if admin. Else force a new order.
-        die('
-                    <strong>config error:'.__FILE__.'</strong><br />
-                    set
-                    <ul>
-                        <li>
-                            CONFVAL_showExtractInfo = SCRIPTVAL_UnderCourseList
-                            (actually : '.CONFVAL_showExtractInfo.')
-                        </li>
-                    </ul>
-                    or
-                    <ul>
-                        <li>
-                            $orderKey[0] != \'keyCourse\'
-                            (actually : '.$orderKey[0].')
-                        </li>
-                    </ul>');
-    } else {
-        $orderKey = array('keyCourse', 'keyTools', 'keyTime');
-    }
-}*/
-
-
 /*
     Header
     Include the HTTP, HTML headers plus the top banner.
@@ -202,7 +153,7 @@ $controller = new IndexManager(get_lang('MyCourses'));
 
 // Main courses and session list
 
-$courses_and_sessions = $controller->return_courses_and_sessions($personal_course_list);
+$courses_and_sessions = $controller->return_courses_and_sessions();
 $controller->tpl->assign('content', $courses_and_sessions);
 
 /*