Adding lp reduced report see BT#8902

1.9.x
Julio Montoya 11 years ago
parent 7b44990d31
commit 903436eadf
  1. 292
      main/inc/lib/tracking.lib.php
  2. 2
      main/install/configuration.dist.php
  3. 44
      main/newscorm/learnpathItem.class.php
  4. 8
      main/newscorm/lp_stats.php

@ -37,19 +37,21 @@ class Tracking
$extendId = null,
$extendAttemptId = null,
$extendedAttempt = null,
$extendedAll = null
$extendedAll = null,
$type = 'classic'
) {
if (empty($courseInfo)) {
if (empty($courseInfo) || empty($lp_id)) {
return null;
}
$list = learnpath :: get_flat_ordered_items_list($lp_id, 0, $courseInfo['real_id']);
$lp_id = intval($lp_id);
$lp_item_id = intval($lp_item_id);
$user_id = intval($user_id);
$session_id = intval($session_id);
$origin = Security::remove_XSS($origin);
$list = learnpath :: get_flat_ordered_items_list($lp_id, 0, $courseInfo['real_id']);
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$course_id = $courseInfo['real_id'];
$courseCode = $courseInfo['code'];
@ -66,12 +68,17 @@ class Tracking
}
if (!empty($extendedAll)) {
$extend_all_link = '<a href="' . api_get_self() . '?action=stats' . $url_suffix . '">
<img src="../img/view_less_stats.gif" alt="fold_view" border="0" title="' . get_lang('HideAllAttempts') . '"></a>';
$extend_all_link = Display::url(
Display::return_icon('view_less_stats.gif', get_lang('HideAllAttempts')),
api_get_self() . '?action=stats' . $url_suffix
);
$extend_all = 1;
} else {
$extend_all_link = '<a href="' . api_get_self() . '?action=stats&extend_all=1' . $url_suffix . '">
<img src="../img/view_more_stats.gif" alt="extend_view" border="0" title="' . get_lang('ShowAllAttempts') . '"></a>';
$extend_all_link = Display::url(
Display::return_icon('view_more_stats.gif', get_lang('ShowAllAttempts')),
api_get_self() . '?action=stats&extend_all=1' . $url_suffix
);
}
if ($origin != 'tracking') {
@ -110,11 +117,13 @@ class Tracking
$tbl_stats_exercices = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$tbl_stats_attempts = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$sql = "SELECT max(view_count) FROM $TBL_LP_VIEW
$sql = "SELECT max(view_count)
FROM $TBL_LP_VIEW
WHERE
c_id = $course_id AND
lp_id = $lp_id AND
user_id = '" . $user_id . "' $session_condition";
user_id = $user_id
$session_condition";
$res = Database::query($sql);
$view = '';
if (Database :: num_rows($res) > 0) {
@ -148,69 +157,44 @@ class Tracking
}
// Prepare statement to go through each attempt.
$viewCondition = null;
if (!empty($view)) {
$sql = "SELECT
iv.status as mystatus,
v.view_count as mycount,
iv.score as myscore,
iv.total_time as mytime,
i.id as myid,
i.lp_id as mylpid,
iv.lp_view_id as mylpviewid,
i.title as mytitle,
i.max_score as mymaxscore,
iv.max_score as myviewmaxscore,
i.item_type as item_type,
iv.view_count as iv_view_count,
iv.id as iv_id,
path
FROM $TBL_LP_ITEM as i
INNER JOIN $TBL_LP_ITEM_VIEW as iv
ON (i.id = iv.lp_item_id AND i.c_id = $course_id AND iv.c_id = $course_id)
INNER JOIN $TBL_LP_VIEW as v
ON (iv.lp_view_id = v.id AND v.c_id = $course_id)
WHERE
i.id = $my_item_id AND
i.lp_id = $lp_id AND
v.user_id = $user_id AND
v.view_count = $view AND
v.session_id = $session_id
ORDER BY iv.view_count $qry_order ";
} else {
$sql = "SELECT
iv.status as mystatus,
v.view_count as mycount,
iv.score as myscore,
iv.total_time as mytime,
i.id as myid,
i.lp_id as mylpid,
iv.lp_view_id as mylpviewid,
i.title as mytitle,
i.max_score as mymaxscore,
iv.max_score as myviewmaxscore,
i.item_type as item_type,
iv.view_count as iv_view_count,
iv.id as iv_id,
path
FROM $TBL_LP_ITEM as i
INNER JOIN $TBL_LP_ITEM_VIEW as iv
ON (i.id = iv.lp_item_id AND i.c_id = $course_id AND iv.c_id = $course_id)
INNER JOIN $TBL_LP_VIEW as v
ON (iv.lp_view_id = v.id AND v.c_id = $course_id)
WHERE
i.id = $my_item_id AND
i.lp_id = $lp_id AND
v.user_id = $user_id AND
v.session_id = $session_id
ORDER BY iv.view_count $qry_order ";
$viewCondition = " AND v.view_count = $view ";
}
$sql = "SELECT
iv.status as mystatus,
v.view_count as mycount,
iv.score as myscore,
iv.total_time as mytime,
i.id as myid,
i.lp_id as mylpid,
iv.lp_view_id as mylpviewid,
i.title as mytitle,
i.max_score as mymaxscore,
iv.max_score as myviewmaxscore,
i.item_type as item_type,
iv.view_count as iv_view_count,
iv.id as iv_id,
path
FROM $TBL_LP_ITEM as i
INNER JOIN $TBL_LP_ITEM_VIEW as iv
ON (i.id = iv.lp_item_id AND i.c_id = $course_id AND iv.c_id = $course_id)
INNER JOIN $TBL_LP_VIEW as v
ON (iv.lp_view_id = v.id AND v.c_id = $course_id)
WHERE
i.id = $my_item_id AND
i.lp_id = $lp_id AND
v.user_id = $user_id AND
v.session_id = $session_id
$viewCondition
ORDER BY iv.view_count $qry_order ";
$result = Database::query($sql);
$num = Database :: num_rows($result);
$time_for_total = 'NaN';
//Extend all + extend scorm?
// Extend all + extend scorm?
if (($extend_this || $extend_all) && $num > 0) {
$row = Database :: fetch_array($result);
$result_disabled_ext_all = false;
@ -220,7 +204,9 @@ class Tracking
$sql = "SELECT results_disabled
FROM $TBL_QUIZ
WHERE c_id = $course_id AND id ='" . $my_path . "'";
WHERE
c_id = $course_id AND
id ='" . $my_path . "'";
$res_result_disabled = Database::query($sql);
$row_result_disabled = Database::fetch_row($res_result_disabled);
@ -239,9 +225,10 @@ class Tracking
}
$extend_link = '';
if (!empty($inter_num)) {
$extend_link = '<a href="' . api_get_self() . '?action=stats&fold_id=' . $my_item_id . $url_suffix . '">
<img src="../img/visible.gif" alt="' . get_lang('HideAttemptView') . '" title="' . get_lang('HideAttemptView') . '" border="0">
</a>';
$extend_link = Display::url(
Display::return_icon('visible.gif', get_lang('HideAttemptView')),
api_get_self() . '?action=stats&fold_id=' . $my_item_id . $url_suffix
);
}
$title = $row['mytitle'];
@ -264,7 +251,6 @@ class Tracking
</tr>';
}
$counter++;
$attemptCount = 1;
do {
@ -273,18 +259,22 @@ class Tracking
$extend_this_attempt = 0;
if ((learnpath :: get_interactions_count_from_db($row['iv_id'], $course_id) > 0 ||
learnpath :: get_objectives_count_from_db($row['iv_id'], $course_id) > 0) &&
learnpath :: get_objectives_count_from_db($row['iv_id'], $course_id) > 0) &&
!$extend_all
) {
if ($extendAttemptId == $row['iv_id']) {
// The extend button for this attempt has been clicked.
$extend_this_attempt = 1;
$extend_attempt_link = '<a href="' . api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&fold_attempt_id=' . $row['iv_id'] . $url_suffix . '">
<img src="../img/visible.gif" alt="' . get_lang('HideAttemptView') . '" title="' . get_lang('HideAttemptView') . '" border="0"></a>';
$extend_attempt_link = Display::url(
Display::return_icon('visible.gif', get_lang('HideAttemptView')),
api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&fold_attempt_id=' . $row['iv_id'] . $url_suffix
);
} else { // Same case if fold_attempt_id is set, so not implemented explicitly.
// The extend button for this attempt has not been clicked.
$extend_attempt_link = '<a href="' . api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&extend_attempt_id=' . $row['iv_id'] . $url_suffix . '">
<img src="../img/invisible.gif" alt="' . get_lang('ExtendAttemptView') . '" title="' . get_lang('ExtendAttemptView') . '" border="0"></a>';
$extend_attempt_link = Display::url(
Display::return_icon('invisible.gif', get_lang('ExtendAttemptView')),
api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&extend_attempt_id=' . $row['iv_id'] . $url_suffix
);
}
}
@ -343,7 +333,7 @@ class Tracking
<td></td>
<td>' . $extend_attempt_link . '</td>
<td colspan="3">' . get_lang('Attempt') . ' ' . $attemptCount . '</td>
<td colspan="2">' . learnpathItem::humanize_status($lesson_status) . '</td>
<td colspan="2">' . learnpathItem::humanize_status($lesson_status, true, $type) . '</td>
<td colspan="2">' . $view_score . '</td>
<td colspan="2">' . $time . '</td>
<td></td>
@ -352,7 +342,7 @@ class Tracking
if (!empty($export_csv)) {
$temp = array();
$temp[] = $title = Security::remove_XSS($title);
$temp[] = Security::remove_XSS(learnpathItem::humanize_status($lesson_status, false));
$temp[] = Security::remove_XSS(learnpathItem::humanize_status($lesson_status, false, $type));
if ($row['item_type'] == 'quiz') {
if (!$is_allowed_to_edit && $result_disabled_ext_all) {
@ -384,7 +374,7 @@ class Tracking
if (count($content_student_response) > 0) {
if (count($content_student_response) >= 3) {
// Pop the element off the end of array.
$new_content_student_response = array_pop($content_student_response);
array_pop($content_student_response);
}
$student_response = implode(',', $content_student_response);
}
@ -428,7 +418,7 @@ class Tracking
}
} while ($row = Database :: fetch_array($result));
} elseif ($num > 0) {
//Not extended
// Not extended.
$row = Database :: fetch_array($result, 'ASSOC');
$my_id = $row['myid'];
@ -441,9 +431,9 @@ class Tracking
if ($row['item_type'] == 'quiz') {
// Check results_disabled in quiz table.
$my_path = Database::escape_string($my_path);
$sql = "SELECT results_disabled FROM $TBL_QUIZ
WHERE c_id = $course_id AND id ='" . (int) $my_path . "'";
$sql = "SELECT results_disabled
FROM $TBL_QUIZ
WHERE c_id = $course_id AND id ='" . $my_path . "'";
$res_result_disabled = Database::query($sql);
$row_result_disabled = Database::fetch_row($res_result_disabled);
@ -465,14 +455,17 @@ class Tracking
if (!empty($extendAttemptId) && $extendAttemptId == $row['iv_id']) {
// The extend button for this attempt has been clicked.
$extend_this_attempt = 1;
$extend_attempt_link = '<a href="' . api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&fold_attempt_id=' . $row['iv_id'] . $url_suffix . '">
<img src="../img/visible.gif" alt="' . get_lang('HideAttemptView') . '" title="' . get_lang('HideAttemptView') . '" border="0">
</a>';
} else { // Same case if fold_attempt_id is set, so not implemented explicitly.
$extend_attempt_link = Display::url(
Display::return_icon('visible.gif', get_lang('HideAttemptView')),
api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&fold_attempt_id=' . $row['iv_id'] . $url_suffix
);
} else {
// Same case if fold_attempt_id is set, so not implemented explicitly.
// The extend button for this attempt has not been clicked.
$extend_attempt_link = '<a href="' . api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&extend_attempt_id=' . $row['iv_id'] . $url_suffix . '">
<img src="../img/invisible.gif" alt="' . get_lang('ExtendAttemptView') . '" title="' . get_lang('ExtendAttemptView') . '" border="0">
</a>';
$extend_attempt_link = Display::url(
Display::return_icon('invisible.gif', get_lang('ExtendAttemptView')),
api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&extend_attempt_id=' . $row['iv_id'] . $url_suffix
);
}
}
@ -484,9 +477,10 @@ class Tracking
$extend_link = '';
if ($inter_num > 1) {
$extend_link = '<a href="' . api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&extend_attempt_id=' . $row['iv_id'] . $url_suffix . '">
<img src="../img/invisible.gif" alt="' . get_lang('ExtendAttemptView') . '" title="' . get_lang('ExtendAttemptView') . '" border="0">
</a>';
$extend_link = Display::url(
Display::return_icon('invisible.gif', get_lang('ExtendAttemptView')),
api_get_self() . '?action=stats&extend_id=' . $my_item_id . '&extend_attempt_id=' . $row['iv_id'] . $url_suffix
);
}
$lesson_status = $row['mystatus'];
@ -535,24 +529,28 @@ class Tracking
} else {
if ($row['item_type'] == 'quiz') {
// Get score and total time from last attempt of a exercise en lp.
$sql = "SELECT score FROM $TBL_LP_ITEM_VIEW
WHERE
c_id = $course_id AND
lp_item_id = '" . (int) $my_id . "' AND
lp_view_id = '" . (int) $my_lp_view_id . "'
ORDER BY view_count DESC limit 1";
$sql = "SELECT score
FROM $TBL_LP_ITEM_VIEW
WHERE
c_id = $course_id AND
lp_item_id = '" . (int) $my_id . "' AND
lp_view_id = '" . (int) $my_lp_view_id . "'
ORDER BY view_count DESC limit 1";
$res_score = Database::query($sql);
$row_score = Database::fetch_array($res_score);
$sql = "SELECT SUM(total_time) as total_time FROM $TBL_LP_ITEM_VIEW
WHERE
c_id = $course_id AND
lp_item_id = '" . (int) $my_id . "' AND
lp_view_id = '" . (int) $my_lp_view_id . "'";
$sql = "SELECT SUM(total_time) as total_time
FROM $TBL_LP_ITEM_VIEW
WHERE
c_id = $course_id AND
lp_item_id = '" . (int) $my_id . "' AND
lp_view_id = '" . (int) $my_lp_view_id . "'";
$res_time = Database::query($sql);
$row_time = Database::fetch_array($res_time);
if (Database::num_rows($res_score) > 0 && Database::num_rows($res_time) > 0) {
if (Database::num_rows($res_score) > 0 &&
Database::num_rows($res_time) > 0
) {
$score = (float) $row_score['score'];
$subtotal_time = (int) $row_time['total_time'];
} else {
@ -561,11 +559,11 @@ class Tracking
}
// Selecting the max score from an attempt.
$sql = "SELECT SUM(t.ponderation) as maxscore
FROM (
SELECT distinct question_id, marks, ponderation
FROM $tbl_stats_attempts as at INNER JOIN $tbl_quiz_questions as q
ON (q.id = at.question_id AND q.c_id = $course_id
)
FROM (
SELECT distinct question_id, marks, ponderation
FROM $tbl_stats_attempts as at INNER JOIN $tbl_quiz_questions as q
ON (q.id = at.question_id AND q.c_id = $course_id
)
WHERE exe_id ='$id_last_attempt' ) as t";
$result = Database::query($sql);
@ -582,15 +580,13 @@ class Tracking
if (empty($title)) {
$title = rl_get_resource_name(api_get_course_id(), $lp_id, $row['myid']);
}
// Remove "NaN" if any (@todo: locate the source of these NaN)
//$time = str_replace('NaN', '00'.$h.'00\'00"', $time);
if ($row['item_type'] != 'dokeos_chapter') {
if ($row['item_type'] == 'quiz') {
$correct_test_link = '';
$my_url_suffix = '';
$my_url_suffix = '&course=' . $courseCode . '&student_id=' . $user_id . '&lp_id=' . intval($row['mylpid']) . '&origin=' . Security::remove_XSS($origin);
$my_url_suffix = '&course=' . $courseCode . '&student_id=' . $user_id . '&lp_id=' . intval($row['mylpid']) . '&origin=' . $origin;
$sql = 'SELECT * FROM ' . $tbl_stats_exercices . '
WHERE
exe_exo_id="' . $row['path'] . '" AND
@ -606,11 +602,15 @@ class Tracking
$num = Database :: num_rows($resultLastAttempt);
if ($num > 0) {
if ($extendedAttempt == 1 && ($lp_id == $my_lp_id) && $lp_item_id == $my_id) {
$correct_test_link = '<a href="' . api_get_self() . '?action=stats' . $my_url_suffix . '&session_id=' . api_get_session_id() . '&lp_item_id=' . $my_id . '">
<img src="../img/view_less_stats.gif" alt="fold_view" border="0" title="' . get_lang('HideAllAttempts') . '"></a>';
$correct_test_link = Display::url(
Display::return_icon('view_less_stats.gif', get_lang('HideAllAttempts')),
api_get_self() . '?action=stats' . $my_url_suffix . '&session_id=' . api_get_session_id() . '&lp_item_id=' . $my_id
);
} else {
$correct_test_link = '<a href="' . api_get_self() . '?action=stats&extend_attempt=1' . $my_url_suffix . '&session_id=' . api_get_session_id() . '&lp_item_id=' . $my_id . '">
<img src="../img/view_more_stats.gif" alt="extend_view" border="0" title="' . get_lang('ShowAllAttemptsByExercise') . '"></a>';
$correct_test_link = Display::url(
Display::return_icon('view_more_stats.gif', get_lang('ShowAllAttemptsByExercise')),
api_get_self() . '?action=stats&extend_attempt=1' . $my_url_suffix . '&session_id=' . api_get_session_id() . '&lp_item_id=' . $my_id
);
}
} else {
$correct_test_link = '-';
@ -688,7 +688,6 @@ class Tracking
$counter++;
if ($extend_this_attempt OR $extend_all) {
$list1 = learnpath :: get_iv_interactions_array($row['iv_id']);
foreach ($list1 as $id => $interaction) {
if (($counter % 2) == 0) {
$oddclass = 'row_odd';
@ -735,9 +734,7 @@ class Tracking
// Attempts listing by exercise.
if ($lp_id == $my_lp_id && $lp_item_id== $my_id && $extendedAttempt) {
// Get attempts of a exercise.
$num_attempts = 0;
if (!empty($lp_id) && !empty($lp_item_id) && $row['item_type'] === 'quiz') {
$sql = "SELECT path FROM $TBL_LP_ITEM
WHERE
@ -845,7 +842,7 @@ class Tracking
if (!empty($a_my_id)) {
if ($extendedAttempt) {
// "Right green cross" extended
$total_score = Tracking::get_avg_student_score(
$total_score = self::get_avg_student_score(
$user_id,
$course_id,
$a_my_id,
@ -855,7 +852,7 @@ class Tracking
);
} else {
// "Left green cross" extended
$total_score = Tracking::get_avg_student_score(
$total_score = self::get_avg_student_score(
$user_id,
$course_id,
$a_my_id,
@ -866,7 +863,7 @@ class Tracking
}
} else {
// Extend all "left green cross"
$total_score = Tracking::get_avg_student_score(
$total_score = self::get_avg_student_score(
$user_id,
$course_id,
array($lp_id),
@ -876,7 +873,7 @@ class Tracking
);
}
$total_time = learnpathItem :: getScormTimeFromParameter('js', $total_time);
$total_time = learnpathItem::getScormTimeFromParameter('js', $total_time);
$total_time = str_replace('NaN', '00' . $h . '00\'00"', $total_time);
if (!$is_allowed_to_edit && $result_disabled_ext_all) {
@ -889,6 +886,8 @@ class Tracking
}
}
//$progress = self::get_avg_student_progress()
$progress = null;
if (($counter % 2) == 0) {
$oddclass = 'row_odd';
} else {
@ -900,7 +899,7 @@ class Tracking
<td colspan="4">
<i>' . get_lang('AccomplishedStepsTotal') .'</i>
</td>
<td colspan="2"></td>
<td colspan="2"> ' . $progress.'</td>
<td colspan="2">
' . $final_score.'
</td>
@ -1755,7 +1754,7 @@ class Tracking
* get teacher progress by course and session
* @param int course id
* @param int session id
* @return data array
* @return array
*/
static function get_teachers_progress_by_course($courseId, $sessionId)
{
@ -1778,6 +1777,7 @@ class Tracking
while ($teacher = Database::fetch_array($rs,'ASSOC')) {
$teachers[] = $teacher;
}
$data = array();
foreach ($teachers as $teacher) {
//total documents added
$sql = "SELECT count(*) as total
@ -1911,19 +1911,26 @@ class Tracking
return $data;
}
/**
* Returns the average student progress in the learning paths of the given
* course.
* @param int/array Student id(s)
* @param string Course code
* @param array Limit average to listed lp ids
* @param int Session id (optional), if parameter $session_id is null(default) it'll return results including sessions, 0 = session is not filtered
* @param bool Will return an array of the type: [sum_of_progresses, number] if it is set to true
* @return double Average progress of the user in this course
* @param int|array $student_id
* @param string $course_code
* @param array $lp_ids Limit average to listed lp ids
* @param int $session_id Session id (optional),
* if parameter $session_id is null(default) it'll return results including
* sessions, 0 = session is not filtered
* @param bool $return_array Will return an array of the type:
* [sum_of_progresses, number] if it is set to true
* @return double Average progress of the user in this course
*/
public static function get_avg_student_progress($student_id, $course_code = null, $lp_ids = array(), $session_id = null, $return_array = false)
{
public static function get_avg_student_progress(
$student_id,
$course_code = null,
$lp_ids = array(),
$session_id = null,
$return_array = false
) {
$conditions = array();
$session_id = intval($session_id);
@ -3404,9 +3411,8 @@ class Tracking
* @author isaac flores paz
* @deprecated get_avg_student_score should be use
*/
public static function get_average_test_scorm_and_lp ($user_id, $course_id)
public static function get_average_test_scorm_and_lp($user_id, $course_id)
{
//the score inside the Reporting table
$course_info = api_get_course_info($course_id);
$course_id = $course_info['real_id'];
@ -3420,6 +3426,7 @@ class Tracking
$rs_type=Database::query($sql_type);
$average_data=0;
$count_loop=0;
$average_data_sum = 0;
$lp_list = array();
while ($row_type = Database::fetch_array($rs_type)) {
$lp_list[] = $row_type['id'];
@ -3453,12 +3460,10 @@ class Tracking
$tot=1;
}
$average_data1=$sum/$tot;
$sql_list_view='';
$rs_last_lp_view_id='';
} elseif ($row_type['lp_type']==2) {
//lp scorm
$sql = "SELECT id FROM $lp_view_table WHERE c_id = $course_id AND user_id = '".intval($user_id)."' and lp_id='".$row_type['id']."'";
$sql = "SELECT id FROM $lp_view_table
WHERE c_id = $course_id AND user_id = '".intval($user_id)."' and lp_id='".$row_type['id']."'";
$rs_last_lp_view_id = Database::query($sql);
$lp_view_id = intval(Database::result($rs_last_lp_view_id,0,'id'));
@ -3494,7 +3499,7 @@ class Tracking
//We only count the LP that have an exercise to get the average
$lp_with_quiz = 0;
foreach($lp_list as $lp_id) {
foreach ($lp_list as $lp_id) {
//check if LP have a score
$sql = "SELECT count(id) as count FROM $lp_item_table
@ -3651,7 +3656,6 @@ class Tracking
}
}
//query
$sql = "SELECT %s as user, count(*) as total
FROM %s
@ -6504,6 +6508,4 @@ class TrackingUserLogCSV
'html' => $courseToolInformationTotal
);
}
}

@ -247,3 +247,5 @@ $_configuration['system_stable'] = NEW_VERSION_STABLE;
//$_configuration['theme_fallback'] = 'chamilo'; // (main/css/chamilo)
// The default template that will be use in the system.
//$_configuration['default_template'] = 'default'; // (main/template/default)
// Show reduce LP report
//$_configuration['lp_show_reduced_report'] = false;

@ -1779,9 +1779,9 @@ class learnpathItem
$h = get_lang('h');
if (!isset($time)) {
if ($origin == 'js') {
return '00:00:00';
return '00 : 00: 00';
} else {
return '00' . $h . '00\'00"';
return '00 ' . $h . ' 00 \' 00"';
}
} else {
return self::calculateScormTime($origin, $time);
@ -1859,12 +1859,11 @@ class learnpathItem
$secs = ($time % 60);
if ($origin == 'js') {
$scormTime = trim(sprintf("%4d:%02d:%02d", $hours, $mins, $secs));
$scormTime = trim(sprintf("%02d : %02d : %02d", $hours, $mins, $secs));
} else {
$scormTime = trim(
sprintf("%4d$h%02d'%02d\"", $hours, $mins, $secs)
);
$scormTime = trim(sprintf("%02d$h%02d'%02d\"", $hours, $mins, $secs));
}
if (self::debug > 2) {
error_log('learnpathItem::get_scorm_time(' . $scormTime . ')', 0);
}
@ -3308,7 +3307,9 @@ class learnpathItem
/**
* Sets the status for this item
* @param string $status must be one of the values defined in $this->possible_status
* @param string $status must be one of the values defined
* in $this->possible_status
* (this affects the status setting)
* @return boolean True on success, false on error
*/
public function set_status($status)
@ -4291,11 +4292,12 @@ class learnpathItem
* in different user languages
* @param $status
* @param bool $decorate
* @param string $type classic|simple
* @return array|string
*/
static function humanize_status($status, $decorate = true)
static function humanize_status($status, $decorate = true, $type = 'classic')
{
$mylanglist = array(
$statusList = array(
'completed' => 'ScormCompstatus',
'incomplete' => 'ScormIncomplete',
'failed' => 'ScormFailed',
@ -4304,30 +4306,38 @@ class learnpathItem
'not attempted' => 'ScormNotAttempted'
);
$my_lesson_status = get_lang($mylanglist[$status]);
$myLessonStatus = get_lang($statusList[$status]);
switch ($status) {
case 'completed':
case 'browsed':
$class_status = 'info';
$classStatus = 'info';
break;
case 'incomplete':
$class_status = 'warning';
$classStatus = 'warning';
break;
case 'passed':
$class_status = 'success';
$classStatus = 'success';
break;
case 'failed':
$class_status = 'important';
$classStatus = 'important';
break;
default:
$class_status = 'default';
$classStatus = 'default';
break;
}
if ($type == 'simple') {
if (in_array($status, array('failed', 'passed', 'browsed'))) {
$myLessonStatus = get_lang('ScormIncomplete');;
$classStatus = 'warning';
}
}
if ($decorate) {
return Display::label($my_lesson_status, $class_status);
return Display::label($myLessonStatus, $classStatus);
} else {
return $my_lesson_status;
return $myLessonStatus;
}
}
}

@ -28,6 +28,11 @@ $extendedAttempt = isset($_GET['extend_attempt']) ? $_GET['extend_attempt'] : nu
$extendedAll = isset($_GET['extend_all']) ? $_GET['extend_all'] : null;
$export = isset($_GET['export']) && $_GET['export'] == 'csv' ? true : false;
$lpReportType = api_get_configuration_value('lp_show_reduced_report');
$type = 'classic';
if ($lpReportType) {
$type = 'simple';
}
$courseInfo = api_get_course_info($courseCode);
$output = Tracking::getLpStats(
$userId,
@ -40,7 +45,8 @@ $output = Tracking::getLpStats(
$extendId,
$extendAttemptId,
$extendedAttempt,
$extendedAll
$extendedAll,
$type
);
// Origin = tracking means that teachers see that info in the Reporting tool

Loading…
Cancel
Save