Simplifying reportings see BT#7297

1.9.x
Julio Montoya 12 years ago
parent b9f86abf74
commit 0d621c382a
  1. 2
      main/inc/ajax/model.ajax.php
  2. 12
      main/inc/lib/course.lib.php
  3. 35
      main/inc/lib/tracking.lib.php
  4. 29
      main/mySpace/course.php
  5. 41
      main/mySpace/index.php
  6. 97
      main/mySpace/session.php

@ -590,7 +590,7 @@ switch ($action) {
} else {
$session_date_string = implode(' ', $session_date);
}
$sessionUrl = api_get_path(WEB_CODE_PATH).'mySpace/index.php?session_id='.$session['id'];
$sessionUrl = api_get_path(WEB_CODE_PATH).'mySpace/course.php?session_id='.$session['id'];
$result[] = array(
'name' => $session['name'],
'date' => $session_date_string,

@ -733,15 +733,15 @@ class CourseManager
* @return array Course list
*
**/
public static function get_course_list_as_coach($user_id, $include_courses_in_sessions = false) {
public static function get_course_list_as_coach($user_id, $include_courses_in_sessions = false)
{
// 1. Getting courses as teacher (No session)
$courses_temp = CourseManager::get_course_list_of_user_as_course_admin($user_id);
$courses_as_admin = array();
$courseList = array();
if (!empty($courses_temp)) {
foreach ($courses_temp as $course_item) {
$courses_as_admin[0][$course_item['course_code']] = $course_item['course_code'];
$courseList[0][$course_item['course_code']] = $course_item['course_code'];
}
}
@ -754,13 +754,13 @@ class CourseManager
$courses = Tracking :: get_courses_followed_by_coach($user_id, $session_item['id']);
if (is_array($courses)) {
foreach($courses as $course_item) {
$courses_as_admin[$session_item['id']][$course_item] = $course_item;
$courseList[$session_item['id']][$course_item] = $course_item;
}
}
}
}
}
return $courses_as_admin;
return $courseList;
}
/**

@ -1233,37 +1233,46 @@ class Tracking
* @param int Session id (optional)
* @return array Courses list
*/
public static function get_courses_followed_by_coach($coach_id, $id_session = '') {
public static function get_courses_followed_by_coach($coach_id, $id_session = null)
{
$coach_id = intval($coach_id);
if (!empty ($id_session))
if (!empty($id_session)) {
$id_session = intval($id_session);
}
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
// At first, courses where $coach_id is coach of the course
// At first, courses where $coach_id is coach of the course.
$sql = 'SELECT DISTINCT course_code FROM ' . $tbl_session_course_user . ' WHERE id_user=' . $coach_id.' AND status=2';
global $_configuration;
$sql = 'SELECT DISTINCT course_code
FROM ' . $tbl_session_course_user . '
WHERE id_user = ' . $coach_id.' AND status = 2';
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql = 'SELECT DISTINCT scu.course_code FROM ' . $tbl_session_course_user . ' scu INNER JOIN '.$tbl_course_rel_access_url.' cru
$sql = 'SELECT DISTINCT scu.course_code
FROM ' . $tbl_session_course_user . ' scu
INNER JOIN '.$tbl_course_rel_access_url.' cru
ON (scu.course_code = cru.course_code)
WHERE scu.id_user=' . $coach_id.' AND scu.status=2 AND cru.access_url_id = '.$access_url_id;
WHERE
scu.id_user=' . $coach_id.' AND
scu.status=2 AND
cru.access_url_id = '.$access_url_id;
}
}
if (!empty ($id_session))
if (!empty($id_session)) {
$sql .= ' AND id_session=' . $id_session;
}
$courseList = array();
$result = Database::query($sql);
while ($row = Database::fetch_array($result)) {
$a_courses[$row['course_code']] = $row['course_code'];
$courseList[$row['course_code']] = $row['course_code'];
}
// Then, courses where $coach_id is coach of the session
@ -1303,10 +1312,10 @@ class Tracking
$result = Database::query($sql);
while ($row = Database::fetch_array($result)) {
$a_courses[$row['course_code']] = $row['course_code'];
$courseList[$row['course_code']] = $row['course_code'];
}
return $a_courses;
return $courseList;
}
/**

@ -39,7 +39,8 @@ if (isset($_GET["user_id"]) && $_GET["user_id"] != "" && !isset($_GET["type"]))
$interbreadcrumb[] = array("url" => "teachers.php", "name" => get_lang('Teachers'));
}
function count_courses() {
function count_courses()
{
global $nb_courses;
return $nb_courses;
}
@ -49,7 +50,9 @@ $show_import_icon = false;
if (api_get_setting('add_users_by_coach') == 'true') {
if (!api_is_platform_admin()) {
$sql = 'SELECT id_coach FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_session;
$sql = 'SELECT id_coach
FROM '.Database::get_main_table(TABLE_MAIN_SESSION).'
WHERE id='.$id_session;
$rs = Database::query($sql);
if (Database::result($rs, 0, 0) != $_user['user_id']) {
api_not_allowed(true);
@ -112,7 +115,11 @@ if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) {
}
if (count($a_courses) > 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('printer.png', get_lang('Print'), array(), 32),
'javascript: void(0);',
array('onclick'=>'javascript: window.print();')
);
echo '</span>';
}
@ -155,9 +162,7 @@ if (empty($id_session) && api_is_drh() && !api_is_platform_admin()) {
}
$nb_courses = count($a_courses);
$table = new SortableTable('tracking_list_course', 'count_courses', null, 1, 50);
$table->set_header(0, get_lang('CourseTitle'), false);
$table->set_header(1, get_lang('NbStudents'), false);
$table->set_header(2, get_lang('TimeSpentInTheCourse').Display :: return_icon('info3.gif', get_lang('TimeOfActiveByTraining'), array('align' => 'absmiddle', 'hspace' => '3px')), false);
@ -187,9 +192,18 @@ if (is_array($a_courses)) {
// students directly subscribed to the course
if (empty($id_session)) {
$sql = "SELECT user_id FROM $tbl_user_course as course_rel_user WHERE course_rel_user.status='5' AND course_rel_user.course_code='$course_code'";
$sql = "SELECT user_id
FROM $tbl_user_course as course_rel_user
WHERE
course_rel_user.status='5' AND
course_rel_user.course_code = '$course_code'";
} else {
$sql = "SELECT id_user as user_id FROM $tbl_session_course_user srcu WHERE srcu. course_code='$course_code' AND id_session = '$id_session' AND srcu.status<>2";
$sql = "SELECT id_user as user_id
FROM $tbl_session_course_user srcu
WHERE
srcu. course_code='$course_code' AND
id_session = '$id_session' AND
srcu.status<>2";
}
$rs = Database::query($sql);
@ -212,7 +226,6 @@ if (is_array($a_courses)) {
if (is_numeric($avg_score_in_course)) {
$avg_score_in_course = round($avg_score_in_course / $nb_students_in_course, 2).'%';
}
} else {
$avg_time_spent_in_course = null;
$avg_progress_in_course = null;

@ -210,6 +210,7 @@ if (empty($session_id)) {
// Getting courses followed by a coach (No session courses).
$courses = CourseManager::get_course_list_as_coach($user_id, false);
// Courses with no session:
if (isset($courses[0])) {
$courses = $courses[0];
}
@ -325,7 +326,7 @@ if (empty($session_id)) {
// average posts
$nb_posts = $nb_posts / $nb_students;
echo Display::page_subheader('<img src="'.api_get_path(WEB_IMG_PATH).'teachers.gif">&nbsp;'.get_lang('Overview'));
echo Display::page_subheader(get_lang('Overview'));
echo '<div class="report_section">
<table class="table table-bordered">
@ -344,7 +345,7 @@ if (empty($session_id)) {
</table>';
echo '</div>';
echo Display::page_subheader(Display::return_icon('students.gif').'&nbsp;'.get_lang('Students').' ('.$nb_students.')');
echo Display::page_subheader(get_lang('Students').' ('.$nb_students.')');
if ($export_csv) {
//csv part
@ -359,11 +360,10 @@ if (empty($session_id)) {
$csv_content[] = array();
} else {
$countActiveUsers = SessionManager::getCountUserTracking(null, 1);
$countInactiveUsers = SessionManager::getCountUserTracking(null, 0);
$lastConnectionDate = api_get_utc_datetime(strtotime('15 days ago'));
$countActiveUsers = SessionManager::getCountUserTracking(null, 1);
$countInactiveUsers = SessionManager::getCountUserTracking(null, 0);
$countSleepingTeachers = SessionManager::getTeacherTracking(api_get_user_id(), 1, $lastConnectionDate, true);
$countSleepingStudents =SessionManager::getCountUserTracking(null, 1, $lastConnectionDate);
@ -393,7 +393,6 @@ if (empty($session_id)) {
<td>'.Display::url(get_lang('SleepingStudents'), api_get_path(WEB_CODE_PATH).'mySpace/student.php?sleeping_days=15').'</td>
<td align="right">'.$countSleepingStudents.'</td>
</tr>
<tr>
<td>'.get_lang('AverageCoursePerStudent').'</td>
<td align="right">'.(is_null($avg_courses_per_student) ? '' : $avg_courses_per_student).'</td>
@ -466,7 +465,7 @@ if (empty($session_id)) {
// Sessions for the user
$count_sessions = count($sessions);
}
/*
if ($count_courses || $count_sessions) {
//If we are in course
if (empty($session_id)) {
@ -751,32 +750,6 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
return returnValue;
}
</script>';
/*//profile filter
$profileFilter = new FormValidator('answer_filter', 'get', '', '', array('class'=> 'form-horizontal'), false);
$options = array(
STUDENT => get_lang('Student'),
COURSEMANAGER => get_lang('CourseManager'),
DRH => get_lang('Drh'),
);
$profileFilter->addElement('select', 'profile', get_lang('Profile'),$options, array('id' => 'profile'));
$courseListUrl = api_get_self();
echo '<div class="">';
echo $profileFilter->return_form();
echo '</div>';
echo '<script>
$(function() {
$("#profile").on("change", function() {
var sessionId = $("#session_name").val();
var courseId = $("#course_name").val();
var studentId = $("#student_name").val();
var profileId = $("#profile").val();
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&student_id="+studentId+"&profile_id="+profileId;
});
});
</script>';*/
}
if (in_array($display, array('surveyoverview'))) {
@ -1116,7 +1089,7 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
}
$table->display();
}
}
}*/
// Send the csv file if asked
if ($export_csv) {

@ -5,21 +5,19 @@
* @package chamilo.reporting
*/
ob_start();
$nameTools= 'Sessions';
// name of the language file that needs to be included
$language_file = array('registration', 'index', 'trad4all', 'tracking', 'admin');
$cidReset = true;
require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
api_block_anonymous_users();
$this_section = SECTION_TRACKING;
api_block_anonymous_users();
$htmlHeadXtra[] = api_get_jqgrid_js();
$interbreadcrumb[] = array ("url" => "index.php", "name" => get_lang('MySpace'));
Display :: display_header($nameTools);
Display::display_header(get_lang('Sessions'));
$export_csv = false;
@ -119,73 +117,38 @@ if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) {
$a_sessions = Tracking :: get_sessions_coached_by_user($id_coach);
}
$nb_sessions = count($a_sessions);
if ($export_csv) {
$csv_content = array();
}
if ($nb_sessions > 0) {
$table = new SortableTable('tracking', 'count_sessions_coached');
$table->set_header(0, get_lang('Title'));
$table->set_header(1, get_lang('Date'));
$table->set_header(2, get_lang('NbCoursesPerSession'));
$table->set_header(3, get_lang('Details'), false);
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions_tracking';
$all_data = array();
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[] = count(Tracking::get_courses_list_from_session($session['id']));
if ($export_csv) {
$csv_content[] = $row;
}
if (isset($_GET['id_coach']) && $_GET['id_coach'] != '') {
$row[] = '<a href="student.php?id_session='.$session['id'].'&id_coach='.intval($_GET['id_coach']).'">
<img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a>';
} else {
$row[] = '<a href="course.php?id_session='.$session['id'].'">
<img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a>';
}
$all_data[] = $row;
}
if (!isset($tracking_column)) {
$tracking_column = 0;
}
//The order is important you need to check the the $column variable in the model.ajax.php file
$columns = array(
get_lang('Title'),
get_lang('Date'),
get_lang('NbCoursesPerSession'),
get_lang('NbStudentPerSession'),
get_lang('Details')
);
if ($_GET['tracking_direction'] == 'DESC') {
usort($all_data, 'rsort_sessions');
} else {
usort($all_data, 'sort_sessions');
}
// Column config
$columnModel = array(
array('name'=>'name', 'index'=>'name', 'width'=>'255', 'align'=>'left'),
array('name'=>'date', 'index'=>'date', 'width'=>'150', 'align'=>'left','sortable'=>'false'),
array('name'=>'course_per_session', 'index'=>'course_per_session', 'width'=>'150','sortable'=>'false'),
array('name'=>'student_per_session', 'index'=>'student_per_session', 'width'=>'100','sortable'=>'false'),
array('name'=>'details', 'index'=>'details', 'width'=>'100','sortable'=>'false'),
);
if ($export_csv) {
usort($csv_content, 'sort_sessions');
}
$extraParams = array(
'autowidth' => 'true',
'height' => 'auto'
);
foreach ($all_data as $row) {
$table->addRow($row);
}
$js = '<script>
$(function() {
'.Display::grid_js('session_tracking', $url, $columns, $columnModel, $extraParams, array(), null, true).'
});
</script>';
$table -> display();
echo $js;
echo Display::grid_html('session_tracking');
if ($export_csv) {
ob_end_clean();
Export :: export_table_csv($csv_content, 'reporting_student_list');
exit;
}
} else {
echo get_lang('NoSession');
}
Display::display_footer();

Loading…
Cancel
Save