Using session course order instead of the name see BT#8316

1.9.x
Julio Montoya 11 years ago
parent 92f44dcc43
commit a5ef11848a
  1. 14
      main/auth/my_progress.php
  2. 35
      main/inc/lib/course.lib.php
  3. 38
      main/inc/lib/events.lib.inc.php
  4. 18
      main/inc/lib/sessionmanager.lib.php
  5. 119
      main/inc/lib/tracking.lib.php
  6. 5
      main/inc/lib/usermanager.lib.php
  7. 33
      main/mySpace/course.php
  8. 7
      main/session/index.php

@ -22,7 +22,6 @@ $nameTools = get_lang('MyProgress');
api_block_anonymous_users();
$htmlHeadXtra[] = api_get_js('jquery.timelinr-0.9.5.js');
$htmlHeadXtra[] = '
<script language="javascript">
$(function() {
@ -48,7 +47,6 @@ $(function() {
require_once api_get_path(SYS_CODE_PATH).'mySpace/myspace.lib.php';
$user_id = api_get_user_id();
$course_user_list = CourseManager::get_courses_list_by_user_id($user_id);
$dates = $issues = '';
@ -74,13 +72,17 @@ if (!empty($course_user_list)) {
<div class="row">
<div class="span2"><div class="thumbnail">'.$course_image.'</div>
</div>
<div class="span3">'.sprintf(get_lang('YouHaveEnteredTheCourseXInY'), $result['course_code'], api_convert_and_format_date($login, DATE_FORMAT_LONG)).'</div>
<div class="span3">'.sprintf(
get_lang('YouHaveEnteredTheCourseXInY'),
$result['course_code'],
api_convert_and_format_date($login, DATE_FORMAT_LONG)
).'</div>
</li>';
$count++;
}
}
$content .= Tracking::show_user_progress(api_get_user_id());
$content .= Tracking::show_user_progress(api_get_user_id(), $_GET['session_id']);
$content .= Tracking::show_course_detail(api_get_user_id(), $_GET['course'], $_GET['session_id']);
if (!empty($dates)) {
@ -88,13 +90,11 @@ if (!empty($dates)) {
$content .= '<br /><br />';
}
$content .= '<div class="row"><div class="span12">'.Display::page_subheader(get_lang('Timeline')).'</div>';
$content .= '<div id="my_timeline">
<div class="actions">
<a href="#" id="prev"></a> <!-- optional -->
<a href="#" id="next"></a> <!-- optional -->
</div>
<ul id="dates">
'.$dates.'
</ul>
@ -112,4 +112,4 @@ $tpl = new Template($tool_name);
$tpl->assign('message', $message);
$tpl->assign('content', $content);
$tpl->display_one_col_template();
$tpl->display_one_col_template();

@ -1299,6 +1299,11 @@ class CourseManager
$filter_by_status = intval($filter_by_status);
$filter_by_status_condition = " session_course_user.status = $filter_by_status AND ";
}
if (SessionManager::orderCourseIsEnabled()) {
//$order_by = "ORDER BY position";
}
} else {
if ($return_count) {
$sql = " SELECT COUNT(*) as count";
@ -1373,7 +1378,6 @@ class CourseManager
}
$sql .= ' '.$order_by.' '.$limit;
$rs = Database::query($sql);
$users = array();
@ -3092,13 +3096,14 @@ class CourseManager
$column = null,
$direction = null,
$getCount = false,
$keyword = null
$keyword = null,
$sessionId = null
) {
// Database Table Definitions
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sessionId = intval($sessionId);
$user_id = intval($user_id);
$select = "SELECT DISTINCT *, id as real_id ";
@ -3129,14 +3134,38 @@ class CourseManager
$keywordCondition = " AND (c.code LIKE '%$keyword%' OR c.title LIKE '%$keyword%' ) ";
}
$orderBy = null;
$extraInnerJoin = null;
if (!empty($sessionId)) {
if (!empty($sessionId)) {
$courseList = SessionManager::get_course_list_by_session_id(
$sessionId
);
if (!empty($courseList)) {
$courseListToString = implode("','", array_keys($courseList));
$whereConditions .= " AND c.id IN ('".$courseListToString."')";
}
}
if (SessionManager::orderCourseIsEnabled() && !empty($sessionId)) {
$tableSessionRelCourse = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$orderBy = ' ORDER BY position';
$extraInnerJoin = " INNER JOIN $tableSessionRelCourse src
ON (c.code = src.course_code AND id_session = $sessionId) ";
}
}
$whereConditions .= $keywordCondition;
$sql = "$select
FROM $tbl_course c
INNER JOIN $tbl_course_rel_user cru ON (cru.course_code = c.code)
INNER JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code)
$extraInnerJoin
WHERE
access_url_id = ".api_get_current_access_url_id()."
$whereConditions
$orderBy
";
if (isset($from) && isset($limit)) {
$from = intval($from);

@ -1070,12 +1070,18 @@ function get_all_exercise_results_by_user($user_id, $course_code, $session_id =
$table_track_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$table_track_attempt = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$course_code = Database::escape_string($course_code);
$exercise_id = intval($exercise_id);
//$exercise_id = intval($exercise_id);
$session_id = intval($session_id);
$user_id = intval($user_id);
$sql = "SELECT * FROM $table_track_exercises
WHERE status = '' AND exe_user_id = $user_id AND exe_cours_id = '$course_code' AND session_id = $session_id AND orig_lp_id = 0 AND orig_lp_item_id = 0
WHERE
status = '' AND
exe_user_id = $user_id AND
exe_cours_id = '$course_code' AND
session_id = $session_id AND
orig_lp_id = 0 AND
orig_lp_item_id = 0
ORDER by exe_id";
$res = Database::query($sql);
@ -1249,11 +1255,14 @@ function get_best_exercise_results_by_user($exercise_id, $course_code, $session_
//Getting the best results of every student
$best_score_return = array();
foreach($list as $student_result) {
foreach ($list as $student_result) {
$user_id = $student_result['exe_user_id'];
$current_best_score[$user_id] = $student_result['exe_result'];
//echo $current_best_score[$user_id].' - '.$best_score_return[$user_id]['exe_result'].'<br />';
if ($current_best_score[$user_id] > $best_score_return[$user_id]['exe_result']) {
if (isset($current_best_score[$user_id]) &&
isset($best_score_return[$user_id]['exe_result']) &&
$current_best_score[$user_id] > $best_score_return[$user_id]['exe_result']
) {
$best_score_return[$user_id] = $student_result;
}
}
@ -1270,14 +1279,15 @@ function get_best_attempt_exercise_results_per_user($user_id, $exercise_id, $cou
$user_id = intval($user_id);
$sql = "SELECT * FROM $table_track_exercises
WHERE status = '' AND
exe_cours_id = '$course_code' AND
exe_exo_id = '$exercise_id' AND
session_id = $session_id AND
exe_user_id = $user_id AND
orig_lp_id =0 AND
orig_lp_item_id = 0
ORDER BY exe_id";
WHERE
status = '' AND
exe_cours_id = '$course_code' AND
exe_exo_id = '$exercise_id' AND
session_id = $session_id AND
exe_user_id = $user_id AND
orig_lp_id =0 AND
orig_lp_item_id = 0
ORDER BY exe_id";
$res = Database::query($sql);
$list = array();
@ -1288,15 +1298,17 @@ function get_best_attempt_exercise_results_per_user($user_id, $exercise_id, $cou
$best_score_return = array();
$best_score_return['exe_result'] = 0;
foreach($list as $result) {
foreach ($list as $result) {
$current_best_score = $result;
if ($current_best_score['exe_result'] > $best_score_return['exe_result']) {
$best_score_return = $result;
}
}
if (!isset($best_score_return['exe_weighting'])) {
$best_score_return = array();
}
return $best_score_return;
}

@ -187,7 +187,8 @@ class SessionManager
WHERE id = $session_id";
Database::query($sql);
}
$sql = "UPDATE $tbl_session SET duration = $duration
$sql = "UPDATE $tbl_session
SET duration = '$duration'
WHERE id = $session_id";
Database::query($sql);
}
@ -2673,7 +2674,7 @@ class SessionManager
* @param string $course_name
* @return array list of courses
*/
public static function get_course_list_by_session_id($session_id, $course_name = '', $orderBy = 'title')
public static function get_course_list_by_session_id($session_id, $course_name = '', $orderBy = null)
{
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
@ -2690,9 +2691,17 @@ class SessionManager
$sql .= " AND c.title LIKE '%$course_name%' ";
}
$orderBy = Database::escape_string($orderBy);
if (!empty($orderBy)) {
$orderBy = "ORDER BY $orderBy";
} else {
if (SessionManager::orderCourseIsEnabled()) {
$orderBy .= " ORDER BY position ";
} else {
$orderBy .= " ORDER BY title ";
}
}
$sql .= "ORDER BY $orderBy";
$sql .= Database::escape_string($orderBy);
$result = Database::query($sql);
$num_rows = Database::num_rows($result);
@ -2905,6 +2914,7 @@ class SessionManager
}
$result = Database::query($sql);
$return_array = array();
while ($row = Database::fetch_array($result, 'ASSOC')) {
$return_array[] = $row;
}

@ -2812,10 +2812,15 @@ class Tracking
/**
* Shows the user progress (when clicking in the Progress tab)
* @param int user id
* @return string html code
*
* @param int $user_id
* @param int $session_id
* @param string $extra_params
* @param bool $show_courses
*
* @return string
*/
static function show_user_progress($user_id, $session_id = 0, $extra_params = '', $show_courses = true)
public static function show_user_progress($user_id, $session_id = 0, $extra_params = '', $show_courses = true, $showAllSessions = true)
{
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
@ -2825,26 +2830,24 @@ class Tracking
$tbl_access_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$user_id = intval($user_id);
// get course list
if (api_is_multiple_url_enabled()) {
$sql = 'SELECT cu.course_code as code, title
FROM '.$tbl_course_user.' cu INNER JOIN '.$tbl_access_rel_course.' a
ON(a.course_code = cu.course_code)
INNER JOIN '.$tbl_course.' c ON( cu.course_code = c.code)
$sql = "SELECT cu.course_code as code, title
FROM $tbl_course_user cu INNER JOIN $tbl_access_rel_course a
ON (a.course_code = cu.course_code)
INNER JOIN $tbl_course c ON (cu.course_code = c.code)
WHERE
user_id='.$user_id.' AND
relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND
access_url_id = '.api_get_current_access_url_id().'
ORDER BY title ';
user_id = $user_id AND
relation_type<> ".COURSE_RELATION_TYPE_RRHH." AND
access_url_id = ".api_get_current_access_url_id()."
ORDER BY title";
} else {
$sql = 'SELECT course_code as code, title
FROM '.$tbl_course_user.' u
INNER JOIN '.$tbl_course.' c ON(course_code = c.code)
$sql = "SELECT course_code as code, title
FROM $tbl_course_user u
INNER JOIN $tbl_course c ON (course_code = c.code)
WHERE
u.user_id='.$user_id.' AND
relation_type<>'.COURSE_RELATION_TYPE_RRHH.'
ORDER BY title ';
u.user_id= $user_id AND
relation_type<>".COURSE_RELATION_TYPE_RRHH."
ORDER BY title";
}
$rs = Database::query($sql);
@ -2853,40 +2856,56 @@ class Tracking
$courses[$row['code']] = $row['title'];
}
$orderBy = " ORDER BY name ";
$extraInnerJoin = null;
if (SessionManager::orderCourseIsEnabled() && !empty($session_id)) {
$orderBy = " ORDER BY s.id, position ";
$tableSessionRelCourse = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$extraInnerJoin = " INNER JOIN $tableSessionRelCourse src ON (cu.course_code = src.course_code AND src.id_session = $session_id) ";
}
// Get the list of sessions where the user is subscribed as student
if (api_is_multiple_url_enabled()) {
$sql = 'SELECT DISTINCT cu.course_code, id_session as session_id, name
FROM '.$tbl_session_course_user.' cu
INNER JOIN '.$tbl_access_rel_session.' a
ON(a.session_id = cu.id_session)
INNER JOIN '.$tbl_session.' s ON(s.id = a.session_id)
$sql = "SELECT DISTINCT cu.course_code, s.id as session_id, name
FROM $tbl_session_course_user cu
INNER JOIN $tbl_access_rel_session a
ON (a.session_id = cu.id_session)
INNER JOIN $tbl_session s ON (s.id = a.session_id)
$extraInnerJoin
WHERE
id_user='.$user_id.' AND
access_url_id = '.api_get_current_access_url_id().'
ORDER BY name ';
id_user = $user_id AND
access_url_id = ".api_get_current_access_url_id()."
$orderBy ";
} else {
$sql = 'SELECT DISTINCT course_code, id_session as session_id, name
FROM '.$tbl_session_course_user.' u
INNER JOIN '.$tbl_session.' s ON(s.id = u.id_session)
WHERE id_user='.$user_id.'
ORDER BY name ';
$sql = "SELECT DISTINCT cu.course_code, s.id as session_id, name
FROM $tbl_session_course_user cu
INNER JOIN $tbl_session s ON (s.id = cu.id_session)
$extraInnerJoin
WHERE id_user = $user_id
$orderBy ";
}
$rs = Database::query($sql);
$simple_session_array = array();
while ($row = Database :: fetch_array($rs)) {
$course_info = CourseManager::get_course_information($row['course_code']);
$temp_course_in_session[$row['session_id']]['course_list'][$course_info['id']] = $course_info;
$temp_course_in_session[$row['session_id']]['course_list'][$course_info['id']] = $course_info;
$temp_course_in_session[$row['session_id']]['name'] = $row['name'];
$simple_session_array[$row['session_id']] = $row['name'];
}
foreach($simple_session_array as $my_session_id => $session_name) {
foreach ($simple_session_array as $my_session_id => $session_name) {
$course_list = $temp_course_in_session[$my_session_id]['course_list'];
$my_course_data = array();
foreach ($course_list as $course_data) {
$my_course_data[$course_data['id']] = $course_data['title'];
}
$my_course_data = utf8_sort($my_course_data);
if (!SessionManager::orderCourseIsEnabled() && empty($session_id)) {
$my_course_data = utf8_sort($my_course_data);
}
$final_course_data = array();
foreach($my_course_data as $course_id => $value) {
@ -3002,7 +3021,6 @@ class Tracking
foreach ($course_list as $course_data) {
$exercise_list = get_all_exercises($course_data, $my_session_id);
foreach ($exercise_list as $exercise_data) {
$exercise_obj = new Exercise($course_data['id']);
$exercise_obj->read($exercise_data['id']);
@ -3010,8 +3028,15 @@ class Tracking
//$visible_return = $exercise_obj->is_visible();
if ($exercise_data['results_disabled'] == 0 || $exercise_data['results_disabled'] == 2) {
//if ($visible_return['value'] == true) {
$best_average = intval(get_best_average_score_by_exercise($exercise_data['id'], $course_data['code'], $my_session_id, $user_count));
$best_average = intval(
get_best_average_score_by_exercise(
$exercise_data['id'],
$course_data['code'],
$my_session_id,
$user_count
)
);
$exercise_graph_list[] = $best_average;
$all_exercise_graph_list[] = $best_average;
@ -3057,7 +3082,6 @@ class Tracking
$label_time = '';
if (!empty($time)) {
$label_time = date('d-m-y', $time);
//$label_time = api_format_date($time, DATE_FORMAT_NUMBER);
}
$final_all_exercise_graph_name_list[] = $all_exercise_graph_name_list[$key].' '.$label_time;
$my_results_final[] = $my_results[$key];
@ -3085,9 +3109,11 @@ class Tracking
$course_list = $session_data['course_list'];
$session_name = $session_data['name'];
if (isset($session_id) && !empty($session_id)) {
if ($session_id != $my_session_id) {
continue;
if ($showAllSessions == false) {
if (isset($session_id) && !empty($session_id)) {
if ($session_id != $my_session_id) {
continue;
}
}
}
@ -3226,8 +3252,9 @@ class Tracking
$total_time_login = Tracking :: get_time_spent_on_the_course($user_id, $course_code, $session_id_from_get);
$time = api_time_to_hms($total_time_login);
$percentage_score = Tracking :: get_avg_student_score($user_id, $course_code, array(), $session_id_from_get);
$courseCodeFromGet = isset($_GET['course']) ? $_GET['course'] : null;
if ($course_code == $_GET['course'] && $_GET['session_id'] == $session_id_from_get) {
if ($course_code == $courseCodeFromGet && $_GET['session_id'] == $session_id_from_get) {
$html .= '<tr class="row_odd" style="background-color:#FBF09D" >';
} else {
$html .= '<tr class="row_even">';
@ -3261,7 +3288,7 @@ class Tracking
$html .= Display::tag('td', $percentage_score, array('align'=>'center'));
$html .= Display::tag('td', $last_connection, array('align'=>'center'));
if ($course_code == $_GET['course'] && $_GET['session_id'] == $session_id_from_get) {
if ($course_code == $courseCodeFromGet && $_GET['session_id'] == $session_id_from_get) {
$details = '<a href="#">';
$details .=Display::return_icon('2rightarrow_na.gif', get_lang('Details'));
} else {
@ -3542,8 +3569,8 @@ class Tracking
$graph->drawTitle(50, 30, get_lang('ExercisesInTimeProgressChart'), 50,50,50,$main_width-110, true);
// $main_graph = new pChart($main_width,$main_height);
$graph_id = 'generate_session_exercise_graph'.Security::remove_XSS($_GET['course']).'-'.intval($_GET['session_id']).'-'.api_get_user_id();
$courseCode = isset($_GET['course']) ? Security::remove_XSS($_GET['course']) : null;
$graph_id = 'generate_session_exercise_graph'.$courseCode.'-'.intval($_GET['session_id']).'-'.api_get_user_id();
if ($cache->IsInCache($graph_id, $data_set->GetData())) {
//if (0) {
//if we already created the img

@ -2481,6 +2481,11 @@ class UserManager
$sessionListFromCourseCoach = array();
$sql =" SELECT DISTINCT id_session FROM $tbl_session_course_user
WHERE id_user = $user_id AND status = 2 ";
if (SessionManager::orderCourseIsEnabled()) {
$sql .= "ORDER BY position";
}
$result = Database::query($sql);
if (Database::num_rows($result)) {
$result = Database::store_result($result);

@ -86,12 +86,26 @@ if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) {
$a_courses = array_keys($courses);
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" );
$menu_items[] = Display::url(Display::return_icon('user.png', get_lang('Students'), array(), ICON_SIZE_MEDIUM), "index.php?view=drh_students&amp;display=yourstudents");
$menu_items[] = Display::url(Display::return_icon('teacher.png', get_lang('Trainers'), array(), ICON_SIZE_MEDIUM), 'teachers.php');
$menu_items[] = Display::url(Display::return_icon('course_na.png', get_lang('Courses'), array(), ICON_SIZE_MEDIUM), '#');
$menu_items[] = Display::url(Display::return_icon('session.png', get_lang('Sessions'), array(), ICON_SIZE_MEDIUM), 'session.php');
$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"
);
$menu_items[] = Display::url(
Display::return_icon('user.png', get_lang('Students'), array(), ICON_SIZE_MEDIUM),
"index.php?view=drh_students&amp;display=yourstudents"
);
$menu_items[] = Display::url(
Display::return_icon('teacher.png', get_lang('Trainers'), array(), ICON_SIZE_MEDIUM),
'teachers.php'
);
$menu_items[] = Display::url(
Display::return_icon('course_na.png', get_lang('Courses'), array(), ICON_SIZE_MEDIUM),
'#'
);
$menu_items[] = Display::url(
Display::return_icon('session.png', get_lang('Sessions'), array(), ICON_SIZE_MEDIUM),
'session.php'
);
if (api_can_login_as($user_id)) {
$link = '<a href="'.api_get_path(WEB_CODE_PATH).'admin/user_list.php?action=login_as&amp;user_id='.$user_id.'&amp;sec_token='.Security::get_existing_token().'">'.
Display::return_icon('login_as.png', get_lang('LoginAs'), null, ICON_SIZE_MEDIUM).'</a>&nbsp;&nbsp;';
@ -170,7 +184,8 @@ function get_count_courses()
null,
null,
true,
$keyword
$keyword,
$sessionId
);
}
@ -182,7 +197,6 @@ function get_courses($from, $limit, $column, $direction)
$userId = api_get_user_id();
$sessionId = isset($_GET['session_id']) ? intval($_GET['session_id']) : 0;
$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : null;
$drhLoaded = false;
if (api_is_drh()) {
if (api_drh_can_access_all_session_content()) {
@ -209,7 +223,8 @@ function get_courses($from, $limit, $column, $direction)
$column,
$direction,
false,
$keyword
$keyword,
$sessionId
);
}

@ -46,7 +46,6 @@ $course_list = SessionManager::get_course_list_by_session_id($session_id);
// Getting all sessions where I'm subscribed
$new_session_list = UserManager::get_personal_session_course_list(api_get_user_id());
$user_course_list = array();
foreach ($new_session_list as $session_item) {
$user_course_list[] = $session_item['code'];
@ -516,9 +515,11 @@ $(function() {
</script>
<?php
$my_reporting = Tracking::show_user_progress(api_get_user_id(), $session_id, '#tabs-4', false);
$courseCode = isset($_GET['course']) ? $_GET['course'] : null;
$my_reporting = Tracking::show_user_progress(api_get_user_id(), $session_id, '#tabs-4', false, false);
if (!empty($my_reporting)) {
$my_reporting .= '<br />'.Tracking::show_course_detail(api_get_user_id(), $_GET['course'], $session_id);
$my_reporting .= '<br />'.Tracking::show_course_detail(api_get_user_id(), $courseCode, $session_id);
}
if (empty($my_reporting)) {
$my_reporting = Display::return_message(get_lang('NoDataAvailable'), 'warning');

Loading…
Cancel
Save