diff --git a/main/forum/reply.php b/main/forum/reply.php
index 40c0341ab5..473cfde914 100755
--- a/main/forum/reply.php
+++ b/main/forum/reply.php
@@ -67,7 +67,11 @@ if (!$_user['user_id'] AND $current_forum['allow_anonymous'] == 0) {
}
if ($current_forum['forum_of_group'] != 0) {
- $show_forum = GroupManager::user_has_access(api_get_user_id(), $current_forum['forum_of_group'], GroupManager::GROUP_TOOL_FORUM);
+ $show_forum = GroupManager::user_has_access(
+ api_get_user_id(),
+ $current_forum['forum_of_group'],
+ GroupManager::GROUP_TOOL_FORUM
+ );
if (!$show_forum) {
api_not_allowed();
}
@@ -90,25 +94,52 @@ if (!empty($gradebook) && $gradebook == 'view') {
if ($origin == 'group') {
$_clean['toolgroup'] = (int)$_SESSION['toolgroup'];
$group_properties = GroupManager :: get_group_properties($_clean['toolgroup']);
- $interbreadcrumb[] = array('url' => '../group/group.php', 'name' => get_lang('Groups'));
- $interbreadcrumb[] = array('url' => '../group/group_space.php?gidReq='.$_SESSION['toolgroup'], 'name' => get_lang('GroupSpace').' '.$group_properties['name']);
- $interbreadcrumb[] = array('url' => 'viewforum.php?origin='.$origin.'&forum='.Security::remove_XSS($_GET['forum']), 'name' => $current_forum['forum_title']);
- $interbreadcrumb[] = array('url' => 'viewthread.php?origin='.$origin.'&gradebook='.$gradebook.'&forum='.Security::remove_XSS($_GET['forum']).'&thread='.Security::remove_XSS($_GET['thread']), 'name' => $current_thread['thread_title']);
- $interbreadcrumb[] = array('url' => 'javascript: void(0);', 'name' => get_lang('Reply'));
+ $interbreadcrumb[] = array(
+ 'url' => '../group/group.php?'.api_get_cidreq(),
+ 'name' => get_lang('Groups'),
+ );
+ $interbreadcrumb[] = array(
+ 'url' => '../group/group_space.php?'.api_get_cidreq(),
+ 'name' => get_lang('GroupSpace').' '.$group_properties['name'],
+ );
+ $interbreadcrumb[] = array(
+ 'url' => 'viewforum.php?origin='.$origin.'&forum='.intval($_GET['forum']).'&'.api_get_cidreq(),
+ 'name' => $current_forum['forum_title'],
+ );
+ $interbreadcrumb[] = array(
+ 'url' => 'viewthread.php?origin='.$origin.'&gradebook='.$gradebook.'&forum='.intval($_GET['forum']).'&thread='.intval($_GET['thread']).'&'.api_get_cidreq(),
+ 'name' => $current_thread['thread_title'],
+ );
+ $interbreadcrumb[] = array(
+ 'url' => 'javascript: void(0);',
+ 'name' => get_lang('Reply'),
+ );
} else {
- $interbreadcrumb[] = array('url' => 'index.php?gradebook='.$gradebook, 'name' => $nameTools);
- $interbreadcrumb[] = array('url' => 'viewforumcategory.php?forumcategory='.$current_forum_category['cat_id'], 'name' => $current_forum_category['cat_title']);
- $interbreadcrumb[] = array('url' => 'viewforum.php?origin='.$origin.'&forum='.Security::remove_XSS($_GET['forum']), 'name' => $current_forum['forum_title']);
- $interbreadcrumb[] = array('url' => 'viewthread.php?origin='.$origin.'&gradebook='.$gradebook.'&forum='.Security::remove_XSS($_GET['forum']).'&thread='.Security::remove_XSS($_GET['thread']), 'name' => $current_thread['thread_title']);
+ $interbreadcrumb[] = array(
+ 'url' => 'index.php?gradebook='.$gradebook,
+ 'name' => $nameTools,
+ );
+ $interbreadcrumb[] = array(
+ 'url' => 'viewforumcategory.php?forumcategory='.$current_forum_category['cat_id'].'&'.api_get_cidreq(),
+ 'name' => $current_forum_category['cat_title'],
+ );
+ $interbreadcrumb[] = array(
+ 'url' => 'viewforum.php?origin='.$origin.'&forum='.intval($_GET['forum']).'&'.api_get_cidreq(),
+ 'name' => $current_forum['forum_title'],
+ );
+ $interbreadcrumb[] = array(
+ 'url' => 'viewthread.php?origin='.$origin.'&gradebook='.$gradebook.'&forum='.intval($_GET['forum']).'&thread='.intval($_GET['thread']).'&'.api_get_cidreq(),
+ 'name' => $current_thread['thread_title'],
+ );
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Reply'));
}
/* Resource Linker */
-if (isset($_POST['add_resources']) AND $_POST['add_resources'] == get_lang('Resources')) {
- $_SESSION['formelements'] = $_POST;
- $_SESSION['origin'] = $_SERVER['REQUEST_URI'];
- $_SESSION['breadcrumbs'] = $interbreadcrumb;
+if (isset($_POST['add_resources']) && $_POST['add_resources'] == get_lang('Resources')) {
+ $_SESSION['formelements'] = $_POST;
+ $_SESSION['origin'] = $_SERVER['REQUEST_URI'];
+ $_SESSION['breadcrumbs'] = $interbreadcrumb;
header('Location: ../resourcelinker/resourcelinker.php');
exit;
}
@@ -151,7 +182,9 @@ if ($origin != 'learnpath') {
}
/*New display forum div*/
echo '
';
echo Display::return_icon('user_na.png', get_lang('StudentsTracking'), array(), ICON_SIZE_MEDIUM);
+echo Display::url(
+ Display::return_icon('group.png', get_lang('GroupReporting'), array(), ICON_SIZE_MEDIUM),
+ 'course_log_groups.php?'.api_get_cidreq()
+);
echo Display::url(
Display::return_icon('course.png', get_lang('CourseTracking'), array(), ICON_SIZE_MEDIUM),
'course_log_tools.php?'.api_get_cidreq()
diff --git a/main/tracking/course_log_groups.php b/main/tracking/course_log_groups.php
new file mode 100644
index 0000000000..ec428c87e1
--- /dev/null
+++ b/main/tracking/course_log_groups.php
@@ -0,0 +1,127 @@
+ 'name',
+ 'index' => 'name',
+ 'width' => '200',
+ 'align' => 'left',
+ ),
+ array(
+ 'name' => 'time',
+ 'index' => 'time',
+ 'width' => '50',
+ 'align' => 'left',
+ 'sortable' => 'false',
+ ),
+ array(
+ 'name' => 'progress',
+ 'index' => 'progress',
+ 'width' => '50',
+ 'align' => 'left',
+ 'sortable' => 'false',
+ ),
+ array(
+ 'name' => 'score',
+ 'index' => 'score',
+ 'width' => '50',
+ 'align' => 'left',
+ 'sortable' => 'false',
+ ),
+ array(
+ 'name' => 'works',
+ 'index' => 'works',
+ 'width' => '50',
+ 'align' => 'left',
+ 'sortable' => 'false',
+ ),
+ array(
+ 'name' => 'messages',
+ 'index' => 'messages',
+ 'width' => '50',
+ 'align' => 'left',
+ 'sortable' => 'false',
+ ),
+ array(
+ 'name' => 'actions',
+ 'index' => 'actions',
+ 'width' => '50',
+ 'align' => 'left',
+ 'formatter' => 'action_formatter',
+ 'sortable' => 'false',
+ ),
+);
+
+// Autowidth
+$extra_params['autowidth'] = 'true';
+// height auto
+$extra_params['height'] = 'auto';
+
+$action_links = '
+function action_formatter(cellvalue, options, rowObject) {
+ return \'
'.Display::return_icon('2rightarrow.gif',get_lang('Edit'),'',ICON_SIZE_SMALL).''.
+ '\';
+}';
+
+
+// Add the JS needed to use the jqgrid
+$htmlHeadXtra[] = api_get_jqgrid_js();
+
+$htmlHeadXtra[] = '
+';
+
+Display::display_header();
+
+echo '
';
+echo Display::url(Display::return_icon('user.png', get_lang('StudentsTracking'), array(), ICON_SIZE_MEDIUM), 'courseLog.php?'.api_get_cidreq(true, false));
+echo Display::url(Display::return_icon('group_na.png', get_lang('GroupReporting'), array(), ICON_SIZE_MEDIUM), '#');
+echo Display::url(Display::return_icon('course.png', get_lang('CourseTracking'), array(), ICON_SIZE_MEDIUM), 'course_log_tools.php?'.api_get_cidreq(true, false));
+echo Display::url(Display::return_icon('tools.png', get_lang('ResourcesTracking'), array(), ICON_SIZE_MEDIUM), 'course_log_resources.php?'.api_get_cidreq(true, false));
+echo '
';
+
+echo Display::grid_html('group_users');
+
+Display::display_footer();
diff --git a/main/tracking/course_log_resources.php b/main/tracking/course_log_resources.php
index e09d86249d..ba7c4d640c 100755
--- a/main/tracking/course_log_resources.php
+++ b/main/tracking/course_log_resources.php
@@ -65,6 +65,11 @@ echo Display::url(
api_get_path(WEB_CODE_PATH).'tracking/courseLog.php?'.api_get_cidreq()
);
+echo Display::url(
+ Display::return_icon('group.png', get_lang('GroupReporting'), array(), ICON_SIZE_MEDIUM),
+ 'course_log_groups.php?'.api_get_cidreq(true, false)
+);
+
echo Display::url(
Display::return_icon('course.png', get_lang('CourseTracking'), array(), ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'tracking/course_log_tools.php?'.api_get_cidreq()
diff --git a/main/tracking/course_log_tools.php b/main/tracking/course_log_tools.php
index fe26706ece..232ae40026 100755
--- a/main/tracking/course_log_tools.php
+++ b/main/tracking/course_log_tools.php
@@ -5,14 +5,12 @@
* @package chamilo.tracking
*/
-/* INIT SECTION */
-
-$pathopen = isset($_REQUEST['pathopen']) ? $_REQUEST['pathopen'] : null;
-// Including the global initialization file
require_once '../inc/global.inc.php';
$current_course_tool = TOOL_TRACKING;
$course_info = api_get_course_info();
+$groupId = isset($_REQUEST['gidReq']) ? intval($_REQUEST['gidReq']) : 0;
+//$groupId = api_get_group_id();
$from_myspace = false;
$from = isset($_GET['from']) ? $_GET['from'] : null;
@@ -35,7 +33,7 @@ if (!$is_allowedToTrack) {
// Including additional libraries.
require_once api_get_path(SYS_CODE_PATH).'resourcelinker/resourcelinker.inc.php';
-$TABLEQUIZ = Database::get_course_table(TABLE_QUIZ_TEST);
+$TABLEQUIZ = Database::get_course_table(TABLE_QUIZ_TEST);
// Starting the output buffering when we are exporting the information.
$export_csv = isset($_GET['export']) && $_GET['export'] == 'csv' ? true : false;
@@ -65,25 +63,62 @@ Display::display_header($nameTools, 'Tracking');
// getting all the students of the course
if (empty($session_id)) {
// Registered students in a course outside session.
- $a_students = CourseManager :: get_student_list_from_course_code(api_get_course_id());
+ $a_students = CourseManager:: get_student_list_from_course_code(
+ api_get_course_id(),
+ false,
+ 0,
+ null,
+ null,
+ true,
+ api_get_group_id()
+ );
} else {
// Registered students in session.
- $a_students = CourseManager :: get_student_list_from_course_code(api_get_course_id(), true, api_get_session_id());
+ $a_students = CourseManager:: get_student_list_from_course_code(
+ api_get_course_id(),
+ true,
+ api_get_session_id()
+ );
}
-
$nbStudents = count($a_students);
+$student_ids = array_keys($a_students);
+$studentCount = count($student_ids);
/* MAIN CODE */
echo '
';
-echo Display::url(Display::return_icon('user.png', get_lang('StudentsTracking'), array(), 32), 'courseLog.php?'.api_get_cidreq());
-echo Display::return_icon('course_na.png', get_lang('CourseTracking'), array(), 32);
-echo Display::url(Display::return_icon('tools.png', get_lang('ResourcesTracking'), array(), 32), 'course_log_resources.php?'.api_get_cidreq());
+echo Display::url(
+ Display::return_icon('user.png', get_lang('StudentsTracking'), array(), ICON_SIZE_MEDIUM),
+ 'courseLog.php?'.api_get_cidreq()
+);
+
+if (empty($groupId)) {
+ echo Display::url(
+ Display::return_icon('group.png', get_lang('GroupReporting'), array(), ICON_SIZE_MEDIUM),
+ 'course_log_groups.php?'.api_get_cidreq()
+ );
+ echo Display::url(Display::return_icon('course_na.png', get_lang('CourseTracking'), array(), ICON_SIZE_MEDIUM), '#');
+} else {
+ echo Display::url(
+ Display::return_icon('group_na.png', get_lang('GroupReporting'), array(), ICON_SIZE_MEDIUM),
+ '#'
+ );
+ echo Display::url(
+ Display::return_icon('course.png', get_lang('CourseTracking'), array(), ICON_SIZE_MEDIUM),
+ 'course_log_tools.php?'.api_get_cidreq(true, false).'&gidReq=0'
+ );
+}
+
+echo Display::url(
+ Display::return_icon('tools.png', get_lang('ResourcesTracking'), array(), ICON_SIZE_MEDIUM),
+ 'course_log_resources.php?'.api_get_cidreq()
+);
echo '
';
-echo ''.Display::return_icon('printer.png', get_lang('Print'),'',ICON_SIZE_MEDIUM).'';
+echo ''.
+ Display::return_icon('printer.png', get_lang('Print'),'',ICON_SIZE_MEDIUM).'';
echo '
'.Display::return_icon('export_csv.png', get_lang('ExportAsCSV'),'',ICON_SIZE_MEDIUM).'';
@@ -95,15 +130,15 @@ $course_code = api_get_course_id();
$course_id = api_get_course_int_id();
$list = new LearnpathList(null, $course_code, $session_id);
-
$flat_list = $list->get_flat_list();
-
if (count($flat_list) > 0) {
// learning path tracking
echo '
- '.Display::page_subheader(Display::return_icon('scorms.gif',get_lang('AverageProgressInLearnpath')).get_lang('AverageProgressInLearnpath')).'
+ '.Display::page_subheader(
+ Display::return_icon('scorms.gif',get_lang('AverageProgressInLearnpath')).get_lang('AverageProgressInLearnpath')
+ ).'
';
if ($export_csv) {
@@ -116,10 +151,15 @@ if (count($flat_list) > 0) {
$lp_avg_progress = 0;
foreach ($a_students as $student_id => $student) {
// get the progress in learning pathes
- $lp_avg_progress += Tracking::get_avg_student_progress($student_id, $course_code, array($lp_id), $session_id);
+ $lp_avg_progress += Tracking::get_avg_student_progress(
+ $student_id,
+ $course_code,
+ array($lp_id),
+ $session_id
+ );
}
- if ($nbStudents > 0) {
- $lp_avg_progress = $lp_avg_progress / $nbStudents;
+ if ($studentCount > 0) {
+ $lp_avg_progress = $lp_avg_progress / $studentCount;
} else {
$lp_avg_progress = null;
}
@@ -145,7 +185,9 @@ if (count($flat_list) > 0) {
// Exercices tracking.
echo '
- '.Display::page_subheader(Display::return_icon('quiz.gif',get_lang('AverageResultsToTheExercices')).get_lang('AverageResultsToTheExercices')).'
+ '.Display::page_subheader(
+ Display::return_icon('quiz.gif',get_lang('AverageResultsToTheExercices')).get_lang('AverageResultsToTheExercices')
+ ).'
';
$course_id = api_get_course_int_id();
@@ -163,18 +205,16 @@ if ($export_csv) {
$course_path_params = '&cidReq='.$course_code.'&id_session='.$session_id;
if (Database::num_rows($rs) > 0) {
- $student_ids = array_keys($a_students);
- $count_students = count($student_ids);
while ($quiz = Database::fetch_array($rs)) {
$quiz_avg_score = 0;
- if ($count_students > 0) {
+ if ($studentCount > 0) {
foreach ($student_ids as $student_id) {
$avg_student_score = Tracking::get_avg_student_exercise_score($student_id, $course_code, $quiz['id'], $session_id);
$quiz_avg_score += $avg_student_score;
}
}
- $count_students = ($count_students == 0 || is_null($count_students) || $count_students == '') ? 1 : $count_students;
- $quiz_avg_score = round(($quiz_avg_score / $count_students), 2).'%';
+ $studentCount = ($studentCount == 0 || is_null($studentCount) || $studentCount == '') ? 1 : $studentCount;
+ $quiz_avg_score = round(($quiz_avg_score / $studentCount), 2).'%';
$url = api_get_path(WEB_CODE_PATH).'exercice/overview.php?exerciseId='.$quiz['id'].$course_path_params;
echo ''.Display::url($quiz['title'], $url).' | '.$quiz_avg_score.' |
';
@@ -190,22 +230,51 @@ if (Database::num_rows($rs) > 0) {
$csv_content[] = $temp;
}
}
+
echo '
';
echo '';
-// Forums tracking.
-echo '
- '.Display::page_subheader(Display::return_icon('forum.gif', get_lang('Forum')).get_lang('Forum').' -
'.get_lang('SeeDetail').'').
- '
';
-$count_number_of_posts_by_course = Tracking :: count_number_of_posts_by_course($course_code, $session_id);
-$count_number_of_forums_by_course = Tracking :: count_number_of_forums_by_course($course_code, $session_id);
-$count_number_of_threads_by_course = Tracking :: count_number_of_threads_by_course($course_code, $session_id);
+$filterByUsers = array();
+
+if (!empty($groupId)) {
+ $filterByUsers = $student_ids;
+}
+
+$count_number_of_forums_by_course = Tracking:: count_number_of_forums_by_course(
+ $course_code,
+ $session_id,
+ $groupId
+);
+
+$count_number_of_threads_by_course = Tracking:: count_number_of_threads_by_course(
+ $course_code,
+ $session_id,
+ $groupId
+);
+
+$count_number_of_posts_by_course = Tracking:: count_number_of_posts_by_course(
+ $course_code,
+ $session_id,
+ $groupId
+);
+
if ($export_csv) {
$csv_content[] = array(get_lang('Forum'), '');
$csv_content[] = array(get_lang('ForumForumsNumber', ''), $count_number_of_forums_by_course);
$csv_content[] = array(get_lang('ForumThreadsNumber', ''), $count_number_of_threads_by_course);
$csv_content[] = array(get_lang('ForumPostsNumber', ''), $count_number_of_posts_by_course);
}
+
+// Forums tracking.
+echo '
+ '.Display::page_subheader(
+ Display::return_icon('forum.gif', get_lang('Forum')).
+ get_lang('Forum').' -
'.
+ get_lang('SeeDetail').''
+ ).
+ '
';
+
+
echo ''.get_lang('ForumForumsNumber').' | '.$count_number_of_forums_by_course.' |
';
echo ''.get_lang('ForumThreadsNumber').' | '.$count_number_of_threads_by_course.' |
';
echo ''.get_lang('ForumPostsNumber').' | '.$count_number_of_posts_by_course.' |
';