Improve code legibility in function getInactiveStudentsInCourse

pull/2487/head
jmontoyaa 8 years ago
parent bf076cd88f
commit 6abdfc3eaa
  1. 6
      main/announcements/announcements.php
  2. 72
      main/inc/lib/tracking.lib.php

@ -398,12 +398,14 @@ switch ($action) {
// we want to remind inactive users. The $_GET['since'] parameter
// determines which users have to be warned (i.e the users who have been inactive for x days or more
$since = isset($_GET['since']) ? intval($_GET['since']) : 6;
// getting the users who have to be reminded
$to = Tracking:: getInactiveStudentsInCourse(
// Getting the users who have to be reminded
$to = Tracking::getInactiveStudentsInCourse(
api_get_course_int_id(),
$since,
$sessionId
);
// setting the variables for the form elements: the users who need to receive the message
foreach ($to as &$user) {
$user = 'USER:'.$user;

@ -4068,48 +4068,29 @@ class Tracking
/**
* Get inactive students in course
* @param int $courseId
* @param string $since Since login course date (optional, default = 'never')
* @param int $session_id (optional)
* @return array Inactive users
* @param int $courseId
* @param string|int $since Since login course date (optional, default = 'never')
* @param int $session_id (optional)
* @return array Inactive users
*/
public static function getInactiveStudentsInCourse($courseId, $since = 'never', $session_id = 0)
{
public static function getInactiveStudentsInCourse(
$courseId,
$since = 'never',
$session_id = 0
) {
$tbl_track_login = Database::get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
$now = api_get_utc_datetime();
$courseId = intval($courseId);
$courseId = (int) $courseId;
$session_id = (int) $session_id;
if (empty($courseId)) {
return false;
}
if (empty($session_id)) {
$inner = '
INNER JOIN '.$table_course_rel_user.' course_user
ON course_user.user_id = stats_login.user_id AND course_user.c_id = c.id
';
} else {
$inner = '
INNER JOIN '.$tbl_session_course_user.' session_course_user
ON
c.id = session_course_user.c_id AND
session_course_user.session_id = '.intval($session_id).' AND
session_course_user.user_id = stats_login.user_id ';
}
$sql = 'SELECT stats_login.user_id, MAX(login_course_date) max_date
FROM '.$tbl_track_login.' stats_login
INNER JOIN '.$tableCourse.' c
ON (c.id = stats_login.c_id)
'.$inner.'
WHERE c.id = '.$courseId.'
GROUP BY stats_login.user_id
HAVING DATE_SUB( "' . $now.'", INTERVAL '.$since.' DAY) > max_date ';
if ($since == 'never') {
if ($since === 'never') {
if (empty($session_id)) {
$sql = 'SELECT course_user.user_id
FROM ' . $table_course_rel_user.' course_user
@ -4134,15 +4115,38 @@ class Tracking
stats_login.login_course_date IS NULL
GROUP BY session_course_user.user_id';
}
} else {
$since = (int) $since;
if (empty($session_id)) {
$inner = 'INNER JOIN '.$table_course_rel_user.' course_user
ON course_user.user_id = stats_login.user_id AND course_user.c_id = c.id ';
} else {
$inner = 'INNER JOIN '.$tbl_session_course_user.' session_course_user
ON
c.id = session_course_user.c_id AND
session_course_user.session_id = '.$session_id.' AND
session_course_user.user_id = stats_login.user_id ';
}
$sql = 'SELECT
stats_login.user_id,
MAX(login_course_date) max_date
FROM '.$tbl_track_login.' stats_login
INNER JOIN '.$tableCourse.' c
ON (c.id = stats_login.c_id)
'.$inner.'
WHERE c.id = '.$courseId.'
GROUP BY stats_login.user_id
HAVING DATE_SUB("'.$now.'", INTERVAL '.$since.' DAY) > max_date ';
}
$rs = Database::query($sql);
$inactive_users = array();
$users = [];
while ($user = Database::fetch_array($rs)) {
$inactive_users[] = $user['user_id'];
$users[] = $user['user_id'];
}
return $inactive_users;
return $users;
}
/**

Loading…
Cancel
Save