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. 33
      main/inc/lib/course.lib.php
  2. 2
      main/inc/lib/display.lib.php
  3. 2
      main/inc/lib/sessionmanager.lib.php
  4. 16
      main/inc/lib/usermanager.lib.php
  5. 32
      main/inc/lib/userportal.lib.php

@ -2876,6 +2876,7 @@ class CourseManager {
} }
return $html; return $html;
} }
/** /**
* Display courses inside a category (without special courses) as HTML dics of * Display courses inside a category (without special courses) as HTML dics of
* class userportal-course-item. * class userportal-course-item.
@ -2899,14 +2900,14 @@ class CourseManager {
$without_special_courses = ' AND course.code NOT IN ("'.implode('","',$special_course_list).'")'; $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, $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 course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
FROM $TABLECOURS course, FROM $TABLECOURS course,
$TABLECOURSUSER course_rel_user, ".$TABLE_ACCESS_URL_REL_COURSE." url $TABLECOURSUSER course_rel_user, ".$TABLE_ACCESS_URL_REL_COURSE." url
WHERE course.code = course_rel_user.course_code AND url.course_code = course.code WHERE course.code = course_rel_user.course_code AND url.course_code = course.code AND
AND course_rel_user.user_id = '".$user_id."' course_rel_user.user_id = '".$user_id."' AND
AND course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." course_rel_user.user_course_cat='".$user_category_id."' $without_special_courses ";
AND course_rel_user.user_course_cat='".$user_category_id."' $without_special_courses ";
// If multiple URL access mode is enabled, only fetch courses // If multiple URL access mode is enabled, only fetch courses
// corresponding to the current URL. // 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) {
@ -3051,7 +3052,6 @@ class CourseManager {
*/ */
function get_logged_user_course_html($course, $session_id = 0, $class = 'courses', $session_accessible = true, $load_dirs = false) { function get_logged_user_course_html($course, $session_id = 0, $class = 'courses', $session_accessible = true, $load_dirs = false) {
global $nosession, $nbDigestEntries, $digest, $thisCourseSysCode, $orderKey; global $nosession, $nbDigestEntries, $digest, $thisCourseSysCode, $orderKey;
$charset = api_get_system_encoding();
$user_id = api_get_user_id(); $user_id = api_get_user_id();
$course_info = api_get_course_info($course['code']); $course_info = api_get_course_info($course['code']);
$status_course = CourseManager::get_user_in_course_status($user_id, $course_info['code']); $status_course = CourseManager::get_user_in_course_status($user_id, $course_info['code']);
@ -3074,7 +3074,9 @@ class CourseManager {
$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. // Function logic - act on the data.
/*
$is_virtual_course = CourseManager :: is_virtual_course_from_system_code($course_info['code']); $is_virtual_course = CourseManager :: is_virtual_course_from_system_code($course_info['code']);
if ($is_virtual_course) { if ($is_virtual_course) {
// If the current user is also subscribed in the real course to which this // If the current user is also subscribed in the real course to which this
@ -3094,7 +3096,7 @@ class CourseManager {
} else { } else {
$course_display_title = $course_info['name']; $course_display_title = $course_info['name'];
$course_display_code = $course_info['official_code']; $course_display_code = $course_info['official_code'];
} }*/
$is_coach = api_is_coach($course_info['id_session'], $course['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. // Show a hyperlink to the course, unless the course is closed and user is not course admin.
$session_url = ''; $session_url = '';
$session_title = ''; $session_title = '';
if ($session_accessible) { if ($session_accessible) {
if ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER) { if ($course_visibility != COURSE_VISIBILITY_CLOSED || $user_in_course_status == COURSEMANAGER) {
if (api_get_setting('use_session_mode') == 'true' && !$nosession) { 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') { 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_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 { } else {
$session_url = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/'; $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 { } 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 { } else {
$session_title = $course_display_title; $session_title = $course_info['name'];
} }
if (!empty($session_url)) { if (!empty($session_url)) {
@ -3139,7 +3142,7 @@ class CourseManager {
} }
if (api_get_setting('display_coursecode_in_courselist') == 'true') { 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') { 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']); $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; $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 ) { if (is_array($course_coachs) && count($course_coachs)> 0 ) {
$params['coaches'] = implode(', ',$course_coachs); $params['coaches'] = implode(', ',$course_coachs);
} }
} }
} else { } else {
$params['teachers'] = $teacher_list; $params['teachers'] = $teacher_list;
} }
} }
$session_title .= isset($course['special_course']) ? ' '.Display::return_icon('klipper.png', get_lang('CourseAutoRegister')) : ''; $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); $session_title .= Display :: show_notification($course_info);
$params['title'] = $session_title; $params['title'] = $session_title;

@ -1134,6 +1134,8 @@ class Display {
$type = $notification['lastedit_type']; $type = $notification['lastedit_type'];
if (empty($course_info['id_session'])) { if (empty($course_info['id_session'])) {
$my_course['id_session'] = 0; $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'].'">'. $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" /> '<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) { public static function get_session_category ($id) {
$id = intval($id); $id = intval($id);
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY); $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); $result = Database::query($sql);
$num = Database::num_rows($result); $num = Database::num_rows($result);
if ($num>0){ if ($num>0){

@ -1767,7 +1767,7 @@ class UserManager {
$sessions_sql = "SELECT DISTINCT id, session_category_id, session.name " $sessions_sql = "SELECT DISTINCT id, session_category_id, session.name "
." FROM $tbl_session_user, $tbl_session " ." FROM $tbl_session_user, $tbl_session "
." WHERE id_session=id AND id_user=$user_id " ." 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"; ." ORDER BY session_category_id, date_start, date_end";
$result = Database::query($sessions_sql); $result = Database::query($sessions_sql);
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
@ -1809,6 +1809,7 @@ class UserManager {
$names[$row['id']] = $row['name']; $names[$row['id']] = $row['name'];
} }
} }
if ($sort_by_session_name) { if ($sort_by_session_name) {
// reorder sessions alphabetically inside categories // reorder sessions alphabetically inside categories
if (!empty($categories)) { if (!empty($categories)) {
@ -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; return $personal_course_list;
} }

@ -13,7 +13,6 @@ class IndexManager {
var $default_home = 'home/'; var $default_home = 'home/';
function __construct($title, $load_template = true) { function __construct($title, $load_template = true) {
if ($load_template) { if ($load_template) {
$this->tpl = new Template($title); $this->tpl = new Template($title);
} }
@ -984,7 +983,7 @@ class IndexManager {
$html = ''; $html = '';
if ($load_history) { if ($load_history) {
$html .= Display::tag('h2', get_lang('HistoryTrainingSession')); $html .= Display::page_subheader(get_lang('HistoryTrainingSession'));
if (empty($courses_tree)) { if (empty($courses_tree)) {
$html .= get_lang('YouDoNotHaveAnySessionInItsHistory'); $html .= get_lang('YouDoNotHaveAnySessionInItsHistory');
} }
@ -994,13 +993,16 @@ class IndexManager {
foreach ($courses_tree as $key => $category) { foreach ($courses_tree as $key => $category) {
if ($key == 0) { if ($key == 0) {
// Sessions and courses that are not in a session category. // Sessions and courses that are not in a session category.
if (!isset($_GET['history'])) {
// If we're not in the history view... // 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); $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); $html .= CourseManager :: display_courses(api_get_user_id(), $this->load_directories_preview);
} }
// Independent sessions. // Independent sessions
foreach ($category['sessions'] as $session) { foreach ($category['sessions'] as $session) {
// Don't show empty sessions. // Don't show empty sessions.
@ -1039,9 +1041,13 @@ class IndexManager {
$params = array(); $params = array();
$params['icon'] = Display::return_icon('window_list.png', null, array('id' => 'session_img_'.$session['details']['id']), ICON_SIZE_LARGE); $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']); $session_box = Display :: get_session_title_box($session['details']['id']);
$extra_info = (!empty($s['coach']) ? $s['coach'].' | ' : '').$s['dates']; $extra_info = (!empty($session_box['coach']) ? $session_box['coach'].' | ' : '').$session_box['dates'];
$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.$extra_info; $params['title'] = $session_link.$extra_info;
@ -1073,6 +1079,7 @@ class IndexManager {
$session_now = time(); $session_now = time();
$html_courses_session = ''; $html_courses_session = '';
$count = 0; $count = 0;
foreach ($session['courses'] as $course) { foreach ($session['courses'] as $course) {
$is_coach_course = api_is_coach($session['details']['id'], $course['code']); $is_coach_course = api_is_coach($session['details']['id'], $course['code']);
if ($is_coach_course) { if ($is_coach_course) {
@ -1090,13 +1097,18 @@ class IndexManager {
$params = array(); $params = array();
if ($count > 0) { 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'])) . ' '; $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'] .= $session_link;
$params['title'] .= '<span style="padding-left: 10px; font-size: 90%; font-weight: normal;">'; $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>'; $params['title'] .= '</span>';
if (api_is_platform_admin()) { if (api_is_platform_admin()) {

Loading…
Cancel
Save