diff --git a/main/admin/resume_session.php b/main/admin/resume_session.php index 5e83b91e8a..fabe756b1b 100644 --- a/main/admin/resume_session.php +++ b/main/admin/resume_session.php @@ -61,8 +61,8 @@ if (!empty($_GET['warn'])) { if (!empty($message)) { echo $message; } - -echo Display::page_header(Display::return_icon('session.png', get_lang('Session')).' '.$session['name']); +$dates = SessionManager::parse_session_dates($session); +echo Display::page_header(Display::return_icon('session.png', get_lang('Session')).' '.$session['name']." $dates"); $url = Display::url(Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL), "session_add.php?page=resume_session.php&id=$id_session"); echo Display::page_subheader(get_lang('GeneralProperties').$url); diff --git a/main/admin/session_add.php b/main/admin/session_add.php index b8d06d1b9c..dc078b5f01 100644 --- a/main/admin/session_add.php +++ b/main/admin/session_add.php @@ -236,7 +236,7 @@ $form->addElement('text', 'display_end_date', array(get_lang('SessionDisplayEndD $form->addRule(array('display_start_date', 'display_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty'); $form->addElement('text', 'access_start_date', array(get_lang('SessionStartDate'), get_lang('SessionStartDateComment')), array('id' => 'access_start_date')); -$form->addElement('text', 'access_end_date', array(get_lang('SessionEndDate'), get_lang('SessionEndDate')), array('id' => 'access_end_date')); +$form->addElement('text', 'access_end_date', array(get_lang('SessionEndDate'), get_lang('SessionEndDateComment')), array('id' => 'access_end_date')); $form->addRule(array('access_start_date', 'access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty'); //Visibility diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 83d61c832c..0ef0545ec5 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -674,7 +674,7 @@ class CourseManager { //2. Include courses in sessions if ($include_courses_in_sessions) { - $sessions = Tracking::get_sessions_coached_by_user($user_id); + $sessions = SessionManager::get_sessions_coached_by_user($user_id); if (!empty($sessions)) { foreach($sessions as $session_item) { diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index dcbe3c35b9..2105b3bab8 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -1684,34 +1684,42 @@ class SessionManager { return $return_array; } + /** + * The general coach (field: session.id_coach) + * @param int user id + */ public static function get_sessions_by_general_coach($user_id) { $session_table = Database::get_main_table(TABLE_MAIN_SESSION); $user_id = intval($user_id); // session where we are general coach - $sql = 'SELECT DISTINCT id, name, date_start, date_end - FROM ' . $session_table . ' - WHERE id_coach=' . $user_id; + $sql = "SELECT DISTINCT id, name, access_start_date, access_end_date + FROM $session_table + WHERE id_coach = $user_id"; if (api_is_multiple_url_enabled()) { $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { - $sql = 'SELECT DISTINCT id, name, date_start, date_end + $sql = 'SELECT DISTINCT id, name, access_start_date, access_end_date FROM ' . $session_table . ' session INNER JOIN '.$tbl_session_rel_access_url.' session_rel_url ON (session.id = session_rel_url.session_id) - WHERE id_coach=' . $user_id.' AND access_url_id = '.$access_url_id; + WHERE id_coach = '.$user_id.' AND access_url_id = '.$access_url_id; } } $result = Database::query($sql); return Database::store_result($result, 'ASSOC'); } - function get_sessions_by_coach($user_id) { + /** + * Get all sessions if the user is a sesion course coach of any session + * @param int user id + */ + static function get_sessions_by_coach($user_id) { // table definition $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION); $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER); - $sql = 'SELECT DISTINCT session.id, session.name, session.date_start, session.date_end + $sql = 'SELECT DISTINCT session.id, session.name, access_start_date, access_end_date FROM ' . $tbl_session . ' as session INNER JOIN ' . $tbl_session_course_user . ' as session_course_user ON session.id = session_course_user.id_session @@ -1721,7 +1729,7 @@ class SessionManager { $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ - $sql = 'SELECT DISTINCT session.id, session.name, session.date_start, session.date_end + $sql = 'SELECT DISTINCT session.id, session.name, access_start_date, access_end_date FROM ' . $tbl_session . ' as session INNER JOIN ' . $tbl_session_course_user . ' as session_course_user ON session.id = session_course_user.id_session AND session_course_user.id_user = '.$user_id.' AND session_course_user.status=2 @@ -1733,6 +1741,16 @@ class SessionManager { $result = Database::query($sql); return Database::store_result($result, 'ASSOC'); } + + public static function get_sessions_coached_by_user($coach_id) { + $sessions = self::get_sessions_by_general_coach($coach_id); + $sessions_by_coach = self::get_sessions_by_coach($coach_id); + + if (!empty($sessions_by_coach)) { + $sessions = array_merge($sessions, $sessions_by_coach); + } + return $sessions; + } /* public static function get_coaches_by_session($session_id, $course_code) { @@ -2247,18 +2265,20 @@ class SessionManager { * @params array An array with all the session dates * @return string */ - static function parse_session_dates($session_info) { + static function parse_session_dates($session_info) { + //This will clean the variables if 0000-00-00 00:00:00 the variable will be empty $session_info['access_start_date'] = api_get_local_time($session_info['access_start_date'], null, null, true); - $session_info['access_end_date'] = api_get_local_time($session_info['access_start_date'], null, null, true); + $session_info['access_end_date'] = api_get_local_time($session_info['access_start_date'], null, null, true); if (!empty($session_info['access_start_date']) && !empty($session_info['access_end_date'])) { - $msg_date = get_lang('From').' '.$session_info['access_start_date'].' '.get_lang('To').' '.$session_info['access_end_date']; + //$msg_date = get_lang('From').' '.$session_info['access_start_date'].' '.get_lang('To').' '.$session_info['access_end_date']; + $msg_date = sprintf(get_lang('FromDateXToDateY'),$session_info['access_start_date'], $session_info['access_end_date']); } else { if (!empty($session_info['access_start_date'])) { $msg_date = get_lang('From').' '.$session_info['access_start_date']; - } - if (!empty($session_info['access_start_date'])) { - $msg_date = get_lang('From').' '.$session_info['access_start_date']; + } + if (!empty($session_info['access_end_date'])) { + $msg_date = get_lang('Until').' '.$session_info['access_end_date']; } } return $msg_date; diff --git a/main/inc/lib/social.lib.php b/main/inc/lib/social.lib.php index 1a6db91548..90fa5d4dda 100644 --- a/main/inc/lib/social.lib.php +++ b/main/inc/lib/social.lib.php @@ -385,19 +385,11 @@ class SocialManager extends UserManager { * Helper functions definition */ public static function get_logged_user_course_html($my_course, $count) { - global $nosession, $nbDigestEntries, $orderKey, $digest, $thisCourseSysCode; - if (!$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); - - $course_code = $my_course['code']; - $course_visual_code = $my_course['course_info']['official_code']; - $course_title = $my_course['course_info']['title']; + + $course_code = $my_course['code']; + $course_title = $my_course['course_info']['title']; $course_info = Database :: get_course_info($course_code); @@ -408,18 +400,6 @@ class SocialManager extends UserManager { $course_visibility = $course_access_settings['visibility']; $user_in_course_status = CourseManager :: get_user_in_course_status(api_get_user_id(), $course_code); - //function logic - act on the data - $is_virtual_course = CourseManager :: is_virtual_course_from_system_code($course_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_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 - } - } $s_htlm_status_icon = Display::return_icon('course.gif', get_lang('Course')); @@ -435,85 +415,10 @@ class SocialManager extends UserManager { $result .= $course_title." "." ".get_lang('CourseClosed').""; } $result .= ''; - //$current_course_settings = CourseManager :: get_access_settings($my_course['k']); - // display the what's new icons - if ($nbDigestEntries > 0) { - reset($digest); - $result .= ''; - } + $result .= ''; - $result .= ''; - - if (!$nosession) { - $session = ''; - $active = false; - if (!empty($my_course['session_name'])) { - - // Request for the name of the general coach - $sql = 'SELECT lastname, firstname - FROM '.$tbl_session.' ts LEFT JOIN '.$main_user_table .' tu - ON ts.id_coach = tu.user_id - WHERE ts.id='.(int) $my_course['id_session']. ' LIMIT 1'; - $rs = Database::query($sql); - $sessioncoach = Database::store_result($rs); - $sessioncoach = $sessioncoach[0]; - - $session = array(); - $session['title'] = $my_course['session_name']; - if ($my_course['date_start']=='0000-00-00') { - $session['dates'] = get_lang('WithoutTimeLimits'); - if ( api_get_setting('show_session_coach') === 'true' ) { - $session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']); - } - $active = true; - } else { - $session ['dates'] = ' - '.get_lang('From').' '.$my_course['date_start'].' '.get_lang('To').' '.$my_course['date_end']; - if ( api_get_setting('show_session_coach') === 'true' ) { - $session['coach'] = get_lang('GeneralCoach').': '.api_get_person_name($sessioncoach['firstname'], $sessioncoach['lastname']); - } - $active = ($date_start <= $now && $date_end >= $now)?true:false; - } - } - $my_course['id_session'] = isset($my_course['id_session']) ? $my_course['id_session'] : 0; - $output = array ($my_course['user_course_cat'], $result, $my_course['id_session'], $session, 'active'=>$active); - } else { - $output = array ($my_course['user_course_cat'], $result); - } - //$my_course['creation_date']; - return $output; + $result .= ''; + return $result; } /** diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 485bf2b839..8fc0b9b162 100644 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -1302,19 +1302,11 @@ class Tracking { /** * Get sessions coached by user - * @param int Coach id + * @param int Coach id * @return array Sessions list */ public static function get_sessions_coached_by_user($coach_id) { - - $sessions = SessionManager::get_sessions_by_general_coach($coach_id); - $sessions_by_coach = SessionManager::get_sessions_by_coach($coach_id); - - if (!empty($sessions_by_coach)) { - $sessions = array_merge($sessions, $sessions_by_coach); - } - - return $sessions; + // session where we are coach of a course /* @@ -2078,7 +2070,7 @@ class Tracking { * @param int user id * @return string html code */ - function show_user_progress($user_id, $session_id = 0, $extra_params = '', $show_courses = true) { + static function show_user_progress($user_id, $session_id = 0, $extra_params = '', $show_courses = true) { global $_configuration; $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE); $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION); diff --git a/main/mySpace/index.php b/main/mySpace/index.php index 39d209f86e..82a23c03ae 100644 --- a/main/mySpace/index.php +++ b/main/mySpace/index.php @@ -185,8 +185,8 @@ if (empty($session_id)) { $students = CourseManager::get_user_list_from_courses_as_coach($user_id); // Sessions for the coach - $sessions = Tracking::get_sessions_coached_by_user($user_id); - + $sessions = SessionManager::get_sessions_coached_by_user($user_id); + //If is drh if ($is_drh) { $students = array_keys(UserManager::get_users_followed_by_drh($user_id, STUDENT)); @@ -442,28 +442,16 @@ if ((api_is_allowed_to_create_course() || api_is_drh()) && in_array($view, array $table->set_header(4, get_lang('Details'), false); $all_data = array(); + foreach ($sessions as $session) { $count_courses_in_session = count(Tracking::get_courses_followed_by_coach($user_id, $session['id'])); $count_users_in_session = count(SessionManager::get_users_by_session($session['id'], 0)); $row = array(); $row[] = $session['name']; - - $session_date = array(); - if (!empty($session['date_start']) && $session['date_start'] != '0000-00-00') { - $session_date[] = get_lang('From').' '.api_format_date($session['date_start'], DATE_FORMAT_SHORT); - } - - if (!empty($session['date_end']) && $session['date_end'] != '0000-00-00') { - $session_date[] = get_lang('Until').' '.api_format_date($session['date_end'], DATE_FORMAT_SHORT); - } - if (empty($session_date)) { - $session_date_string = '-'; - } else { - $session_date_string = implode(' ', $session_date); - } - - $row[] = $session_date_string; + $session_date_label = SessionManager::parse_session_dates($session); + + $row[] = $session_date_label; $row[] = $count_courses_in_session; $row[] = $count_users_in_session; diff --git a/main/mySpace/myStudents.php b/main/mySpace/myStudents.php index 8ec19af163..c0a8b009d5 100644 --- a/main/mySpace/myStudents.php +++ b/main/mySpace/myStudents.php @@ -168,6 +168,7 @@ if (isset($_GET['user_id']) && $_GET['user_id'] != "") { } $session_id = intval($_GET['id_session']); + if (empty($session_id)) { $session_id = api_get_session_id(); } @@ -212,7 +213,7 @@ if (api_is_drh()) { $courses = CourseManager::get_course_list_of_user_as_course_admin(api_get_user_id()); $courses_in_session_by_coach = array(); -$sessions_coached_by_user = Tracking::get_sessions_coached_by_user(api_get_user_id()); +$sessions_coached_by_user = SessionManager::get_sessions_coached_by_user(api_get_user_id()); //RRHH or session admin if (api_is_session_admin() || api_is_drh()) { @@ -544,7 +545,7 @@ if (!empty($student_id)) { $table_title = ''; if (!empty($session_id)) { - $session_name = api_get_session_name($session_id); + $session_name = api_get_session_name($session_id); $table_title = ($session_name? Display::return_icon('session.png', get_lang('Session'), array(), ICON_SIZE_SMALL).' '.$session_name.' ':''); } if (!empty($info_course['title'])) { @@ -571,26 +572,14 @@ if (empty($_GET['details'])) { foreach ($courses_in_session as $key => $courses) { $session_id = $key; - $session_info = api_get_session_info($session_id); - $session_name = $session_info['name']; - $date_start = ''; - - if (!empty($session_info['date_start']) && $session_info['date_start'] != '0000-00-00') { - $date_start = api_format_date($session_info['date_start'], DATE_FORMAT_SHORT); - } - - $date_end = ''; - if (!empty($session_info['date_end']) && $session_info['date_end'] != '0000-00-00') { - $date_end = api_format_date($session_info['date_end'], DATE_FORMAT_SHORT); - } - if (!empty($date_start) && !empty($date_end)) { - $date_session = get_lang('From') . ' ' . $date_start . ' ' . get_lang('Until') . ' ' . $date_end; - } + $session_info = api_get_session_info($session_id); + $session_name = $session_info['name']; + $date_session = SessionManager::parse_session_dates($session_info); $title = ''; if (empty($session_id)) { $title = Display::return_icon('course.png', get_lang('Courses'), array(), ICON_SIZE_SMALL).' '.get_lang('Courses'); } else { - $title = Display::return_icon('session.png', get_lang('Session'), array(), ICON_SIZE_SMALL).' '.$session_name.($date_session?' ('.$date_session.')':''); + $title = Display::return_icon('session.png', get_lang('Session'), array(), ICON_SIZE_SMALL).' '.$session_name.($date_session ?' '.$date_session.'':''); } // Courses diff --git a/main/mySpace/session.php b/main/mySpace/session.php index ecf5551980..dfbad5a313 100644 --- a/main/mySpace/session.php +++ b/main/mySpace/session.php @@ -59,12 +59,17 @@ function rsort_sessions($a, $b) { if (isset($_GET['id_coach']) && $_GET['id_coach'] != '') { $id_coach = intval($_GET['id_coach']); } else { - $id_coach = $_user['user_id']; + $id_coach = api_get_user_id(); } if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) { - - $a_sessions = SessionManager::get_sessions_followed_by_drh($_user['user_id']); + + $a_sessions = SessionManager :: get_sessions_coached_by_user(api_get_user_id()); + $a_sessions_drh = SessionManager::get_sessions_followed_by_drh(api_get_user_id()); + + if (!empty($a_sessions_drh)) { + $a_sessions = array_merge($a_sessions, $a_sessions_drh); + } if (!api_is_session_admin()) { $menu_items[] = Display::url(Display::return_icon('stats.png', get_lang('MyStats'),'',ICON_SIZE_MEDIUM),api_get_path(WEB_CODE_PATH)."auth/my_progress.php" ); @@ -81,12 +86,12 @@ if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) { echo $item; } } + if (count($a_sessions) > 0) { echo ''; echo Display::url(Display::return_icon('printer.png', get_lang('Print'), array(), 32), 'javascript: void(0);', array('onclick'=>'javascript: window.print();')); echo Display::url(Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), array(), 32), api_get_self().'?export=csv'); - echo ''; - + echo ''; } echo ''; echo Display::page_header(get_lang('YourSessionsList')); @@ -95,7 +100,7 @@ if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) { /*if (api_is_platform_admin()) { $a_sessions = SessionManager::get_sessions_list(); } else {*/ - $a_sessions = Tracking :: get_sessions_coached_by_user($id_coach); + $a_sessions = SessionManager :: get_sessions_coached_by_user($id_coach); //} } @@ -114,16 +119,10 @@ if ($nb_sessions > 0) { $table->set_header(3, get_lang('Details'), false); $all_data = array(); - foreach ($a_sessions as $session) { + foreach ($a_sessions as $session) { $row = array(); $row[] = $session['name']; - - if ($session['date_start'] != '0000-00-00' && $session['date_end'] != '0000-00-00') { - $row[] = get_lang('From').' '. api_convert_and_format_date($session['date_start'], DATE_FORMAT_SHORT, date_default_timezone_get()).' '.get_lang('To').' '.api_convert_and_format_date($session['date_end'], DATE_FORMAT_SHORT, date_default_timezone_get()); - } else { - $row[] = ' - '; - } - + $row[] = SessionManager::parse_session_dates($session); $row[] = count(Tracking::get_courses_list_from_session($session['id'])); if ($export_csv) { diff --git a/main/session/index.php b/main/session/index.php index 5b0a55ebe3..365340652f 100644 --- a/main/session/index.php +++ b/main/session/index.php @@ -272,25 +272,8 @@ if (!empty($course_id)) { //$back_url = Display::url(Display::return_icon('back.png',get_lang('back.png')), api_get_path(WEB_CODE_PATH).'session/?session_id='.$session_id); } -$start = $end = $start_only = $end_only =''; - -if (!empty($session_info['date_start']) && $session_info['date_start'] != '0000-00-00') { - $start = api_convert_and_format_date($session_info['date_start'], DATE_FORMAT_SHORT); - $start_only = get_lang('From').' '.$session_info['date_start']; -} -if (!empty($session_info['date_start']) && $session_info['date_end'] != '0000-00-00') { - $end = api_convert_and_format_date($session_info['date_end'], DATE_FORMAT_SHORT); - $end_only = get_lang('Until').' '.$session_info['date_end']; -} - -if (!empty($start) && !empty($end)) { - $dates = Display::tag('i', sprintf(get_lang('FromDateXToDateY'),$start, $end)); -} else { - $dates = Display::tag('i', $start_only.' '.$end_only); -} - -echo Display::tag('h1', $back_url.' '.$session_info['name']); -echo $dates.'
'; +$dates = SessionManager::parse_session_dates($session_info); +echo Display::page_header($back_url.' '.$session_info['name']." $dates"); //All Learnpaths grid settings (First tab, first subtab) @@ -451,4 +434,4 @@ $courses_tab = Display::grid_html('courses'); //Main headers data echo Display::tabs($headers, array($courses_tab, $lp_tabs, Display::grid_html('exercises'), $my_reporting)); -Display::display_footer(); +Display::display_footer(); \ No newline at end of file diff --git a/main/social/profile.php b/main/social/profile.php index f3feb4bee0..0b76fc67ad 100644 --- a/main/social/profile.php +++ b/main/social/profile.php @@ -311,11 +311,10 @@ $personal_course_list = UserManager::get_personal_session_course_list($my_user_i $course_list_code = array(); $i=1; - if (is_array($personal_course_list)) { foreach ($personal_course_list as $my_course) { if ($i<=10) { - $list[] = SocialManager::get_logged_user_course_html($my_course, $i); + $list[$my_course['code']] = SocialManager::get_logged_user_course_html($my_course, $i); $course_list_code[] = array('code'=> $my_course['code']); } else { break; @@ -586,22 +585,13 @@ if ($show_full_profile) { //Courses without sessions $i=1; - foreach ($list as $key=>$value) { - if ( empty($value[2]) ) { //if out of any session - $my_courses .= $value[1]; + foreach ($list as $value) { + if (!empty($value)) { //if out of any session + $my_courses .= $value; $my_courses .= ''; $i++; } } - /* - $listActives = $listInactives = array(); - foreach ( $list as $key=>$value ) { - if ( $value['active'] ) { //if the session is still active (as told by get_logged_user_course_html()) - $listActives[] = $value; - } elseif ( !empty($value[2]) ) { //if there is a session but it is not active - $listInactives[] = $value; - } - }*/ $my_courses .= ''; //social-content-training $social_right_content .= SocialManager::social_wrapper_div($my_courses, 9); } diff --git a/tests/main/inc/lib/tracking.lib.test.php b/tests/main/inc/lib/tracking.lib.test.php index e4b5e851d8..8fd4c0bd1d 100755 --- a/tests/main/inc/lib/tracking.lib.test.php +++ b/tests/main/inc/lib/tracking.lib.test.php @@ -220,13 +220,6 @@ class TestTracking extends UnitTestCase { //var_dump($res); } - function testget_sessions_coached_by_user() { - $coach_id=''; - $res=Tracking::get_sessions_coached_by_user($coach_id); - if(!is_null($res))$this->assertTrue(is_array($res)); - //var_dump($res); - } - function testget_student_followed_by_coach() { $coach_id=''; $res=Tracking::get_student_followed_by_coach($coach_id);