Cleaning the course list

skala
Julio Montoya 13 years ago
parent 02fd92c964
commit 5e77766709
  1. 3
      main/admin/course_edit.php
  2. 28
      main/admin/course_user_list.php
  3. 76
      main/admin/user_list.php
  4. 14
      main/inc/ajax/course.ajax.php
  5. 313
      main/inc/lib/course.lib.php
  6. 37
      main/inc/lib/display.lib.php
  7. 3
      main/inc/lib/main_api.lib.php
  8. 79
      main/inc/lib/usermanager.lib.php
  9. 168
      main/inc/lib/userportal.lib.php
  10. 65
      user_portal.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');

@ -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>

@ -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 {

@ -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 '';

@ -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);
$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 ($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 {
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 .= ' - ';
$course_title .= $course_info['visual_code'];
}
if (api_get_setting('display_teacher_in_courselist') == 'true') {
$course_title .= $course['tutor'];
$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,13 +2849,12 @@ 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();
// 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'];
@ -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
@ -2907,7 +2901,6 @@ 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);
$key = 0;
$status_icon = '';
@ -2915,14 +2908,12 @@ class CourseManager {
// 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'];
$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_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);
$course_title = $course_info['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'];
$teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['code']);
}
// Show notifications.
$course_title .= $show_notification;
$params['icon'] = $status_icon;
$params['title'] = $course_title;
$params['teachers'] = $teachers;
$params['notifications'] = $show_notification;
$html .= self::course_item_html($params);
$key++;
}
@ -3054,7 +3044,6 @@ class CourseManager {
* $my_course['i'] - course title
* $my_course['c'] - visual course code
* $my_course['k'] - system course code
* $my_course['db'] - course database
*
* @param array Course details
* @param integer Session ID
@ -3072,73 +3061,51 @@ 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();
$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']);
$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']);
$course_info['status'] = empty($session_id) ? $status_course : STUDENT;
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;
}
$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 ($course_info['status'] == 1 || ($course_info['status'] == 5 && empty($course_info['id_session'])) || empty($course_info['status'])) {
$params['teachers'] = $teacher_list;
}
if (($s_course_status == 5 && !empty($my_course['id_session'])) || ($is_coach && $s_course_status != 1)) {
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 ) {
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);
$params['coaches'] = implode(', ',$course_coachs);
}
}
} else {
$session_title .= $course_teacher;
}
$params['teachers'] = $teacher_list;
if(!empty($course_teacher_email)) {
$session_title .= ' ('.$course_teacher_email.')';
}
}
$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;

@ -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) {
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_code = Database::escape_string($my_course['k']);
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$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($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;
}

@ -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;
}

@ -1750,12 +1750,11 @@ class UserManager {
// 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_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();
}
@ -1819,7 +1818,6 @@ class UserManager {
foreach ($categories as $cat_id => $category) {
// inside each category, prepare a new empty array to sort sessions
$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;
}
@ -1847,7 +1844,6 @@ class UserManager {
$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_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;
}
/**
@ -2005,7 +1997,6 @@ 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_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$user_id = intval($user_id);

@ -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) {
// 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.
function return_courses_and_sessions() {
$courses_tree = array();
$load_history = (isset($_GET['history']) && intval($_GET['history']) == 1) ? true : false;
/* DISPLAY COURSES */
// Compose a structured array of session categories, sessions and courses
// for the current user.
if (isset($_GET['history']) && intval($_GET['history']) == 1) {
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 {
//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) {
$courses_tree[$cat]['details'] = SessionManager::get_session_category($cat);
//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));
@ -1075,115 +1024,25 @@ class IndexManager {
}
}
$html = '';
if (isset($_GET['history']) && intval($_GET['history']) == 1) {
if ($load_history) {
$html .= Display::tag('h2', get_lang('HistoryTrainingSession'));
//if (empty($courses_tree[0]['sessions'])){
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;

@ -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);
/*

Loading…
Cancel
Save