Fixing session dates displays

skala
Julio Montoya 14 years ago
parent 9202d8cb62
commit 2b2cc3cbf7
  1. 4
      main/admin/resume_session.php
  2. 2
      main/admin/session_add.php
  3. 2
      main/inc/lib/course.lib.php
  4. 48
      main/inc/lib/sessionmanager.lib.php
  5. 107
      main/inc/lib/social.lib.php
  6. 14
      main/inc/lib/tracking.lib.php
  7. 24
      main/mySpace/index.php
  8. 25
      main/mySpace/myStudents.php
  9. 27
      main/mySpace/session.php
  10. 23
      main/session/index.php
  11. 18
      main/social/profile.php
  12. 7
      tests/main/inc/lib/tracking.lib.test.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']." <small>$dates</small>");
$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);

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

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

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

@ -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 .= '</h3>';
//$current_course_settings = CourseManager :: get_access_settings($my_course['k']);
// display the what's new icons
if ($nbDigestEntries > 0) {
reset($digest);
$result .= '<ul>';
while (list ($key2) = each($digest[$thisCourseSysCode])) {
$result .= '<li>';
if ($orderKey[1] == 'keyTools') {
$result .= "<a href=\"$toolsList[$key2] [\"path\"] $thisCourseSysCode \">";
$result .= "$toolsList[$key2][\"name\"]</a>";
} else {
$result .= api_convert_and_format_date($key2, DATE_FORMAT_LONG, date_default_timezone_get());
}
$result .= '</li>';
$result .= '<ul>';
reset($digest[$thisCourseSysCode][$key2]);
while (list ($key3, $dataFromCourse) = each($digest[$thisCourseSysCode][$key2])) {
$result .= '<li>';
if ($orderKey[2] == 'keyTools') {
$result .= "<a href=\"$toolsList[$key3] [\"path\"] $thisCourseSysCode \">";
$result .= "$toolsList[$key3][\"name\"]</a>";
} else {
$result .= api_convert_and_format_date($key3, DATE_FORMAT_LONG, date_default_timezone_get());
}
$result .= '<ul compact="compact">';
reset($digest[$thisCourseSysCode][$key2][$key3]);
while (list ($key4, $dataFromCourse) = each($digest[$thisCourseSysCode][$key2][$key3])) {
$result .= '<li>';
$result .= htmlspecialchars(substr(strip_tags($dataFromCourse), 0, CONFVAL_NB_CHAR_FROM_CONTENT));
$result .= '</li>';
}
$result .= '</ul>';
$result .= '</li>';
}
$result .= '</ul>';
$result .= '</li>';
}
$result .= '</ul>';
}
$result .= '</li>';
$result .= '</div>';
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 .= '</div>';
return $result;
}
/**

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

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

@ -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 ?' <small>'.$date_session.'</small>':'');
}
// Courses

@ -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 '<span style="float:right">';
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 '</span>';
echo '</span>';
}
echo '</div>';
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) {

@ -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.'<br />';
$dates = SessionManager::parse_session_dates($session_info);
echo Display::page_header($back_url.' '.$session_info['name']." <small>$dates<small>");
//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();

@ -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 .= '<div id="social_content'.$i.'" class="course_social_content" style="display:none" >s</div>';
$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 .= '</div>'; //social-content-training
$social_right_content .= SocialManager::social_wrapper_div($my_courses, 9);
}

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

Loading…
Cancel
Save