HHRR role now have access to the courses/session only in a read-only mode see #4504 (requires testing) + a fix in the course notifications (next to the course title)

skala
Julio Montoya 14 years ago
parent 12d3eefa5a
commit 956a43c92b
  1. 57
      main/inc/lib/course.lib.php
  2. 4
      main/inc/lib/display.lib.php
  3. 2
      main/inc/lib/sessionmanager.lib.php
  4. 28
      main/inc/lib/usermanager.lib.php
  5. 46
      main/inc/lib/userportal.lib.php

@ -2099,7 +2099,7 @@ class CourseManager {
$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
WHERE cru.user_id='$user_id' $without_special_courses";
WHERE cru.user_id='$user_id' $without_special_courses";
$result = Database::query($sql);
@ -2769,13 +2769,13 @@ class CourseManager {
if (!empty($with_special_courses)) {
$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";
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";
$rs_special_course = Database::query($sql);
$number_of_courses = Database::num_rows($rs_special_course);
$number_of_courses = Database::num_rows($rs_special_course);
$key = 0;
$status_icon = '';
@ -2876,6 +2876,7 @@ class CourseManager {
}
return $html;
}
/**
* Display courses inside a category (without special courses) as HTML dics of
* class userportal-course-item.
@ -2899,17 +2900,17 @@ class CourseManager {
$without_special_courses = ' AND course.code NOT IN ("'.implode('","',$special_course_list).'")';
}
//AND course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
$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_id."'
AND course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
AND course_rel_user.user_course_cat='".$user_category_id."' $without_special_courses ";
WHERE course.code = course_rel_user.course_code AND url.course_code = course.code AND
course_rel_user.user_id = '".$user_id."' AND
course_rel_user.user_course_cat='".$user_category_id."' $without_special_courses ";
// If multiple URL access mode is enabled, only fetch courses
// corresponding to the current URL.
if (api_get_multiple_access_url() && $current_url_id != -1){
if (api_get_multiple_access_url() && $current_url_id != -1) {
$sql_select_courses .= " AND url.course_code=course.code AND access_url_id='".$current_url_id."'";
}
// Use user's classification for courses (if any).
@ -3050,8 +3051,7 @@ class CourseManager {
* @todo add a parameter user_id so that it is possible to show the courselist of other users (=generalisation). This will prevent having to write a new function for this.
*/
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();
global $nosession, $nbDigestEntries, $digest, $thisCourseSysCode, $orderKey;
$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']);
@ -3069,12 +3069,14 @@ class CourseManager {
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_category = Database :: get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$course_access_settings = CourseManager :: get_access_settings($course_info['code']);
$course_visibility = $course_access_settings['visibility'];
$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_info['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($course_info['code']);
if ($is_virtual_course) {
// If the current user is also subscribed in the real course to which this
@ -3094,7 +3096,7 @@ class CourseManager {
} else {
$course_display_title = $course_info['name'];
$course_display_code = $course_info['official_code'];
}
}*/
$is_coach = api_is_coach($course_info['id_session'], $course['code']);
@ -3104,6 +3106,7 @@ class CourseManager {
// Show a hyperlink to the course, unless the course is closed and user is not course admin.
$session_url = '';
$session_title = '';
if ($session_accessible) {
if ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER) {
if (api_get_setting('use_session_mode') == 'true' && !$nosession) {
@ -3112,17 +3115,17 @@ class CourseManager {
}
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_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>';
$session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/?id_session='.$course_info['id_session'].'">'.$course_info['name'].'</a>';
}
} else {
$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>';
$session_title = '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['path'].'/">'.$course_info['name'].'</a>';
}
} else {
$session_title = $course_display_title.' '.Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
$session_title = $course_info['name'].' '.Display::tag('span',get_lang('CourseClosed'), array('class'=>'item_closed'));
}
} else {
$session_title = $course_display_title;
$session_title = $course_info['name'];
}
if (!empty($session_url)) {
@ -3139,7 +3142,7 @@ class CourseManager {
}
if (api_get_setting('display_coursecode_in_courselist') == 'true') {
$session_title .= $course_display_code;
$session_title .= $course_info['official_code'];
}
if (api_get_setting('display_teacher_in_courselist') == 'true') {
@ -3154,23 +3157,23 @@ class CourseManager {
$course_coachs[] = api_get_person_name($coach_course['firstname'], $coach_course['lastname']);
}
}
if ($course_info['status'] == 1 || ($course_info['status'] == 5 && empty($course_info['id_session'])) || empty($course_info['status'])) {
if ($course_info['status'] == COURSEMANAGER || ($course_info['status'] == STUDENT && 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 (($course_info['status'] == STUDENT && !empty($course_info['id_session'])) || ($is_coach && $course_info['status'] != COURSEMANAGER)) {
if (is_array($course_coachs) && count($course_coachs)> 0 ) {
$params['coaches'] = implode(', ',$course_coachs);
}
}
} else {
$params['teachers'] = $teacher_list;
$params['teachers'] = $teacher_list;
}
}
$session_title .= isset($course['special_course']) ? ' '.Display::return_icon('klipper.png', get_lang('CourseAutoRegister')) : '';
// Display the "what's new" icons.
// Display the "what's new" icons
$session_title .= Display :: show_notification($course_info);
$params['title'] = $session_title;

@ -1131,9 +1131,11 @@ class Display {
$retvalue = '&nbsp;';
while (list($key, $notification) = each($notifications)) {
$lastDate = date('d/m/Y H:i', convert_sql_date($notification['lastedit_date']));
$type = $notification['lastedit_type'];
$type = $notification['lastedit_type'];
if (empty($course_info['id_session'])) {
$my_course['id_session'] = 0;
} else {
$my_course['id_session'] = $course_info['id_session'];
}
$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" />

@ -1268,7 +1268,7 @@ class SessionManager {
public static function get_session_category ($id) {
$id = intval($id);
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$sql = 'SELECT id, name, date_start, date_end FROM '.$tbl_session_category.' WHERE id="'.$id.'"';
$sql = "SELECT id, name, date_start, date_end FROM $tbl_session_category WHERE id= $id";
$result = Database::query($sql);
$num = Database::num_rows($result);
if ($num>0){

@ -1767,7 +1767,7 @@ class UserManager {
$sessions_sql = "SELECT DISTINCT id, session_category_id, session.name "
." FROM $tbl_session_user, $tbl_session "
." WHERE id_session=id AND id_user=$user_id "
." AND relation_type<>".SESSION_RELATION_TYPE_RRHH." $condition_date_end "
." $condition_date_end "
." ORDER BY session_category_id, date_start, date_end";
$result = Database::query($sessions_sql);
if (Database::num_rows($result) > 0) {
@ -1777,7 +1777,7 @@ class UserManager {
}
}
// get the list of sessions where the user is subscribed as coach in a
// get the list of sessions where the user is subscribed as coach in a
// course, from table session_rel_course_rel_user
$sessions_sql = "SELECT DISTINCT id, session_category_id, session.name "
@ -1809,6 +1809,7 @@ class UserManager {
$names[$row['id']] = $row['name'];
}
}
if ($sort_by_session_name) {
// reorder sessions alphabetically inside categories
if (!empty($categories)) {
@ -1824,7 +1825,7 @@ class UserManager {
}
}
}
}
}
return $categories;
}
@ -2019,24 +2020,24 @@ class UserManager {
$personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu $join_access_url
WHERE scu.id_user = $user_id AND scu.id_session = $session_id $where_access_url
ORDER BY code";
$course_list_sql_result = Database::query($personal_course_list_sql);
if (Database::num_rows($course_list_sql_result) > 0) {
while ($result_row = Database::fetch_array($course_list_sql_result)) {
while ($result_row = Database::fetch_array($course_list_sql_result)) {
$result_row['status'] = 5;
if (!in_array($result_row['code'], $courses)) {
$personal_course_list[] = $result_row;
$courses[] = $result_row['code'];
}
}
}
}
if (api_is_allowed_to_create_course()) {
$personal_course_list_sql = "SELECT DISTINCT scu.course_code as code FROM $tbl_session_course_user as scu, $tbl_session as s $join_access_url
WHERE s.id = $session_id AND scu.id_session = s.id AND ((scu.id_user=$user_id AND scu.status=2) OR s.id_coach = $user_id)
$where_access_url
ORDER BY code";
ORDER BY code";
$course_list_sql_result = Database::query($personal_course_list_sql);
if (Database::num_rows($course_list_sql_result)>0) {
@ -2049,6 +2050,19 @@ class UserManager {
}
}
}
if (api_is_drh()) {
$session_list = SessionManager::get_sessions_followed_by_drh($user_id);
$session_list = array_keys($session_list);
if (in_array($session_id, $session_list)) {
$course_list = SessionManager::get_course_list_by_session_id($session_id);
if (!empty($course_list)) {
foreach ($course_list as $course) {
$personal_course_list[] = $course;
}
}
}
}
return $personal_course_list;
}

@ -12,8 +12,7 @@ class IndexManager {
var $home = '';
var $default_home = 'home/';
function __construct($title, $load_template = true) {
function __construct($title, $load_template = true) {
if ($load_template) {
$this->tpl = new Template($title);
}
@ -968,12 +967,12 @@ class IndexManager {
$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]['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) {
foreach ($courses_tree[$cat]['sessions'] as $k => $s_id) {
$courses_tree[$cat]['sessions'][$k] = array('details' => SessionManager::fetch($s_id));
$courses_tree[$cat]['sessions'][$k]['courses'] = UserManager::get_courses_list_by_session(api_get_user_id(), $s_id);
}
@ -984,7 +983,7 @@ class IndexManager {
$html = '';
if ($load_history) {
$html .= Display::tag('h2', get_lang('HistoryTrainingSession'));
$html .= Display::page_subheader(get_lang('HistoryTrainingSession'));
if (empty($courses_tree)) {
$html .= get_lang('YouDoNotHaveAnySessionInItsHistory');
}
@ -994,13 +993,16 @@ class IndexManager {
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);
// If we're not in the history view...
if (!isset($_GET['history'])) { //
//Display special courses
$html .= CourseManager :: display_special_courses(api_get_user_id(), $this->load_directories_preview);
//Display courses
$html .= CourseManager :: display_courses(api_get_user_id(), $this->load_directories_preview);
}
// Independent sessions.
// Independent sessions
foreach ($category['sessions'] as $session) {
// Don't show empty sessions.
@ -1039,9 +1041,13 @@ class IndexManager {
$params = array();
$params['icon'] = Display::return_icon('window_list.png', null, array('id' => 'session_img_'.$session['details']['id']), ICON_SIZE_LARGE);
$s = Display :: get_session_title_box($session['details']['id']);
$extra_info = (!empty($s['coach']) ? $s['coach'].' | ' : '').$s['dates'];
$session_link = Display::tag('a',$s['title'], array('href'=>api_get_path(WEB_CODE_PATH).'session/?session_id='.$session['details']['id']));
$session_box = Display :: get_session_title_box($session['details']['id']);
$extra_info = (!empty($session_box['coach']) ? $session_box['coach'].' | ' : '').$session_box['dates'];
if (api_is_drh()) {
$session_link = $session_box['title'];
} else {
$session_link = Display::tag('a', $session_box['title'], array('href'=>api_get_path(WEB_CODE_PATH).'session/?session_id='.$session['details']['id']));
}
$params['title'] = $session_link.$extra_info;
@ -1062,7 +1068,7 @@ class IndexManager {
// All sessions included in.
if (!empty($category['details'])) {
$count_courses_session = 0;
$html_sessions = '';
$html_sessions = '';
foreach ($category['sessions'] as $session) {
// Don't show empty sessions.
if (count($session['courses']) < 1) {
@ -1073,6 +1079,7 @@ class IndexManager {
$session_now = time();
$html_courses_session = '';
$count = 0;
foreach ($session['courses'] as $course) {
$is_coach_course = api_is_coach($session['details']['id'], $course['code']);
if ($is_coach_course) {
@ -1090,13 +1097,18 @@ class IndexManager {
$params = array();
if ($count > 0) {
$s = Display :: get_session_title_box($session['details']['id']);
$session_box = Display :: get_session_title_box($session['details']['id']);
$params['icon'] = Display::return_icon('window_list.png', null, array('width' => '48px', 'align' => 'absmiddle', 'id' => 'session_img_'.$session['details']['id'])) . ' ';
$session_link = Display::tag('a',$s['title'], array('href'=>api_get_path(WEB_CODE_PATH).'session/?session_id='.$session['details']['id']));
if (api_is_drh()) {
$session_link = $session_box['title'];
} else {
$session_link = Display::tag('a',$session_box['title'], array('href'=>api_get_path(WEB_CODE_PATH).'session/?session_id='.$session['details']['id']));
}
$params['title'] .= $session_link;
$params['title'] .= '<span style="padding-left: 10px; font-size: 90%; font-weight: normal;">';
$params['title'] .= (!empty($s['coach']) ? $s['coach'].' | ' : '').$s['dates'];
$params['title'] .= (!empty($s['coach']) ? $session_box['coach'].' | ' : '').$session_box['dates'];
$params['title'] .= '</span>';
if (api_is_platform_admin()) {

Loading…
Cancel
Save