|
|
|
|
@ -723,7 +723,23 @@ class SessionManager |
|
|
|
|
$inject_joins .= " INNER JOIN $table sc ON (sc.session_id = s.id) |
|
|
|
|
INNER JOIN $tableCourse c ON (sc.c_id = c.id)"; |
|
|
|
|
$language = Database::escape_string($language); |
|
|
|
|
$where .= " AND c.course_language = '$language' "; |
|
|
|
|
|
|
|
|
|
if (true === api_get_configuration_value('allow_course_multiple_languages')) { |
|
|
|
|
$tblExtraField = Database::get_main_table(TABLE_EXTRA_FIELD); |
|
|
|
|
$tblExtraFieldValue = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES); |
|
|
|
|
$extraFieldType = ExtraField::COURSE_FIELD_TYPE; |
|
|
|
|
$sql = "SELECT id FROM $tblExtraField WHERE extra_field_type = $extraFieldType AND variable = 'multiple_language'"; |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
if (Database::num_rows($rs) > 0) { |
|
|
|
|
$fieldId = Database::result($rs, 0, 0); |
|
|
|
|
$inject_joins .= " INNER JOIN $tblExtraFieldValue cfv ON (c.id = cfv.item_id AND cfv.field_id = $fieldId)"; |
|
|
|
|
$where .= " AND (c.course_language = '$language' OR cfv.value LIKE '%$language%')"; |
|
|
|
|
} else { |
|
|
|
|
$where .= " AND c.course_language = '$language' "; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$where .= " AND c.course_language = '$language' "; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$query = "$select FROM $tbl_session s $inject_joins $where $inject_where"; |
|
|
|
|
@ -787,6 +803,12 @@ class SessionManager |
|
|
|
|
null, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
$usersLang = self::getCountUsersLangBySession($session['id']); |
|
|
|
|
$tooltipUserLangs = ''; |
|
|
|
|
if (!empty($usersLang)) { |
|
|
|
|
$tooltipUserLangs = implode(' | ', $usersLang); |
|
|
|
|
} |
|
|
|
|
$session['users'] = '<a href="#" title="'.$tooltipUserLangs.'">'.$session['users'].'</a>'; |
|
|
|
|
$courses = self::getCoursesInSession($session_id); |
|
|
|
|
$teachers = ''; |
|
|
|
|
foreach ($courses as $courseId) { |
|
|
|
|
@ -4541,6 +4563,55 @@ class SessionManager |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get the count of users by language and session |
|
|
|
|
* |
|
|
|
|
* @param $sid |
|
|
|
|
* @param int $urlId |
|
|
|
|
* @param null $status |
|
|
|
|
* |
|
|
|
|
* @return array A list of ISO lang of users registered in the session , ex: FR 6 |
|
|
|
|
*/ |
|
|
|
|
public static function getCountUsersLangBySession( |
|
|
|
|
$sid, |
|
|
|
|
$urlId = 0, |
|
|
|
|
$status = null |
|
|
|
|
) { |
|
|
|
|
|
|
|
|
|
$sid = (int) $sid; |
|
|
|
|
$urlId = empty($urlId) ? api_get_current_access_url_id() : (int) $urlId; |
|
|
|
|
|
|
|
|
|
$tblUser = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
|
$tblSessionUser = Database::get_main_table(TABLE_MAIN_SESSION_USER); |
|
|
|
|
$tableAccessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); |
|
|
|
|
$tableLanguage = Database::get_main_table(TABLE_MAIN_LANGUAGE); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT l.isocode, count(u.user_id) as cLang |
|
|
|
|
FROM $tblSessionUser su |
|
|
|
|
INNER JOIN $tblUser u ON (u.user_id = su.user_id) |
|
|
|
|
INNER JOIN $tableLanguage l ON (l.dokeos_folder = u.language) |
|
|
|
|
LEFT OUTER JOIN $tableAccessUrlUser au ON (au.user_id = u.user_id) |
|
|
|
|
"; |
|
|
|
|
|
|
|
|
|
if (is_numeric($status)) { |
|
|
|
|
$status = (int) $status; |
|
|
|
|
$sql .= " WHERE su.relation_type = $status AND (au.access_url_id = $urlId OR au.access_url_id is null)"; |
|
|
|
|
} else { |
|
|
|
|
$sql .= " WHERE (au.access_url_id = $urlId OR au.access_url_id is null )"; |
|
|
|
|
} |
|
|
|
|
$sql .= " AND su.session_id = $sid GROUP BY l.isocode"; |
|
|
|
|
|
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
$usersLang = []; |
|
|
|
|
if (Database::num_rows($rs) > 0) { |
|
|
|
|
while ($row = Database::fetch_assoc($rs)) { |
|
|
|
|
$usersLang[] = strtoupper($row['isocode'])." ".$row['cLang']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $usersLang; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get users by session. |
|
|
|
|
* |
|
|
|
|
|