|
@@ -185,10 +185,11 @@ class Tracking
|
|
|
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)
|
|
|
+ ON (i.id = iv.lp_item_id AND i.c_id = iv.c_id)
|
|
|
INNER JOIN $TBL_LP_VIEW as v
|
|
|
- ON (iv.lp_view_id = v.id AND v.c_id = $course_id)
|
|
|
+ ON (iv.lp_view_id = v.id AND v.c_id = iv.c_id)
|
|
|
WHERE
|
|
|
+ v.c_id = $course_id AND
|
|
|
i.id = $my_item_id AND
|
|
|
i.lp_id = $lp_id AND
|
|
|
v.user_id = $user_id AND
|
|
@@ -1291,9 +1292,10 @@ class Tracking
|
|
|
$condition_user = " AND user_id = $user_id ";
|
|
|
}
|
|
|
|
|
|
- $sql = "SELECT SUM(UNIX_TIMESTAMP(logout_course_date) - UNIX_TIMESTAMP(login_course_date)) as nb_seconds "
|
|
|
- . "FROM $tbl_track_course "
|
|
|
- . "WHERE UNIX_TIMESTAMP(logout_course_date) > UNIX_TIMESTAMP(login_course_date) ";
|
|
|
+ $sql = "SELECT
|
|
|
+ SUM(UNIX_TIMESTAMP(logout_course_date) - UNIX_TIMESTAMP(login_course_date)) as nb_seconds
|
|
|
+ FROM $tbl_track_course
|
|
|
+ WHERE UNIX_TIMESTAMP(logout_course_date) > UNIX_TIMESTAMP(login_course_date) ";
|
|
|
|
|
|
if ($courseId != 0) {
|
|
|
$sql .= "AND c_id = '$courseId' ";
|
|
@@ -1307,6 +1309,7 @@ class Tracking
|
|
|
|
|
|
$rs = Database::query($sql);
|
|
|
$row = Database::fetch_array($rs);
|
|
|
+
|
|
|
return $row['nb_seconds'];
|
|
|
}
|
|
|
|
|
@@ -1597,7 +1600,8 @@ class Tracking
|
|
|
* @internal param \Student $mixed id
|
|
|
* @internal param \Course $string code
|
|
|
* @internal param \Exercise $int id (optional), filtered by exercise
|
|
|
- * @internal param \Session $int id (optional), if param $session_id is null it'll return results including sessions, 0 = session is not filtered
|
|
|
+ * @internal param \Session $int id (optional), if param $session_id is null
|
|
|
+ * it'll return results including sessions, 0 = session is not filtered
|
|
|
* @return string value (number %) Which represents a round integer about the score average.
|
|
|
*/
|
|
|
public static function get_avg_student_exercise_score(
|
|
@@ -1743,8 +1747,10 @@ class Tracking
|
|
|
* @internal param \Student $int id
|
|
|
* @internal param \Course $string code
|
|
|
* @internal param \Exercise $int id
|
|
|
- * @internal param \Learning $int path id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
|
|
|
- * @internal param \Learning $int path item id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
|
|
|
+ * @internal param \Learning $int path id (optional),
|
|
|
+ * for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
|
|
|
+ * @internal param \Learning $int path item id (optional),
|
|
|
+ * for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
|
|
|
* @return int count of attempts
|
|
|
*/
|
|
|
public static function count_student_exercise_attempts(
|
|
@@ -2456,7 +2462,8 @@ class Tracking
|
|
|
* @param int|array Array of user ids or an user id
|
|
|
* @param string Course code
|
|
|
* @param array List of LP ids
|
|
|
- * @param int Session id (optional), if param $session_id is null(default) it'll return results including sessions, 0 = session is not filtered
|
|
|
+ * @param int Session id (optional), if param $session_id is null(default)
|
|
|
+ * it'll return results including sessions, 0 = session is not filtered
|
|
|
* @param bool Returns an array of the type [sum_score, num_score] if set to true
|
|
|
* @param bool get only the latest attempts or ALL attempts
|
|
|
* @return string Value (number %) Which represents a round integer explain in got in 3.
|
|
@@ -2534,7 +2541,8 @@ class Tracking
|
|
|
* @param int|array Student id(s)
|
|
|
* @param string Course code
|
|
|
* @param array Limit average to listed lp ids
|
|
|
- * @param int Session id (optional), if param $session_id is null(default) it'll return results including sessions, 0 = session is not filtered
|
|
|
+ * @param int Session id (optional), if param $session_id is
|
|
|
+ * null(default) it'll return results including sessions, 0 = session is not filtered
|
|
|
* @return int Total time
|
|
|
*/
|
|
|
public static function get_time_spent_in_lp($student_id, $course_code, $lp_ids = array(), $session_id = null)
|
|
@@ -2567,7 +2575,7 @@ class Tracking
|
|
|
|
|
|
// Check the real number of LPs corresponding to the filter in the
|
|
|
// database (and if no list was given, get them all)
|
|
|
- //$res_row_lp = Database::query("SELECT DISTINCT(id) FROM $lp_table $condition_lp $condition_session");
|
|
|
+
|
|
|
$res_row_lp = Database::query("SELECT DISTINCT(id) FROM $lp_table WHERE c_id = $course_id $condition_lp");
|
|
|
$count_row_lp = Database::num_rows($res_row_lp);
|
|
|
|
|
@@ -2593,6 +2601,7 @@ class Tracking
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return $total_time;
|
|
|
}
|
|
|
|
|
@@ -2660,7 +2669,7 @@ class Tracking
|
|
|
$tbl_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER);
|
|
|
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
|
|
|
|
|
|
- $a_students = array ();
|
|
|
+ $students = [];
|
|
|
|
|
|
// At first, courses where $coach_id is coach of the course //
|
|
|
$sql = 'SELECT session_id, c_id
|
|
@@ -2700,7 +2709,7 @@ class Tracking
|
|
|
$rs = Database::query($sql);
|
|
|
|
|
|
while ($row = Database::fetch_array($rs)) {
|
|
|
- $a_students[$row['user_id']] = $row['user_id'];
|
|
|
+ $students[$row['user_id']] = $row['user_id'];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2737,17 +2746,17 @@ class Tracking
|
|
|
|
|
|
$result = Database::query($sql);
|
|
|
while ($row = Database::fetch_array($result)) {
|
|
|
- $a_students[$row['user_id']] = $row['user_id'];
|
|
|
+ $students[$row['user_id']] = $row['user_id'];
|
|
|
}
|
|
|
|
|
|
- return $a_students;
|
|
|
+ return $students;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Get student followed by a coach inside a session
|
|
|
* @param int Session id
|
|
|
* @param int Coach id
|
|
|
- * @return array students list
|
|
|
+ * @return array students list
|
|
|
*/
|
|
|
public static function get_student_followed_by_coach_in_a_session($id_session, $coach_id)
|
|
|
{
|
|
@@ -2755,7 +2764,7 @@ class Tracking
|
|
|
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
|
|
|
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
|
|
|
|
|
|
- $a_students = array ();
|
|
|
+ $students = [];
|
|
|
// At first, courses where $coach_id is coach of the course //
|
|
|
$sql = 'SELECT c_id FROM ' . $tbl_session_course_user . '
|
|
|
WHERE session_id="' . $id_session . '" AND user_id=' . $coach_id.' AND status=2';
|
|
@@ -2771,7 +2780,7 @@ class Tracking
|
|
|
session_id = '" . $id_session . "'";
|
|
|
$rs = Database::query($sql);
|
|
|
while ($row = Database::fetch_array($rs)) {
|
|
|
- $a_students[$row['user_id']] = $row['user_id'];
|
|
|
+ $students[$row['user_id']] = $row['user_id'];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2779,6 +2788,7 @@ class Tracking
|
|
|
$sql = 'SELECT id_coach FROM ' . $tbl_session . '
|
|
|
WHERE id="' . $id_session.'" AND id_coach="' . $coach_id . '"';
|
|
|
$result = Database::query($sql);
|
|
|
+
|
|
|
//He is the session_coach so we select all the users in the session
|
|
|
if (Database::num_rows($result) > 0) {
|
|
|
$sql = 'SELECT DISTINCT srcru.user_id
|
|
@@ -2786,11 +2796,11 @@ class Tracking
|
|
|
WHERE session_id="' . $id_session . '"';
|
|
|
$result = Database::query($sql);
|
|
|
while ($row = Database::fetch_array($result)) {
|
|
|
- $a_students[$row['user_id']] = $row['user_id'];
|
|
|
+ $students[$row['user_id']] = $row['user_id'];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return $a_students;
|
|
|
+ return $students;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -2819,13 +2829,13 @@ class Tracking
|
|
|
|
|
|
// Then, courses where $coach_id is coach of the session
|
|
|
$sql = 'SELECT session_course_user.user_id
|
|
|
- FROM ' . $tbl_session_course_user . ' as session_course_user
|
|
|
- INNER JOIN ' . $tbl_session_course . ' as session_course
|
|
|
- ON session_course.c_id = session_course_user.c_id
|
|
|
- INNER JOIN ' . $tbl_session . ' as session
|
|
|
- ON session.id = session_course.session_id
|
|
|
- AND session.id_coach = ' . $coach_id . '
|
|
|
- WHERE user_id = ' . $student_id;
|
|
|
+ FROM ' . $tbl_session_course_user . ' as session_course_user
|
|
|
+ INNER JOIN ' . $tbl_session_course . ' as session_course
|
|
|
+ ON session_course.c_id = session_course_user.c_id
|
|
|
+ INNER JOIN ' . $tbl_session . ' as session
|
|
|
+ ON session.id = session_course.session_id
|
|
|
+ AND session.id_coach = ' . $coach_id . '
|
|
|
+ WHERE user_id = ' . $student_id;
|
|
|
$result = Database::query($sql);
|
|
|
if (Database::num_rows($result) > 0) {
|
|
|
return true;
|
|
@@ -2860,6 +2870,7 @@ class Tracking
|
|
|
INNER JOIN '.$tbl_course.' c
|
|
|
ON (c.id = sc.c_id)
|
|
|
WHERE user_id = ' . $coach_id.' AND status = 2';
|
|
|
+
|
|
|
if (api_is_multiple_url_enabled()) {
|
|
|
$access_url_id = api_get_current_access_url_id();
|
|
|
if ($access_url_id != -1){
|
|
@@ -2982,7 +2993,11 @@ class Tracking
|
|
|
$sql = "
|
|
|
$select
|
|
|
(
|
|
|
- SELECT DISTINCT id, name, date_start, date_end
|
|
|
+ SELECT DISTINCT
|
|
|
+ id,
|
|
|
+ name,
|
|
|
+ date_start,
|
|
|
+ date_end
|
|
|
FROM $tbl_session session INNER JOIN $tbl_session_rel_access_url session_rel_url
|
|
|
ON (session.id = session_rel_url.session_id)
|
|
|
WHERE
|
|
@@ -2990,12 +3005,16 @@ class Tracking
|
|
|
access_url_id = $access_url_id
|
|
|
$keywordCondition
|
|
|
UNION
|
|
|
- SELECT DISTINCT session.id, session.name, session.date_start, session.date_end
|
|
|
+ SELECT DISTINCT
|
|
|
+ session.id,
|
|
|
+ session.name,
|
|
|
+ session.date_start,
|
|
|
+ session.date_end
|
|
|
FROM $tbl_session as session
|
|
|
INNER JOIN $tbl_session_course_user as session_course_user
|
|
|
ON session.id = session_course_user.session_id AND
|
|
|
- session_course_user.user_id= $coach_id AND
|
|
|
- session_course_user.status=2
|
|
|
+ session_course_user.user_id = $coach_id AND
|
|
|
+ session_course_user.status = 2
|
|
|
INNER JOIN $tbl_session_rel_access_url session_rel_url
|
|
|
ON (session.id = session_rel_url.session_id)
|
|
|
WHERE
|
|
@@ -3010,12 +3029,13 @@ class Tracking
|
|
|
return $row['count'];
|
|
|
}
|
|
|
|
|
|
+ $sessions = [];
|
|
|
while ($row = Database::fetch_array($rs)) {
|
|
|
- $a_sessions[$row["id"]] = $row;
|
|
|
+ $sessions[$row['id']] = $row;
|
|
|
}
|
|
|
|
|
|
- if (is_array($a_sessions)) {
|
|
|
- foreach ($a_sessions as & $session) {
|
|
|
+ if (!empty($sessions)) {
|
|
|
+ foreach ($sessions as & $session) {
|
|
|
if ($session['date_start'] == '0000-00-00') {
|
|
|
$session['status'] = get_lang('SessionActive');
|
|
|
}
|
|
@@ -3039,7 +3059,7 @@ class Tracking
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return $a_sessions;
|
|
|
+ return $sessions;
|
|
|
}
|
|
|
|
|
|
/**
|