Tracking: Fix users count - refs #3002

pull/4334/merge
Yannick Warnier 3 years ago
parent aba2eeaa92
commit 446a54017c
  1. 25
      public/main/inc/lib/statistics.lib.php

@ -133,8 +133,9 @@ class Statistics
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$tblCourseRelCategory = Database::get_main_table(TABLE_MAIN_COURSE_REL_CATEGORY);
$urlId = api_get_current_access_url_id();
$active_filter = $onlyActive ? ' AND active=1' : '';
$active_filter = $onlyActive ? ' AND active = 1' : '';
$status_filter = isset($status) ? ' AND status = '.intval($status) : '';
if (api_is_multiple_url_enabled()) {
@ -142,31 +143,35 @@ class Statistics
FROM $user_table as u, $access_url_rel_user_table as url
WHERE
u.id = url.user_id AND
access_url_id = '".$urlId."'
access_url_id = $urlId
$status_filter $active_filter";
if (isset($categoryCode)) {
$categoryCode = Database::escape_string($categoryCode);
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url
INNER JOIN $tblCourseCategory course_category ON c.category_id = course_category.id
FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url, $tblCourseRelCategory crc, $tblCourseCategory cc
WHERE
c.id = cu.c_id AND
course_category.code = '".Database::escape_string($categoryCode)."' AND
cc.code = '$categoryCode' AND
crc.course_category_id = cc.id AND
crc.course_id = c.id AND
cu.user_id = url.user_id AND
access_url_id='".$urlId."'
access_url_id = $urlId
$status_filter $active_filter";
}
} else {
$sql = "SELECT COUNT(DISTINCT(id)) AS number
FROM $user_table
WHERE 1=1 $status_filter $active_filter";
WHERE 1 = 1 $status_filter $active_filter";
if (isset($categoryCode)) {
$categoryCode = Database::escape_string($categoryCode);
$status_filter = isset($status) ? ' AND status = '.intval($status) : '';
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
FROM $course_user_table cu, $course_table c
INNER JOIN $tblCourseCategory course_category ON c.category_id = course_category.id
FROM $course_user_table cu, $course_table c, $tblCourseRelCategory crc, $tblCourseCategory cc
WHERE
c.id = cu.c_id AND
course_category.code = '".Database::escape_string($categoryCode)."'
cc.code = '$categoryCode' AND
crc.course_category_id = cc.id AND
crc.course_id = c.id AND
$status_filter
$active_filter
";

Loading…
Cancel
Save