Multi url disabled (#5678)

* Display: Fix styles for toast

* Internal: Remove api_is_multiple_url_enabled
pull/5682/head
Angel Fernando Quiroz Campos 1 year ago committed by GitHub
parent f534c73420
commit 28463ab582
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      .env.dist
  2. 10
      assets/css/scss/atoms/_toast.scss
  3. 21
      public/main/admin/course_edit.php
  4. 20
      public/main/admin/course_information.php
  5. 8
      public/main/admin/course_list.php
  6. 13
      public/main/admin/course_list_admin.php
  7. 45
      public/main/admin/dashboard_add_courses_to_user.php
  8. 37
      public/main/admin/dashboard_add_sessions_to_user.php
  9. 66
      public/main/admin/dashboard_add_users_to_user.php
  10. 20
      public/main/admin/settings.php
  11. 79
      public/main/admin/subscribe_user2course.php
  12. 43
      public/main/admin/user_export.php
  13. 48
      public/main/admin/user_information.php
  14. 15
      public/main/inc/ajax/admin.ajax.php
  15. 211
      public/main/inc/lib/CoursesAndSessionsCatalog.class.php
  16. 37
      public/main/inc/lib/api.lib.php
  17. 65
      public/main/inc/lib/course.lib.php
  18. 23
      public/main/inc/lib/login.lib.php
  19. 88
      public/main/inc/lib/myspace.lib.php
  20. 36
      public/main/inc/lib/online.inc.php
  21. 17
      public/main/inc/lib/redirect.class.php
  22. 370
      public/main/inc/lib/sessionmanager.lib.php
  23. 345
      public/main/inc/lib/statistics.lib.php
  24. 217
      public/main/inc/lib/tracking.lib.php
  25. 87
      public/main/inc/lib/usermanager.lib.php
  26. 101
      public/main/inc/lib/userportal.lib.php
  27. 40
      public/main/inc/lib/webservices/Rest.php
  28. 33
      public/main/inc/lib/zombie/zombie_manager.class.php
  29. 25
      public/main/my_space/session_filter.php
  30. 11
      public/main/my_space/user_edit.php
  31. 213
      public/main/session/add_edit_users_to_session.php
  32. 238
      public/main/session/add_users_to_session_course.php
  33. 18
      public/main/session/resume_session.php
  34. 41
      public/main/session/session_add.php
  35. 31
      public/main/session/session_course_edit.php
  36. 66
      public/main/session/session_export.php
  37. 9
      public/main/session/session_import.php
  38. 196
      public/main/user/add_users_to_session.php
  39. 240
      public/main/user/subscribe_user.php
  40. 28
      public/main/user/user.php
  41. 36
      public/main/user/user_export.php
  42. 26
      public/plugin/customcertificate/src/export_pdf_all_in_one.php
  43. 18
      src/CoreBundle/EventListener/LegacyListener.php
  44. 61
      src/CoreBundle/Repository/Node/UsergroupRepository.php
  45. 17
      src/CoreBundle/ServiceHelper/AccessUrlHelper.php
  46. 13
      tests/scripts/synchronize_user_base_from_ldap.php

@ -33,8 +33,6 @@ APP_LOCALE='en_US'
APP_CUSTOM_VUE_TEMPLATE='0' APP_CUSTOM_VUE_TEMPLATE='0'
APP_MULTIPLE_ACCESS_URL=''
GOOGLE_MAPS_API_KEY='' GOOGLE_MAPS_API_KEY=''
#APP_API_PLATFORM_URL='http://localhost/api/' #deprecated #APP_API_PLATFORM_URL='http://localhost/api/' #deprecated

@ -1,5 +1,5 @@
.p-toast { .p-toast {
@apply whitespace-pre-line break-words opacity-90 w-96; @apply whitespace-pre-line break-words opacity-90 min-w-96;
&.p-toast-top-center, &.p-toast-bottom-center { &.p-toast-top-center, &.p-toast-bottom-center {
@apply -translate-x-1/2; @apply -translate-x-1/2;
@ -52,7 +52,7 @@
@apply bg-warning text-gray-90 border-0; @apply bg-warning text-gray-90 border-0;
.p-toast-message-icon, .p-toast-icon-close { .p-toast-message-icon, .p-toast-icon-close {
@apply bg-gray-90; @apply text-gray-90;
} }
} }
@ -65,14 +65,14 @@
} }
.p-toast-message-content { .p-toast-message-content {
@apply flex items-center p-4 border-0; @apply flex items-start p-4 border-0;
.p-toast-message-text { .p-toast-message-text {
@apply flex-auto m-0 ml-4; @apply flex-auto m-0 ml-4 self-center;
} }
.p-toast-message-icon { .p-toast-message-icon {
@apply shrink-0 text-body-1; @apply shrink-0 text-2xl;
&.p-icon { &.p-icon {
@apply w-8 h-8; @apply w-8 h-8;

@ -59,19 +59,14 @@ while ($obj = Database::fetch_object($res)) {
} }
// Get all possible teachers without the course teachers // Get all possible teachers without the course teachers
if (api_is_multiple_url_enabled()) { $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $sql = "SELECT u.id as user_id,lastname,firstname
$sql = "SELECT u.id as user_id,lastname,firstname FROM $table_user as u
FROM $table_user as u INNER JOIN $access_url_rel_user_table url_rel_user
INNER JOIN $access_url_rel_user_table url_rel_user ON (u.id=url_rel_user.user_id)
ON (u.id=url_rel_user.user_id) WHERE
WHERE url_rel_user.access_url_id = $urlId AND
url_rel_user.access_url_id = $urlId AND status = 1".$order_clause;
status = 1".$order_clause;
} else {
$sql = "SELECT id as user_id, lastname, firstname
FROM $table_user WHERE status='1'".$order_clause;
}
$courseInfo['tutor_name'] = null; $courseInfo['tutor_name'] = null;
$res = Database::query($sql); $res = Database::query($sql);

@ -138,17 +138,15 @@ echo Display::page_header(get_lang('Users'));
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); $table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$table_user = Database::get_main_table(TABLE_MAIN_USER); $table_user = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT *, cu.status as course_status $sql = "SELECT *, cu.status as course_status
FROM $table_course_user cu, $table_user u"; FROM $table_course_user cu, $table_user u
if (api_is_multiple_url_enabled()) { INNER JOIN ".Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER)." url_rel_user
$sql .= " INNER JOIN ".Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER)." url_rel_user ON
ON u.id = url_rel_user.user_id AND
u.id = url_rel_user.user_id AND url_rel_user.access_url_id = ".api_get_current_access_url_id()."
url_rel_user.access_url_id = ".api_get_current_access_url_id(); WHERE
} cu.user_id = u.id AND
$sql .= " WHERE cu.c_id = '".$courseId."' AND
cu.user_id = u.id AND cu.relation_type <> ".COURSE_RELATION_TYPE_RRHH;
cu.c_id = '".$courseId."' AND
cu.relation_type <> ".COURSE_RELATION_TYPE_RRHH;
$res = Database::query($sql); $res = Database::query($sql);
$is_western_name_order = api_is_western_name_order(); $is_western_name_order = api_is_western_name_order();
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {

@ -80,9 +80,7 @@ function get_course_data($from, $number_of_items, $column, $direction, $dataFunc
INNER JOIN $tblCourseCategory category ON course_rel_category.course_category_id = category.id "; INNER JOIN $tblCourseCategory category ON course_rel_category.course_category_id = category.id ";
} }
if ((api_is_platform_admin() || api_is_session_admin()) && if ((api_is_platform_admin() || api_is_session_admin())) {
api_is_multiple_url_enabled() && -1 != api_get_current_access_url_id()
) {
$access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql .= " INNER JOIN $access_url_rel_course_table url_rel_course $sql .= " INNER JOIN $access_url_rel_course_table url_rel_course
ON (course.id = url_rel_course.c_id)"; ON (course.id = url_rel_course.c_id)";
@ -121,9 +119,7 @@ function get_course_data($from, $number_of_items, $column, $direction, $dataFunc
} }
// Adding the filter to see the user's only of the current access_url. // Adding the filter to see the user's only of the current access_url.
if ((api_is_platform_admin() || api_is_session_admin()) && if ((api_is_platform_admin() || api_is_session_admin())) {
api_is_multiple_url_enabled() && -1 != api_get_current_access_url_id()
) {
$sql .= ' AND url_rel_course.access_url_id='.api_get_current_access_url_id(); $sql .= ' AND url_rel_course.access_url_id='.api_get_current_access_url_id();
} }

@ -73,11 +73,10 @@ function get_course_data($from, $number_of_items, $column, $direction, $dataFunc
} }
$sql = "$select FROM $table course"; $sql = "$select FROM $table course";
if (api_is_multiple_url_enabled()) {
$access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql .= " INNER JOIN $access_url_rel_course_table url_rel_course $sql .= " INNER JOIN $access_url_rel_course_table url_rel_course
ON (course.id = url_rel_course.c_id)"; ON (course.id = url_rel_course.c_id)";
}
$tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); $tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$sql .= " $sql .= "
@ -119,9 +118,7 @@ function get_course_data($from, $number_of_items, $column, $direction, $dataFunc
} }
// Adding the filter to see the user's only of the current access_url. // Adding the filter to see the user's only of the current access_url.
if (api_is_multiple_url_enabled()) { $sql .= " AND url_rel_course.access_url_id = ".api_get_current_access_url_id();
$sql .= " AND url_rel_course.access_url_id = ".api_get_current_access_url_id();
}
if ($addTeacherColumn) { if ($addTeacherColumn) {
$teachers = isset($_GET['course_teachers']) ? $_GET['course_teachers'] : []; $teachers = isset($_GET['course_teachers']) ? $_GET['course_teachers'] : [];

@ -76,21 +76,13 @@ function search_courses($needle, $type)
$without_assigned_courses = ' AND c.code NOT IN('.implode(',', $assigned_courses_code).')'; $without_assigned_courses = ' AND c.code NOT IN('.implode(',', $assigned_courses_code).')';
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT c.code, c.title
$sql = "SELECT c.code, c.title FROM $tbl_course c
FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a
LEFT JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id)
ON (a.c_id = c.id) WHERE
WHERE c.code LIKE '$needle%' $without_assigned_courses AND
c.code LIKE '$needle%' $without_assigned_courses AND access_url_id = ".api_get_current_access_url_id();
access_url_id = ".api_get_current_access_url_id();
} else {
$sql = "SELECT c.code, c.title
FROM $tbl_course c
WHERE
c.code LIKE '$needle%'
$without_assigned_courses ";
}
$rs = Database::query($sql); $rs = Database::query($sql);
@ -205,21 +197,14 @@ if (isset($_POST['firstLetterCourse'])) {
$needle = Database::escape_string($firstLetter.'%'); $needle = Database::escape_string($firstLetter.'%');
} }
if (api_is_multiple_url_enabled()) { $sql = " SELECT c.code, c.title
$sql = " SELECT c.code, c.title FROM $tbl_course c
FROM $tbl_course c LEFT JOIN $tbl_course_rel_access_url a
LEFT JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id)
ON (a.c_id = c.id) WHERE
WHERE c.code LIKE '$needle' $without_assigned_courses AND
c.code LIKE '$needle' $without_assigned_courses AND access_url_id = ".api_get_current_access_url_id().'
access_url_id = ".api_get_current_access_url_id().' ORDER BY c.title';
ORDER BY c.title';
} else {
$sql = " SELECT c.code, c.title
FROM $tbl_course c
WHERE c.code LIKE '$needle' $without_assigned_courses
ORDER BY c.title";
}
$result = Database::query($sql); $result = Database::query($sql);

@ -74,17 +74,12 @@ function search_sessions($needle, $type)
$without_assigned_sessions = ' AND s.id NOT IN('.implode(',', $assigned_sessions_id).')'; $without_assigned_sessions = ' AND s.id NOT IN('.implode(',', $assigned_sessions_id).')';
} }
if (api_is_multiple_url_enabled()) { $sql = " SELECT s.id, s.title FROM $tbl_session s
$sql = " SELECT s.id, s.title FROM $tbl_session s LEFT JOIN $tbl_session_rel_access_url a
LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id)
ON (s.id = a.session_id) WHERE
WHERE s.title LIKE '$needle%' $without_assigned_sessions AND
s.title LIKE '$needle%' $without_assigned_sessions AND access_url_id = ".api_get_current_access_url_id();
access_url_id = ".api_get_current_access_url_id();
} else {
$sql = "SELECT s.id, s.title FROM $tbl_session s
WHERE s.title LIKE '$needle%' $without_assigned_sessions ";
}
$rs = Database::query($sql); $rs = Database::query($sql);
$return .= '<select class="form-control" id="origin" name="NoAssignedSessionsList[]" multiple="multiple" size="20">'; $return .= '<select class="form-control" id="origin" name="NoAssignedSessionsList[]" multiple="multiple" size="20">';
while ($session = Database :: fetch_array($rs)) { while ($session = Database :: fetch_array($rs)) {
@ -204,19 +199,13 @@ if (!empty($firstLetterSession)) {
$needle = Database::escape_string($firstLetterSession.'%'); $needle = Database::escape_string($firstLetterSession.'%');
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT s.id, s.title
$sql = "SELECT s.id, s.title FROM $tbl_session s
FROM $tbl_session s LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id)
LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id) WHERE
WHERE s.title LIKE '$needle%' $without_assigned_sessions AND
s.title LIKE '$needle%' $without_assigned_sessions AND access_url_id = ".api_get_current_access_url_id().'
access_url_id = ".api_get_current_access_url_id().' ORDER BY s.title';
ORDER BY s.title';
} else {
$sql = "SELECT s.id, s.title FROM $tbl_session s
WHERE s.title LIKE '$needle%' $without_assigned_sessions
ORDER BY s.title";
}
$result = Database::query($sql); $result = Database::query($sql);
?> ?>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?user=<?php echo $user_id; ?>" style="margin:0px;" <?php if ($ajax_search) { <form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?user=<?php echo $user_id; ?>" style="margin:0px;" <?php if ($ajax_search) {

@ -99,29 +99,17 @@ function search_users($needle, $type = 'multiple')
$without_assigned_users = ' AND user.id NOT IN('.implode(',', $assigned_users_id).')'; $without_assigned_users = ' AND user.id NOT IN('.implode(',', $assigned_users_id).')';
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT user.id as user_id, username, lastname, firstname
$sql = "SELECT user.id as user_id, username, lastname, firstname FROM $tbl_user user
FROM $tbl_user user LEFT JOIN $tbl_access_url_rel_user au ON (au.user_id = user.id)
LEFT JOIN $tbl_access_url_rel_user au ON (au.user_id = user.id) WHERE user.active <> ".USER_SOFT_DELETED." AND
WHERE user.active <> ".USER_SOFT_DELETED." AND ".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND status NOT IN(".DRH.', '.SESSIONADMIN.', '.STUDENT_BOSS.") AND
status NOT IN(".DRH.', '.SESSIONADMIN.', '.STUDENT_BOSS.") AND user.id NOT IN ($user_anonymous, $current_user_id, $user_id)
user.id NOT IN ($user_anonymous, $current_user_id, $user_id) $without_assigned_users AND
$without_assigned_users AND access_url_id = ".api_get_current_access_url_id()."
access_url_id = ".api_get_current_access_url_id()." $order_clause
$order_clause
";
} else {
$sql = "SELECT id as user_id, username, lastname, firstname
FROM $tbl_user user
WHERE user.active <> ".USER_SOFT_DELETED." AND
".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
status NOT IN(".DRH.', '.SESSIONADMIN.', '.STUDENT_BOSS.") AND
id NOT IN ($user_anonymous, $current_user_id, $user_id)
$without_assigned_users
$order_clause
"; ";
}
$rs = Database::query($sql); $rs = Database::query($sql);
$xajax_response->addAssign('ajax_list_users_multiple', 'innerHTML', api_utf8_encode($return)); $xajax_response->addAssign('ajax_list_users_multiple', 'innerHTML', api_utf8_encode($return));
@ -395,29 +383,17 @@ if (!empty($conditions)) {
} }
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT user.id as user_id, username, lastname, firstname
$sql = "SELECT user.id as user_id, username, lastname, firstname FROM $tbl_user user
FROM $tbl_user user LEFT JOIN $tbl_access_url_rel_user au
LEFT JOIN $tbl_access_url_rel_user au ON (au.user_id = user.id)
ON (au.user_id = user.id) WHERE user.active <> ".USER_SOFT_DELETED." AND
WHERE user.active <> ".USER_SOFT_DELETED." AND $without_assigned_users
$without_assigned_users user.id NOT IN ($user_anonymous, $current_user_id, $user_id) AND
user.id NOT IN ($user_anonymous, $current_user_id, $user_id) AND status NOT IN(".DRH.', '.SESSIONADMIN.', '.ANONYMOUS.") $search_user AND
status NOT IN(".DRH.', '.SESSIONADMIN.', '.ANONYMOUS.") $search_user AND access_url_id = ".api_get_current_access_url_id()."
access_url_id = ".api_get_current_access_url_id()." $sqlConditions
$sqlConditions ORDER BY firstname";
ORDER BY firstname";
} else {
$sql = "SELECT id as user_id, username, lastname, firstname
FROM $tbl_user user
WHERE user.active <> -1 AND
$without_assigned_users
id NOT IN ($user_anonymous, $current_user_id, $user_id) AND
status NOT IN(".DRH.', '.SESSIONADMIN.', '.ANONYMOUS.")
$search_user
$sqlConditions
ORDER BY firstname ";
}
$result = Database::query($sql); $result = Database::query($sql);
?> ?>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?user=<?php echo $user_id; ?>" class="form-horizontal" <?php if ($ajax_search) { <form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?user=<?php echo $user_id; ?>" class="form-horizontal" <?php if ($ajax_search) {

@ -71,18 +71,16 @@ if (!empty($_GET['category']) &&
$mark_all = false; $mark_all = false;
$un_mark_all = false; $un_mark_all = false;
if (api_is_multiple_url_enabled()) { if (isset($values['buttons_in_action_right']) &&
if (isset($values['buttons_in_action_right']) && isset($values['buttons_in_action_right']['mark_all'])
isset($values['buttons_in_action_right']['mark_all']) ) {
) { $mark_all = true;
$mark_all = true; }
}
if (isset($values['buttons_in_action_right']) && if (isset($values['buttons_in_action_right']) &&
isset($values['buttons_in_action_right']['unmark_all']) isset($values['buttons_in_action_right']['unmark_all'])
) { ) {
$un_mark_all = true; $un_mark_all = true;
}
} }
if ($mark_all || $un_mark_all) { if ($mark_all || $un_mark_all) {

@ -179,20 +179,11 @@ if ($use_extra_fields) {
$final_result = $extra_field_result[0]; $final_result = $extra_field_result[0];
} }
if (api_is_multiple_url_enabled()) { if (is_array($final_result) && count($final_result) > 0) {
if (is_array($final_result) && count($final_result) > 0) { $where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
$where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
} else {
//no results
$where_filter = " AND u.id = -1";
}
} else { } else {
if (is_array($final_result) && count($final_result) > 0) { //no results
$where_filter = " AND id IN ('".implode("','", $final_result)."') "; $where_filter = " AND u.id = -1";
} else {
//no results
$where_filter = " AND id = -1";
}
} }
} }
@ -205,51 +196,33 @@ if ('true' === $orderListByOfficialCode) {
$orderBy = " official_code, lastname, firstname"; $orderBy = " official_code, lastname, firstname";
} }
$sql = "SELECT id as user_id, lastname, firstname, username, official_code $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
FROM $tbl_user $access_url_id = api_get_current_access_url_id();
WHERE id <>2 AND ".$target_name." LIKE '".$first_letter_user."%' $where_filter $sql = "SELECT u.id as user_id,lastname,firstname,username, official_code
ORDER BY ".(count($users) > 0 ? "(id IN(".implode(',', $users).")) DESC," : "")." ".$orderBy; FROM $tbl_user u
INNER JOIN $tbl_user_rel_access_url user_rel_url
if (api_is_multiple_url_enabled()) { ON (user_rel_url.user_id = u.id)
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); WHERE
$access_url_id = api_get_current_access_url_id(); u.id <> 2 AND
if (-1 != $access_url_id) { access_url_id = $access_url_id AND
$sql = "SELECT u.id as user_id,lastname,firstname,username, official_code (".$target_name." LIKE '".$first_letter_user."%' )
FROM $tbl_user u $where_filter
INNER JOIN $tbl_user_rel_access_url user_rel_url ORDER BY ".(count($users) > 0 ? "(u.id IN(".implode(',', $users).")) DESC," : "")." ".$orderBy;
ON (user_rel_url.user_id = u.id)
WHERE
u.id <> 2 AND
access_url_id = $access_url_id AND
(".$target_name." LIKE '".$first_letter_user."%' )
$where_filter
ORDER BY ".(count($users) > 0 ? "(u.id IN(".implode(',', $users).")) DESC," : "")." ".$orderBy;
}
}
$result = Database::query($sql); $result = Database::query($sql);
$db_users = Database::store_result($result); $db_users = Database::store_result($result);
unset($result); unset($result);
$sql = "SELECT code,visual_code,title $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
FROM $tbl_course $access_url_id = api_get_current_access_url_id();
WHERE visual_code LIKE '".$first_letter_course."%' $sql = "SELECT code, visual_code, title
ORDER BY ".(count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code"; FROM $tbl_course as course
INNER JOIN $tbl_course_rel_access_url course_rel_url
if (api_is_multiple_url_enabled()) { ON (course_rel_url.c_id = course.id)
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); WHERE
$access_url_id = api_get_current_access_url_id(); access_url_id = $access_url_id AND
if (-1 != $access_url_id) { (visual_code LIKE '".$first_letter_course."%' )
$sql = "SELECT code, visual_code, title ORDER BY ".(count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code";
FROM $tbl_course as course
INNER JOIN $tbl_course_rel_access_url course_rel_url
ON (course_rel_url.c_id = course.id)
WHERE
access_url_id = $access_url_id AND
(visual_code LIKE '".$first_letter_course."%' )
ORDER BY ".(count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$db_courses = Database::store_result($result); $db_courses = Database::store_result($result);

@ -26,20 +26,15 @@ $coursesSessions = array_merge($coursesSessions, $allCoursesFromSessions);
$courses = []; $courses = [];
$courses[''] = '--'; $courses[''] = '--';
$sql = "SELECT code,visual_code,title FROM $course_table ORDER BY visual_code";
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (api_is_multiple_url_enabled()) { $access_url_id = api_get_current_access_url_id();
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $sql = "SELECT code,visual_code,title
$access_url_id = api_get_current_access_url_id(); FROM $course_table as c
if (-1 != $access_url_id) { INNER JOIN $tbl_course_rel_access_url as course_rel_url
$sql = "SELECT code,visual_code,title ON (c.id = course_rel_url.c_id)
FROM $course_table as c WHERE access_url_id = $access_url_id
INNER JOIN $tbl_course_rel_access_url as course_rel_url ORDER BY visual_code";
ON (c.id = course_rel_url.c_id)
WHERE access_url_id = $access_url_id
ORDER BY visual_code";
}
}
$result = Database::query($sql); $result = Database::query($sql);
while ($course = Database::fetch_object($result)) { while ($course = Database::fetch_object($result)) {
$courses[$course->code] = $course->visual_code.' - '.$course->title; $courses[$course->code] = $course->visual_code.' - '.$course->title;
@ -114,19 +109,13 @@ if ($form->validate()) {
ORDER BY lastname,firstname"; ORDER BY lastname,firstname";
$filename = 'export_users_'.$courseSessionCode.'_'.$sessionInfo['name'].'_'.api_get_local_time(); $filename = 'export_users_'.$courseSessionCode.'_'.$sessionInfo['name'].'_'.api_get_local_time();
} else { } else {
if (api_is_multiple_url_enabled()) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $sql .= " FROM $user_table u
if (-1 != $access_url_id) { INNER JOIN $tbl_user_rel_access_url as user_rel_url
$sql .= " FROM $user_table u ON (u.user_id= user_rel_url.user_id)
INNER JOIN $tbl_user_rel_access_url as user_rel_url WHERE access_url_id = $access_url_id
ON (u.user_id= user_rel_url.user_id) ORDER BY lastname,firstname";
WHERE access_url_id = $access_url_id
ORDER BY lastname,firstname";
}
} else {
$sql .= " FROM $user_table u ORDER BY lastname,firstname";
}
$filename = 'export_users_'.api_get_local_time(); $filename = 'export_users_'.api_get_local_time();
} }
$data = []; $data = [];

@ -499,32 +499,30 @@ if (count($courseRelUserList) > 0) {
* Show the URL in which this user is subscribed. * Show the URL in which this user is subscribed.
*/ */
$urlInformation = ''; $urlInformation = '';
if (api_is_multiple_url_enabled()) { $urlList = UrlManager::get_access_url_from_user($userId);
$urlList = UrlManager::get_access_url_from_user($userId); if (count($urlList) > 0) {
if (count($urlList) > 0) { $header = [];
$header = []; $header[] = ['URL', true];
$header[] = ['URL', true]; $data = [];
$data = []; $csvContent[] = [];
$csvContent[] = []; $csvContent[] = ['Url'];
$csvContent[] = ['Url']; foreach ($urlList as $url) {
foreach ($urlList as $url) { $row = [];
$row = []; $row[] = Display::url($url['url'], $url['url']);
$row[] = Display::url($url['url'], $url['url']); $csvContent[] = array_map('strip_tags', $row);
$csvContent[] = array_map('strip_tags', $row); $data[] = $row;
$data[] = $row;
}
$urlInformation = Display::page_subheader(get_lang('URL list'));
$urlInformation .= Display::return_sortable_table(
$header,
$data,
[],
[],
['user_id' => $userId]
);
} else {
$urlInformation = '<p>'.get_lang('This user doesn\'t have a related URL.').'</p>';
} }
$urlInformation = Display::page_subheader(get_lang('URL list'));
$urlInformation .= Display::return_sortable_table(
$header,
$data,
[],
[],
['user_id' => $userId]
);
} else {
$urlInformation = '<p>'.get_lang('This user doesn\'t have a related URL.').'</p>';
} }
if (isset($_GET['action'])) { if (isset($_GET['action'])) {

@ -46,18 +46,13 @@ switch ($action) {
/** @var Filesystem $fileSystem */ /** @var Filesystem $fileSystem */
$fileSystem = Container::$container->get('home_filesystem'); $fileSystem = Container::$container->get('home_filesystem');
$dir = 'admin/';
if (api_is_multiple_url_enabled()) { $accessUrlId = api_get_current_access_url_id();
$accessUrlId = api_get_current_access_url_id();
if (-1 != $accessUrlId) { $urlInfo = api_get_access_url($accessUrlId);
$urlInfo = api_get_access_url($accessUrlId); $url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $urlInfo['url']));
$url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $urlInfo['url'])); $cleanUrl = str_replace('/', '-', $url);
$cleanUrl = str_replace('/', '-', $url); $dir = "$cleanUrl/admin/";
$dir = "$cleanUrl/admin/";
}
}
$filePath = $dir.$blockName.'_extra.html'; $filePath = $dir.$blockName.'_extra.html';

@ -158,10 +158,7 @@ class CoursesAndSessionsCatalog
public static function getCourseCategoriesTree() public static function getCourseCategoriesTree()
{ {
$urlId = 1; $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) {
$urlId = api_get_current_access_url_id();
}
$countCourses = self::countAvailableCoursesToShowInCatalog($urlId); $countCourses = self::countAvailableCoursesToShowInCatalog($urlId);
$categories = []; $categories = [];
@ -254,49 +251,34 @@ class CoursesAndSessionsCatalog
if (!empty($randomValue)) { if (!empty($randomValue)) {
$randomValue = (int) $randomValue; $randomValue = (int) $randomValue;
$sql = "SELECT COUNT(*) FROM $tbl_course"; $urlId = api_get_current_access_url_id();
$result = Database::query($sql); $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
list($num_records) = Database::fetch_row($result);
if (api_is_multiple_url_enabled()) { $urlCondition = ' access_url_id = '.$urlId.' ';
$urlId = api_get_current_access_url_id(); $allowBaseCategories = ('true' === api_get_setting('course.allow_base_course_category'));
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); if ($allowBaseCategories) {
$urlCondition = ' (access_url_id = '.$urlId.' OR access_url_id = 1) ';
}
$urlCondition = ' access_url_id = '.$urlId.' '; $sql = "SELECT COUNT(*)
$allowBaseCategories = ('true' === api_get_setting('course.allow_base_course_category')); FROM $tbl_course course
if ($allowBaseCategories) { INNER JOIN $tbl_url_rel_course as url_rel_course
$urlCondition = ' (access_url_id = '.$urlId.' OR access_url_id = 1) '; ON (url_rel_course.c_id = course.id)
} WHERE access_url_id = $urlId";
$result = Database::query($sql);
list($num_records) = Database::fetch_row($result);
$sql = "SELECT COUNT(*) $sql = "SELECT course.id, course.id as real_id
FROM $tbl_course course FROM $tbl_course course
INNER JOIN $tbl_url_rel_course as url_rel_course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id) ON (url_rel_course.c_id = course.id)
WHERE access_url_id = $urlId"; WHERE
$result = Database::query($sql); $urlCondition AND
list($num_records) = Database::fetch_row($result); RAND()*$num_records< $randomValue
$avoidCoursesCondition
$sql = "SELECT course.id, course.id as real_id $visibilityCondition
FROM $tbl_course course ORDER BY RAND()
INNER JOIN $tbl_url_rel_course as url_rel_course LIMIT 0, $randomValue";
ON (url_rel_course.c_id = course.id)
WHERE
$urlCondition AND
RAND()*$num_records< $randomValue
$avoidCoursesCondition
$visibilityCondition
ORDER BY RAND()
LIMIT 0, $randomValue";
} else {
$sql = "SELECT id, id as real_id
FROM $tbl_course course
WHERE
RAND()*$num_records< $randomValue
$avoidCoursesCondition
$visibilityCondition
ORDER BY RAND()
LIMIT 0, $randomValue";
}
$result = Database::query($sql); $result = Database::query($sql);
$id_in = null; $id_in = null;
@ -330,50 +312,31 @@ class CoursesAndSessionsCatalog
$conditionCode .= " category_code='$categoryCode' "; $conditionCode .= " category_code='$categoryCode' ";
} }
// Showing only the courses of the current Chamilo access_url_id
$urlId = api_get_current_access_url_id();
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$urlCondition = ' access_url_id = '.$urlId.' ';
if (empty($categoryCode) || 'ALL' === $categoryCode) { if (empty($categoryCode) || 'ALL' === $categoryCode) {
$sql = "SELECT *, id as real_id $sql = "SELECT *, course.id real_id
FROM $tbl_course course FROM $tbl_course as course
WHERE INNER JOIN $tbl_url_rel_course as url_rel_course
1=1 ON (url_rel_course.c_id = course.id)
$avoidCoursesCondition WHERE
$visibilityCondition $urlCondition AND
ORDER BY title $limitFilter "; $conditionCode
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter";
} else { } else {
$sql = "SELECT *, id as real_id FROM $tbl_course course $sql = "SELECT *, course.id real_id FROM $tbl_course as course
WHERE INNER JOIN $tbl_url_rel_course as url_rel_course
$conditionCode ON (url_rel_course.c_id = course.id)
$avoidCoursesCondition WHERE
$visibilityCondition $urlCondition
ORDER BY title $limitFilter "; $avoidCoursesCondition
} $visibilityCondition
ORDER BY title $limitFilter";
// Showing only the courses of the current Chamilo access_url_id
if (api_is_multiple_url_enabled()) {
$urlId = api_get_current_access_url_id();
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$urlCondition = ' access_url_id = '.$urlId.' ';
if ('ALL' !== $categoryCode) {
$sql = "SELECT *, course.id real_id
FROM $tbl_course as course
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
WHERE
$urlCondition AND
$conditionCode
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter";
} else {
$sql = "SELECT *, course.id real_id FROM $tbl_course as course
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
WHERE
$urlCondition
$avoidCoursesCondition
$visibilityCondition
ORDER BY title $limitFilter";
}
} }
} }
@ -457,57 +420,35 @@ class CoursesAndSessionsCatalog
$categoryFilter = ' AND category_code = "'.$categoryCode.'" '; $categoryFilter = ' AND category_code = "'.$categoryCode.'" ';
} }
//$sql = "SELECT DISTINCT course.*, $injectExtraFields $urlId = api_get_current_access_url_id();
$sql = "SELECT DISTINCT(course.id) $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
FROM $courseTable course $urlCondition = ' access_url_id = '.$urlId.' AND';
$sqlInjectJoins $allowBaseCategories = ('true' === api_get_setting('course.allow_base_course_category'));
WHERE ( if ($allowBaseCategories) {
course.code LIKE '%".$keyword."%' OR $urlCondition = ' (access_url_id = '.$urlId.' OR access_url_id = 1) AND ';
course.title LIKE '%".$keyword."%' OR
course.tutor_name LIKE '%".$keyword."%'
)
$where
$categoryFilter
$sqlInjectWhere
$avoidCoursesCondition
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
if (api_is_multiple_url_enabled()) {
$urlId = api_get_current_access_url_id();
if (-1 != $urlId) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$urlCondition = ' access_url_id = '.$urlId.' AND';
$allowBaseCategories = ('true' === api_get_setting('course.allow_base_course_category'));
if ($allowBaseCategories) {
$urlCondition = ' (access_url_id = '.$urlId.' OR access_url_id = 1) AND ';
}
$sql = "SELECT DISTINCT(course.id)
FROM $courseTable as course
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
$sqlInjectJoins
WHERE
access_url_id = $urlId AND
(
code LIKE '%".$keyword."%' OR
title LIKE '%".$keyword."%' OR
tutor_name LIKE '%".$keyword."%'
)
$where
$categoryFilter
$sqlInjectWhere
$avoidCoursesCondition
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
}
} }
$sql = "SELECT DISTINCT(course.id)
FROM $courseTable as course
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
$sqlInjectJoins
WHERE
access_url_id = $urlId AND
(
code LIKE '%".$keyword."%' OR
title LIKE '%".$keyword."%' OR
tutor_name LIKE '%".$keyword."%'
)
$where
$categoryFilter
$sqlInjectWhere
$avoidCoursesCondition
$visibilityCondition
ORDER BY title, visual_code ASC
$limitFilter
";
$result = Database::query($sql); $result = Database::query($sql);
$courses = []; $courses = [];
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {

@ -11,6 +11,7 @@ use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Entity\UserCourseCategory; use Chamilo\CoreBundle\Entity\UserCourseCategory;
use Chamilo\CoreBundle\Exception\NotAllowedException; use Chamilo\CoreBundle\Exception\NotAllowedException;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
use Chamilo\CoreBundle\ServiceHelper\MailHelper; use Chamilo\CoreBundle\ServiceHelper\MailHelper;
use Chamilo\CoreBundle\ServiceHelper\PermissionServiceHelper; use Chamilo\CoreBundle\ServiceHelper\PermissionServiceHelper;
use Chamilo\CoreBundle\ServiceHelper\ThemeHelper; use Chamilo\CoreBundle\ServiceHelper\ThemeHelper;
@ -5099,39 +5100,10 @@ function api_request_uri()
* @return int access_url_id of the current Chamilo Installation * @return int access_url_id of the current Chamilo Installation
* *
* @author Julio Montoya <gugli100@gmail.com> * @author Julio Montoya <gugli100@gmail.com>
* @throws Exception
*/ */
function api_get_current_access_url_id(): int function api_get_current_access_url_id(): int
{ {
if (false === api_get_multiple_access_url()) { return Container::$container->get(AccessUrlHelper::class)->getCurrent()->getId();
return 1;
}
static $id;
if (!empty($id)) {
return $id;
}
$table = Database::get_main_table(TABLE_MAIN_ACCESS_URL);
$path = Database::escape_string(api_get_path(WEB_PATH));
$sql = "SELECT id FROM $table WHERE url = '".$path."'";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
$id = Database::result($result, 0, 0);
if (false === $id) {
return -1;
}
return (int) $id;
}
$id = 1;
//if the url in WEB_PATH was not found, it can only mean that there is
// either a configuration problem or the first URL has not been defined yet
// (by default it is http://localhost/). Thus the more sensible thing we can
// do is return 1 (the main URL) as the user cannot hack this value anyway
return 1;
} }
/** /**
@ -5987,11 +5959,6 @@ function api_get_multiple_access_url(): bool
return $accessUrlEnabled; return $accessUrlEnabled;
} }
function api_is_multiple_url_enabled(): bool
{
return api_get_multiple_access_url();
}
/** /**
* Returns a md5 unique id. * Returns a md5 unique id.
* *

@ -2386,15 +2386,9 @@ class CourseManager
return false; return false;
} }
$count = 0; $url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { UrlManager::delete_url_rel_course($courseId, $url_id);
$url_id = 1; $count = UrlManager::getCountUrlRelCourse($courseId);
if (-1 != api_get_current_access_url_id()) {
$url_id = api_get_current_access_url_id();
}
UrlManager::delete_url_rel_course($courseId, $url_id);
$count = UrlManager::getCountUrlRelCourse($courseId);
}
if (0 === $count) { if (0 === $count) {
// Cleaning group categories // Cleaning group categories
@ -3246,18 +3240,13 @@ class CourseManager
$affected_rows = 0; $affected_rows = 0;
//Deleting assigned courses to hrm_id //Deleting assigned courses to hrm_id
if (api_is_multiple_url_enabled()) { $sql = "SELECT s.c_id FROM $tbl_course_rel_user s
$sql = "SELECT s.c_id FROM $tbl_course_rel_user s INNER JOIN $tbl_course_rel_access_url a
INNER JOIN $tbl_course_rel_access_url a ON (a.c_id = s.c_id)
ON (a.c_id = s.c_id) WHERE
WHERE user_id = $hr_manager_id AND
user_id = $hr_manager_id AND relation_type = ".COURSE_RELATION_TYPE_RRHH." AND
relation_type = ".COURSE_RELATION_TYPE_RRHH." AND access_url_id = ".api_get_current_access_url_id();
access_url_id = ".api_get_current_access_url_id();
} else {
$sql = "SELECT c_id FROM $tbl_course_rel_user
WHERE user_id = $hr_manager_id AND relation_type = ".COURSE_RELATION_TYPE_RRHH;
}
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {
@ -5966,30 +5955,18 @@ class CourseManager
return []; return [];
} }
$sql = "SELECT DISTINCT(c.id), c.title $courseAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
FROM $courseTable c $accessUrlId = api_get_current_access_url_id();
INNER JOIN $courseUserTable cru ON c.id = cru.c_id
WHERE (
cru.user_id IN (".implode(', ', $userIdList).")
AND cru.relation_type = 0
)";
if (api_is_multiple_url_enabled()) {
$courseAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$accessUrlId = api_get_current_access_url_id();
if (-1 != $accessUrlId) { $sql = "SELECT DISTINCT(c.id), c.title
$sql = "SELECT DISTINCT(c.id), c.title FROM $courseTable c
FROM $courseTable c INNER JOIN $courseUserTable cru ON c.id = cru.c_id
INNER JOIN $courseUserTable cru ON c.id = cru.c_id INNER JOIN $courseAccessUrlTable crau ON c.id = crau.c_id
INNER JOIN $courseAccessUrlTable crau ON c.id = crau.c_id WHERE crau.access_url_id = $accessUrlId
WHERE crau.access_url_id = $accessUrlId AND (
AND ( cru.id_user IN (".implode(', ', $userIdList).") AND
cru.id_user IN (".implode(', ', $userIdList).") AND cru.relation_type = 0
cru.relation_type = 0 )";
)";
}
}
$result = Database::query($sql); $result = Database::query($sql);
while ($row = Database::fetch_assoc($result)) { while ($row = Database::fetch_assoc($result)) {

@ -25,15 +25,9 @@ class Login
*/ */
public static function get_user_account_list($user, $reset = false, $by_username = false) public static function get_user_account_list($user, $reset = false, $by_username = false)
{ {
$portal_url = api_get_path(WEB_PATH); $access_url_id = api_get_current_access_url_id();
$url = api_get_access_url($access_url_id);
if (api_is_multiple_url_enabled()) { $portal_url = $url['url'];
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$url = api_get_access_url($access_url_id);
$portal_url = $url['url'];
}
}
if ($reset) { if ($reset) {
if ($by_username) { if ($by_username) {
@ -104,14 +98,9 @@ class Login
$email_to = $user[0]['email']; $email_to = $user[0]['email'];
} }
$portal_url = api_get_path(WEB_PATH); $access_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $url = api_get_access_url($access_url_id);
$access_url_id = api_get_current_access_url_id(); $portal_url = $url['url'];
if (-1 != $access_url_id) {
$url = api_get_access_url($access_url_id);
$portal_url = $url['url'];
}
}
$email_body = get_lang('This is your information to connect to')." ".$portal_url."\n\n$user_account_list"; $email_body = get_lang('This is your information to connect to')." ".$portal_url."\n\n$user_account_list";
// SEND MESSAGE // SEND MESSAGE

@ -510,40 +510,25 @@ class MySpace
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tblSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tblSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$sqlCoachs = "SELECT DISTINCT $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
scu.user_id as id_coach,
u.id as user_id,
lastname,
firstname,
MAX(login_date) as login_date
FROM $tbl_user u, $tbl_session_course_user scu, $tbl_track_login
WHERE
u.active <> ".USER_SOFT_DELETED." AND scu.user_id = u.id AND scu.status=".SessionEntity::COURSE_COACH." AND login_user_id=u.id
GROUP BY user_id ";
if (api_is_multiple_url_enabled()) {
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id(); $access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) { $sqlCoachs = "SELECT DISTINCT
$sqlCoachs = "SELECT DISTINCT scu.user_id as id_coach,
scu.user_id as id_coach, u.id as user_id,
u.id as user_id, lastname,
lastname, firstname,
firstname, MAX(login_date) as login_date
MAX(login_date) as login_date FROM $tbl_user u,
FROM $tbl_user u, $tbl_session_course_user scu,
$tbl_session_course_user scu, $tbl_track_login ,
$tbl_track_login , $tbl_session_rel_access_url session_rel_url
$tbl_session_rel_access_url session_rel_url WHERE
WHERE scu.user_id = u.id AND
scu.user_id = u.id AND scu.status = ".SessionEntity::COURSE_COACH." AND
scu.status = ".SessionEntity::COURSE_COACH." AND login_user_id = u.id AND
login_user_id = u.id AND access_url_id = $access_url_id AND
access_url_id = $access_url_id AND session_rel_url.session_id = scu.session_id
session_rel_url.session_id = scu.session_id GROUP BY u.id";
GROUP BY u.id";
}
}
if (!empty($order[$tracking_column])) { if (!empty($order[$tracking_column])) {
$sqlCoachs .= " ORDER BY `".$order[$tracking_column]."` ".$tracking_direction; $sqlCoachs .= " ORDER BY `".$order[$tracking_column]."` ".$tracking_direction;
} }
@ -554,32 +539,19 @@ class MySpace
$global_coaches[$coach['user_id']] = $coach; $global_coaches[$coach['user_id']] = $coach;
} }
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
$sql_session_coach = "SELECT u.id AS user_id, u.lastname, u.firstname, MAX(tel.login_date) AS login_date $sql_session_coach = "SELECT u.id AS user_id, u.lastname, u.firstname, MAX(tel.login_date) AS login_date
FROM $tbl_user u FROM $tbl_user u
INNER JOIN $tbl_track_login tel INNER JOIN $tbl_track_login tel
ON tel.login_user_id = u.id ON tel.login_user_id = u.id
INNER JOIN $tblSessionRelUser sru INNER JOIN $tblSessionRelUser sru
ON (u.id = sru.user_id AND sru.relation_type = ".SessionEntity::GENERAL_COACH.") ON (u.id = sru.user_id AND sru.relation_type = ".SessionEntity::GENERAL_COACH.")
GROUP BY u.id INNER JOIN $tbl_session_rel_access_url aurs
ORDER BY login_date $tracking_direction"; ON sru.session_id = aurs.session_id
WHERE aurs.access_url_id = $access_url_id
if (api_is_multiple_url_enabled()) { GROUP BY u.id
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); ORDER BY login_date $tracking_direction";
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql_session_coach = "SELECT u.id AS user_id, u.lastname, u.firstname, MAX(tel.login_date) AS login_date
FROM $tbl_user u
INNER JOIN $tbl_track_login tel
ON tel.login_user_id = u.id
INNER JOIN $tblSessionRelUser sru
ON (u.id = sru.user_id AND sru.relation_type = ".SessionEntity::GENERAL_COACH.")
INNER JOIN $tbl_session_rel_access_url aurs
ON sru.session_id = aurs.session_id
WHERE aurs.access_url_id = $access_url_id
GROUP BY u.id
ORDER BY login_date $tracking_direction";
}
}
$result_sessions_coach = Database::query($sql_session_coach); $result_sessions_coach = Database::query($sql_session_coach);
//$total_no_coaches += Database::num_rows($result_sessions_coach); //$total_no_coaches += Database::num_rows($result_sessions_coach);

@ -474,14 +474,10 @@ function who_is_online_in_this_course($from, $number_of_items, $uid, $time_limit
$from = (int) $from; $from = (int) $from;
$number_of_items = (int) $number_of_items; $number_of_items = (int) $number_of_items;
$urlCondition = ''; $accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlJoin = ''; $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) ";
$accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $urlCondition = " AND a.access_url_id = $urlId ";
$urlId = api_get_current_access_url_id();
$urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) ";
$urlCondition = " AND a.access_url_id = $urlId ";
}
$query = "SELECT o.login_user_id, o.login_date $query = "SELECT o.login_user_id, o.login_date
FROM $track_online_table o FROM $track_online_table o
@ -532,14 +528,10 @@ function who_is_online_in_this_course_count(
return false; return false;
} }
$urlCondition = ''; $accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlJoin = ''; $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) ";
$accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $urlCondition = " AND a.access_url_id = $urlId ";
$urlId = api_get_current_access_url_id();
$urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) ";
$urlCondition = " AND a.access_url_id = $urlId ";
}
$query = "SELECT count(login_user_id) as count $query = "SELECT count(login_user_id) as count
FROM $track_online_table o FROM $track_online_table o
@ -582,14 +574,10 @@ function whoIsOnlineInThisSessionCount($timeLimit, $sessionId)
$online_time = time() - $timeLimit * 60; $online_time = time() - $timeLimit * 60;
$current_date = api_get_utc_datetime($online_time); $current_date = api_get_utc_datetime($online_time);
$urlCondition = ''; $accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlJoin = ''; $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) ";
$accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $urlCondition = " AND a.access_url_id = $urlId ";
$urlId = api_get_current_access_url_id();
$urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) ";
$urlCondition = " AND a.access_url_id = $urlId ";
}
$query = "SELECT count(login_user_id) as count $query = "SELECT count(login_user_id) as count
FROM $tblTrackOnline o FROM $tblTrackOnline o

@ -116,18 +116,11 @@ class Redirect
$redirect = api_get_setting('redirect_admin_to_courses_list'); $redirect = api_get_setting('redirect_admin_to_courses_list');
if ('true' !== $redirect) { if ('true' !== $redirect) {
// If the user is a platform admin, redirect to the main admin page // If the user is a platform admin, redirect to the main admin page
if (api_is_multiple_url_enabled()) { // if multiple URLs are enabled, make sure he's admin of the
// if multiple URLs are enabled, make sure he's admin of the // current URL before redirecting
// current URL before redirecting $url = api_get_current_access_url_id();
$url = api_get_current_access_url_id(); if (api_is_platform_admin_by_id($userId, $url)) {
if (api_is_platform_admin_by_id($userId, $url)) { self::navigate(api_get_path(WEB_CODE_PATH).'admin/index.php');
self::navigate(api_get_path(WEB_CODE_PATH).'admin/index.php');
}
} else {
// if no multiple URL, then it's enough to be platform admin
if (api_is_platform_admin_by_id($userId)) {
self::navigate(api_get_path(WEB_CODE_PATH).'admin/index.php');
}
} }
} }
$page_after_login = api_get_setting('page_after_login'); $page_after_login = api_get_setting('page_after_login');

@ -163,13 +163,10 @@ class SessionManager
global $_configuration; global $_configuration;
// Check portal limits // Check portal limits
$accessUrlId = api_is_multiple_url_enabled() $accessUrlId = empty($accessUrlId) ? api_get_current_access_url_id() : (int) $accessUrlId;
? (empty($accessUrlId) ? api_get_current_access_url_id() : (int) $accessUrlId)
: 1;
if (isset($_configuration[$accessUrlId]) && if (isset($_configuration[$accessUrlId]['hosting_limit_sessions']) &&
is_array($_configuration[$accessUrlId]) && is_array($_configuration[$accessUrlId]) &&
isset($_configuration[$accessUrlId]['hosting_limit_sessions']) &&
$_configuration[$accessUrlId]['hosting_limit_sessions'] > 0 $_configuration[$accessUrlId]['hosting_limit_sessions'] > 0
) { ) {
$num = self::count_sessions(); $num = self::count_sessions();
@ -395,50 +392,28 @@ class SessionManager
"; ";
} }
$sql = "SELECT COUNT(id) as total_rows FROM ( $access_url_id = api_get_current_access_url_id();
SELECT DISTINCT $where .= " AND ar.access_url_id = $access_url_id ";
IF (
(s.access_start_date <= '$today' AND '$today' <= s.access_end_date) OR
(s.access_start_date IS NULL AND s.access_end_date IS NULL ) OR
(s.access_start_date <= '$today' AND s.access_end_date IS NULL) OR
('$today' <= s.access_end_date AND s.access_start_date IS NULL)
, 1, 0) as session_active,
s.id
FROM $tbl_session s
LEFT JOIN $tbl_session_category sc
ON s.session_category_id = sc.id
INNER JOIN $tbl_user u
ON s.id_coach = u.id
$courseCondition
$extraJoin
$where $where_condition ) as session_table";
if (api_is_multiple_url_enabled()) {
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$where .= " AND ar.access_url_id = $access_url_id ";
$sql = "SELECT count(id) as total_rows FROM ( $sql = "SELECT count(id) as total_rows FROM (
SELECT DISTINCT SELECT DISTINCT
IF ( IF (
(s.access_start_date <= '$today' AND '$today' <= s.access_end_date) OR (s.access_start_date <= '$today' AND '$today' <= s.access_end_date) OR
(s.access_start_date IS NULL AND s.access_end_date IS NULL) OR (s.access_start_date IS NULL AND s.access_end_date IS NULL) OR
(s.access_start_date <= '$today' AND s.access_end_date IS NULL) OR (s.access_start_date <= '$today' AND s.access_end_date IS NULL) OR
('$today' <= s.access_end_date AND s.access_start_date IS NULL) ('$today' <= s.access_end_date AND s.access_start_date IS NULL)
, 1, 0) , 1, 0)
as session_active, as session_active,
s.id s.id
FROM $tbl_session s FROM $tbl_session s
LEFT JOIN $tbl_session_category sc LEFT JOIN $tbl_session_category sc
ON s.session_category_id = sc.id ON s.session_category_id = sc.id
INNER JOIN $tbl_user u ON s.id_coach = u.id INNER JOIN $tbl_user u ON s.id_coach = u.id
INNER JOIN $table_access_url_rel_session ar INNER JOIN $table_access_url_rel_session ar
ON ar.session_id = s.id ON ar.session_id = s.id
$courseCondition $courseCondition
$extraJoin $extraJoin
$where $where_condition) as session_table"; $where $where_condition) as session_table";
}
}
$sql .= !str_contains($sql, 'WHERE') ? ' WHERE u.active <> '.USER_SOFT_DELETED : ' AND u.active <> '.USER_SOFT_DELETED; $sql .= !str_contains($sql, 'WHERE') ? ' WHERE u.active <> '.USER_SOFT_DELETED : ' AND u.active <> '.USER_SOFT_DELETED;
@ -604,20 +579,14 @@ class SessionManager
$injectExtraFields = rtrim(trim($injectExtraFields), ','); $injectExtraFields = rtrim(trim($injectExtraFields), ',');
$query .= ", $injectExtraFields"; $query .= ", $injectExtraFields";
} }
$query .= " FROM $tblSession s $sqlInjectJoins $where $sqlInjectWhere";
if (api_is_multiple_url_enabled()) { $tblAccessUrlRelSession = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$tblAccessUrlRelSession = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $accessUrlId = api_get_current_access_url_id();
$accessUrlId = api_get_current_access_url_id();
if (-1 != $accessUrlId) { $where .= " AND ar.access_url_id = $accessUrlId ";
$where .= " AND ar.access_url_id = $accessUrlId "; $query .= " FROM $tblSession s $sqlInjectJoins
$query = "$select INNER JOIN $tblAccessUrlRelSession ar
FROM $tblSession s $sqlInjectJoins ON (ar.session_id = s.id) $where $sqlInjectWhere ";
INNER JOIN $tblAccessUrlRelSession ar
ON (ar.session_id = s.id) $where";
}
}
$date = api_get_utc_datetime(); $date = api_get_utc_datetime();
@ -3688,20 +3657,14 @@ class SessionManager
$affected_rows = 0; $affected_rows = 0;
// Deleting assigned sessions to hrm_id. // Deleting assigned sessions to hrm_id.
if ($removeSessionsFromUser) { if ($removeSessionsFromUser) {
if (api_is_multiple_url_enabled()) { $sql = "SELECT s.session_id
$sql = "SELECT s.session_id FROM $tbl_session_rel_user s
FROM $tbl_session_rel_user s INNER JOIN $tbl_session_rel_access_url a
INNER JOIN $tbl_session_rel_access_url a ON (a.session_id = s.session_id)
ON (a.session_id = s.session_id) WHERE
WHERE s.user_id = $userId AND
s.user_id = $userId AND relation_type = ".Session::DRH." AND
relation_type = ".Session::DRH." AND access_url_id = ".api_get_current_access_url_id();
access_url_id = ".api_get_current_access_url_id();
} else {
$sql = "SELECT s.session_id
FROM $tbl_session_rel_user s
WHERE user_id = $userId AND relation_type=".Session::DRH;
}
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
@ -3769,27 +3732,15 @@ class SessionManager
$userId = (int) $userId; $userId = (int) $userId;
$sessionId = (int) $sessionId; $sessionId = (int) $sessionId;
$select = " SELECT * "; $sql = " SELECT * FROM $tbl_session s
if (api_is_multiple_url_enabled()) { INNER JOIN $tbl_session_rel_user sru ON (sru.session_id = s.id)
$sql = " $select FROM $tbl_session s LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id)
INNER JOIN $tbl_session_rel_user sru ON (sru.session_id = s.id) WHERE
LEFT JOIN $tbl_session_rel_access_url a ON (s.id = a.session_id) sru.user_id = '$userId' AND
WHERE sru.session_id = '$sessionId' AND
sru.user_id = '$userId' AND sru.relation_type = '".Session::DRH."' AND
sru.session_id = '$sessionId' AND access_url_id = ".api_get_current_access_url_id()."
sru.relation_type = '".Session::DRH."' AND ";
access_url_id = ".api_get_current_access_url_id()."
";
} else {
$sql = "$select FROM $tbl_session s
INNER JOIN $tbl_session_rel_user sru
ON
sru.session_id = s.id AND
sru.user_id = '$userId' AND
sru.session_id = '$sessionId' AND
sru.relation_type = '".Session::DRH."'
";
}
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
@ -4399,16 +4350,12 @@ class SessionManager
$whereConditions = "sru.user_id = $user_id AND sru.relation_type = ".Session::GENERAL_COACH; $whereConditions = "sru.user_id = $user_id AND sru.relation_type = ".Session::GENERAL_COACH;
} }
if (api_is_multiple_url_enabled()) { $tblSessionRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$tblSessionRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) { $innerJoin .= " INNER JOIN $tblSessionRelAccessUrl session_rel_url
$innerJoin .= " INNER JOIN $tblSessionRelAccessUrl session_rel_url ON (s.id = access_url_rel_session.session_id)";
ON (s.id = access_url_rel_session.session_id)"; $whereConditions .= " AND access_url_rel_session.access_url_id = $access_url_id";
$whereConditions .= " AND access_url_rel_session.access_url_id = $access_url_id";
}
}
$sql = "SELECT s.* FROM $sessionTable AS s $innerJoin "; $sql = "SELECT s.* FROM $sessionTable AS s $innerJoin ";
if (!empty($whereConditions)) { if (!empty($whereConditions)) {
$sql .= "WHERE $whereConditions "; $sql .= "WHERE $whereConditions ";
@ -7810,33 +7757,20 @@ class SessionManager
return []; return [];
} }
$sessionAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$accessUrlId = api_get_current_access_url_id();
$sql = "SELECT DISTINCT s.* $sql = "SELECT DISTINCT s.*
FROM $sessionTable s FROM $sessionTable s
INNER JOIN $sessionUserTable sru INNER JOIN $sessionUserTable sru ON s.id = sru.id_session
ON s.id = sru.id_session INNER JOIN $sessionAccessUrlTable srau ON s.id = srau.session_id
WHERE WHERE
(sru.id_user IN (".implode(', ', $userIdList).") srau.access_url_id = $accessUrlId
AND (
sru.id_user IN (".implode(', ', $userIdList).")
AND sru.relation_type = ".Session::STUDENT." AND sru.relation_type = ".Session::STUDENT."
)"; )";
if (api_is_multiple_url_enabled()) {
$sessionAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$accessUrlId = api_get_current_access_url_id();
if (-1 != $accessUrlId) {
$sql = "SELECT DISTINCT s.*
FROM $sessionTable s
INNER JOIN $sessionUserTable sru ON s.id = sru.id_session
INNER JOIN $sessionAccessUrlTable srau ON s.id = srau.session_id
WHERE
srau.access_url_id = $accessUrlId
AND (
sru.id_user IN (".implode(', ', $userIdList).")
AND sru.relation_type = ".Session::STUDENT."
)";
}
}
$result = Database::query($sql); $result = Database::query($sql);
while ($row = Database::fetch_assoc($result)) { while ($row = Database::fetch_assoc($result)) {
$sessionList[] = $row; $sessionList[] = $row;
@ -7943,26 +7877,17 @@ class SessionManager
$orderClause = 'ORDER BY '; $orderClause = 'ORDER BY ';
$orderClause .= api_sort_by_first_name() ? 'firstname, lastname, username' : 'lastname, firstname, username'; $orderClause .= api_sort_by_first_name() ? 'firstname, lastname, username' : 'lastname, firstname, username';
$sql = "SELECT id as user_id, lastname, firstname, username $userRelAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
FROM $tbl_user $accessUrlId = api_get_current_access_url_id();
WHERE active <> -1 AND status = '1' ". $sql = "SELECT user.id as user_id, username, lastname, firstname
$orderClause; FROM $tbl_user user
INNER JOIN $userRelAccessUrlTable url_user
if (api_is_multiple_url_enabled()) { ON (url_user.user_id = user.id)
$userRelAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); WHERE
$accessUrlId = api_get_current_access_url_id(); user.active <> -1 AND
if (-1 != $accessUrlId) { access_url_id = $accessUrlId AND
$sql = "SELECT user.id as user_id, username, lastname, firstname status = 1 "
FROM $tbl_user user .$orderClause;
INNER JOIN $userRelAccessUrlTable url_user
ON (url_user.user_id = user.id)
WHERE
user.active <> -1 AND
access_url_id = $accessUrlId AND
status = 1 "
.$orderClause;
}
}
$result = Database::query($sql); $result = Database::query($sql);
$coachesList = Database::store_result($result); $coachesList = Database::store_result($result);
@ -8350,43 +8275,31 @@ class SessionManager
} }
$today = api_get_utc_datetime(); $today = api_get_utc_datetime();
$query_rows = "SELECT count(*) as total_rows, c.title as course_title, s.title,
IF ( $table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
(s.access_start_date <= '$today' AND '$today' < s.access_end_date) OR
(s.access_start_date = '0000-00-00 00:00:00' AND s.access_end_date = '0000-00-00 00:00:00' ) OR
(s.access_start_date IS NULL AND s.access_end_date IS NULL) OR
(s.access_start_date <= '$today' AND ('0000-00-00 00:00:00' = s.access_end_date OR s.access_end_date IS NULL )) OR
('$today' < s.access_end_date AND ('0000-00-00 00:00:00' = s.access_start_date OR s.access_start_date IS NULL) )
, 1, 0) as session_active
FROM $extraFieldTables $tbl_session s
LEFT JOIN $tbl_session_category sc
ON s.session_category_id = sc.id
INNER JOIN $tblSessionRelUser sru
ON s.id = sru.session_id
INNER JOIN $tbl_user u
ON sru.user_id = u.id
INNER JOIN $sessionCourseUserTable scu
ON s.id = scu.session_id
INNER JOIN $courseTable c
ON c.id = scu.c_id
$where ";
if (api_is_multiple_url_enabled()) {
$table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id(); $access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) { $where .= " AND ar.access_url_id = $access_url_id ";
$where .= " AND ar.access_url_id = $access_url_id "; $query_rows = "SELECT count(*) as total_rows, c.title as course_title, s.title,
$query_rows = "SELECT count(*) as total_rows IF (
FROM $tbl_session s (s.access_start_date <= '$today' AND '$today' < s.access_end_date) OR
LEFT JOIN $tbl_session_category sc (s.access_start_date = '0000-00-00 00:00:00' AND s.access_end_date = '0000-00-00 00:00:00' ) OR
ON s.session_category_id = sc.id (s.access_start_date IS NULL AND s.access_end_date IS NULL) OR
INNER JOIN $tblSessionRelUser sru ON s.id = sru.session_id (s.access_start_date <= '$today' AND ('0000-00-00 00:00:00' = s.access_end_date OR s.access_end_date IS NULL )) OR
INNER JOIN $tbl_user u ('$today' < s.access_end_date AND ('0000-00-00 00:00:00' = s.access_start_date OR s.access_start_date IS NULL) )
ON sru.user_id = u.id , 1, 0) as session_active
INNER JOIN $table_access_url_rel_session ar FROM $extraFieldTables $tbl_session s
ON ar.session_id = s.id $where "; LEFT JOIN $tbl_session_category sc
} ON s.session_category_id = sc.id
} INNER JOIN $tblSessionRelUser sru
ON s.id = sru.session_id
INNER JOIN $tbl_user u
ON sru.user_id = u.id
INNER JOIN $sessionCourseUserTable scu
ON s.id = scu.session_id
INNER JOIN $courseTable c
ON c.id = scu.c_id
INNER JOIN $table_access_url_rel_session ar
ON ar.session_id = s.id $where ";
$result = Database::query($query_rows); $result = Database::query($query_rows);
$num = 0; $num = 0;
@ -9051,53 +8964,29 @@ class SessionManager
$limit = ' LIMIT '.$options['limit']; $limit = ' LIMIT '.$options['limit'];
} }
$query = "$select FROM $tbl_session s $table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
LEFT JOIN $tbl_session_field_values fv $access_url_id = api_get_current_access_url_id();
ON (fv.item_id = s.id) $query = "$select
LEFT JOIN $extraFieldTable f FROM $tbl_session s
ON f.id = fv.field_id LEFT JOIN $tbl_session_field_values fv
LEFT JOIN $tbl_session_field_options fvo ON (fv.item_id = s.id)
ON (fv.field_id = fvo.field_id) LEFT JOIN $tbl_session_field_options fvo
LEFT JOIN $tbl_session_rel_course src ON (fv.field_id = fvo.field_id)
ON (src.session_id = s.id) LEFT JOIN $tbl_session_rel_course src
LEFT JOIN $tbl_course c ON (src.session_id = s.id)
ON (src.c_id = c.id) LEFT JOIN $tbl_course c
LEFT JOIN $tbl_session_category sc ON (src.c_id = c.id)
ON (s.session_category_id = sc.id) LEFT JOIN $tbl_session_category sc
INNER JOIN $tblSessionRelUser sru ON s.id = sru.session_id ON (s.session_category_id = sc.id)
INNER JOIN $tbl_user u INNER JOIN $tblSessionRelUser sru ON s.id = sru.session_id
ON sru.user_id = u.id INNER JOIN $tbl_user u
$where ON sru.user_id = u.id
$limit INNER JOIN $table_access_url_rel_session ar
ON (ar.session_id = s.id AND ar.access_url_id = $access_url_id)
$where
$limit
"; ";
if (api_is_multiple_url_enabled()) {
$table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$query = "$select
FROM $tbl_session s
LEFT JOIN $tbl_session_field_values fv
ON (fv.item_id = s.id)
LEFT JOIN $tbl_session_field_options fvo
ON (fv.field_id = fvo.field_id)
LEFT JOIN $tbl_session_rel_course src
ON (src.session_id = s.id)
LEFT JOIN $tbl_course c
ON (src.c_id = c.id)
LEFT JOIN $tbl_session_category sc
ON (s.session_category_id = sc.id)
INNER JOIN $tblSessionRelUser sru ON s.id = sru.session_id
INNER JOIN $tbl_user u
ON sru.user_id = u.id
INNER JOIN $table_access_url_rel_session ar
ON (ar.session_id = s.id AND ar.access_url_id = $access_url_id)
$where
$limit
";
}
}
$query .= ') AS s'; $query .= ') AS s';
if (!empty($options['order'])) { if (!empty($options['order'])) {
@ -9788,25 +9677,16 @@ class SessionManager
$tblSession = Database::get_main_table(TABLE_MAIN_SESSION); $tblSession = Database::get_main_table(TABLE_MAIN_SESSION);
$tblSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tblSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER);
if (api_is_multiple_url_enabled()) { $tblSessionRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$tblSessionRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$sql = "SELECT s.id FROM $tblSession s $sql = "SELECT s.id FROM $tblSession s
INNER JOIN $tblSessionRelUser sru ON (sru.session_id = s.id) INNER JOIN $tblSessionRelUser sru ON (sru.session_id = s.id)
LEFT JOIN $tblSessionRelAccessUrl a ON (s.id = a.session_id) LEFT JOIN $tblSessionRelAccessUrl a ON (s.id = a.session_id)
WHERE WHERE
sru.user_id = '$userId' AND sru.user_id = '$userId' AND
sru.session_id = '$sessionId' AND sru.session_id = '$sessionId' AND
sru.relation_type = '".Session::DRH."' AND sru.relation_type = '".Session::DRH."' AND
access_url_id = ".api_get_current_access_url_id(); access_url_id = ".api_get_current_access_url_id();
} else {
$sql = "SELECT s.id FROM $tblSession s
INNER JOIN $tblSessionRelUser sru ON sru.session_id = s.id
WHERE
sru.user_id = '$userId' AND
sru.session_id = '$sessionId' AND
sru.relation_type = '".Session::DRH."'";
}
$result = Database::query($sql); $result = Database::query($sql);

@ -56,20 +56,12 @@ class Statistics
//$categoryCondition = " course_category.code = '".Database::escape_string($categoryCode)."' "; //$categoryCondition = " course_category.code = '".Database::escape_string($categoryCode)."' ";
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT COUNT(*) AS number
$sql = "SELECT COUNT(*) AS number FROM ".$course_table." as c, $access_url_rel_course_table as u
FROM ".$course_table." as c, $access_url_rel_course_table as u $categoryJoin
$categoryJoin WHERE u.c_id = c.id AND access_url_id='".$urlId."'";
WHERE u.c_id = c.id AND access_url_id='".$urlId."'"; if (isset($categoryCode)) {
if (isset($categoryCode)) { $sql .= " AND $categoryCondition";
$sql .= " AND $categoryCondition";
}
} else {
$sql = "SELECT COUNT(*) AS number
FROM $course_table $categoryJoin";
if (isset($categoryCode)) {
$sql .= " WHERE $categoryCondition";
}
} }
$res = Database::query($sql); $res = Database::query($sql);
@ -93,18 +85,11 @@ class Statistics
$course_table = Database::get_main_table(TABLE_MAIN_COURSE); $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT COUNT(*) AS number
$sql = "SELECT COUNT(*) AS number FROM $course_table as c, $access_url_rel_course_table as u
FROM $course_table as c, $access_url_rel_course_table as u WHERE u.c_id = c.id AND access_url_id='".$urlId."'";
WHERE u.c_id = c.id AND access_url_id='".$urlId."'"; if (isset($visibility)) {
if (isset($visibility)) { $sql .= " AND visibility = ".intval($visibility);
$sql .= " AND visibility = ".intval($visibility);
}
} else {
$sql = "SELECT COUNT(*) AS number FROM $course_table ";
if (isset($visibility)) {
$sql .= " WHERE visibility = ".intval($visibility);
}
} }
$res = Database::query($sql); $res = Database::query($sql);
$obj = Database::fetch_object($res); $obj = Database::fetch_object($res);
@ -139,45 +124,25 @@ class Statistics
$active_filter = $onlyActive ? ' AND active = 1' : ''; $active_filter = $onlyActive ? ' AND active = 1' : '';
$status_filter = isset($status) ? ' AND status = '.intval($status) : ''; $status_filter = isset($status) ? ' AND status = '.intval($status) : '';
if (api_is_multiple_url_enabled()) { $sql = "SELECT COUNT(DISTINCT(u.id)) AS number
$sql = "SELECT COUNT(DISTINCT(u.id)) AS number FROM $user_table as u, $access_url_rel_user_table as url
FROM $user_table as u, $access_url_rel_user_table as url WHERE
WHERE u.active <> ".USER_SOFT_DELETED." AND
u.active <> ".USER_SOFT_DELETED." AND u.id = url.user_id AND
u.id = url.user_id AND access_url_id = $urlId
access_url_id = $urlId $status_filter $active_filter";
$status_filter $active_filter"; if (isset($categoryCode)) {
if (isset($categoryCode)) { $categoryCode = Database::escape_string($categoryCode);
$categoryCode = Database::escape_string($categoryCode); $sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number
$sql = "SELECT COUNT(DISTINCT(cu.user_id)) AS number FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url, $tblCourseRelCategory crc, $tblCourseCategory cc
FROM $course_user_table cu, $course_table c, $access_url_rel_user_table as url, $tblCourseRelCategory crc, $tblCourseCategory cc WHERE
WHERE c.id = cu.c_id AND
c.id = cu.c_id AND cc.code = '$categoryCode' AND
cc.code = '$categoryCode' AND crc.course_category_id = cc.id AND
crc.course_category_id = cc.id AND crc.course_id = c.id AND
crc.course_id = c.id AND cu.user_id = url.user_id AND
cu.user_id = url.user_id AND access_url_id = $urlId
access_url_id = $urlId $status_filter $active_filter";
$status_filter $active_filter";
}
} else {
$sql = "SELECT COUNT(DISTINCT(id)) AS number
FROM $user_table
WHERE 1 = 1 AND active <> ".USER_SOFT_DELETED." $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, $tblCourseRelCategory crc, $tblCourseCategory cc
WHERE
c.id = cu.c_id AND
cc.code = '$categoryCode' AND
crc.course_category_id = cc.id AND
crc.course_id = c.id AND
$status_filter
$active_filter
";
}
} }
$res = Database::query($sql); $res = Database::query($sql);
@ -201,17 +166,12 @@ class Statistics
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT DISTINCT(t.c_id) FROM $table t , $access_url_rel_course_table a
$sql = "SELECT DISTINCT(t.c_id) FROM $table t , $access_url_rel_course_table a WHERE
WHERE t.c_id = a.c_id AND
t.c_id = a.c_id AND access_url_id='".$urlId."' AND
access_url_id='".$urlId."' AND access_date BETWEEN '$startDate' AND '$endDate'
access_date BETWEEN '$startDate' AND '$endDate' ";
";
} else {
$sql = "SELECT DISTINCT(t.c_id) FROM $table t
access_date BETWEEN '$startDate' AND '$endDate' ";
}
$result = Database::query($sql); $result = Database::query($sql);
@ -230,18 +190,12 @@ class Statistics
$table_user = Database::get_main_table(TABLE_MAIN_USER); $table_user = Database::get_main_table(TABLE_MAIN_USER);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT count(default_id) AS total_number_of_items
$sql = "SELECT count(default_id) AS total_number_of_items FROM $track_e_default, $table_user user, $access_url_rel_user_table url
FROM $track_e_default, $table_user user, $access_url_rel_user_table url WHERE user.active <> ".USER_SOFT_DELETED." AND
WHERE user.active <> ".USER_SOFT_DELETED." AND default_user_id = user.id AND
default_user_id = user.id AND user.id=url.user_id AND
user.id=url.user_id AND access_url_id = '".$urlId."'";
access_url_id = '".$urlId."'";
} else {
$sql = "SELECT count(default_id) AS total_number_of_items
FROM $track_e_default, $table_user user
WHERE user.active <> ".USER_SOFT_DELETED." AND default_user_id = user.id ";
}
if (!empty($courseId)) { if (!empty($courseId)) {
$courseId = (int) $courseId; $courseId = (int) $courseId;
@ -296,37 +250,23 @@ class Statistics
$direction = 'DESC'; $direction = 'DESC';
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT
$sql = "SELECT default_event_type as col0,
default_event_type as col0, default_value_type as col1,
default_value_type as col1, default_value as col2,
default_value as col2, c_id as col3,
c_id as col3, session_id as col4,
session_id as col4, user.username as col5,
user.username as col5, user.id as col6,
user.id as col6, default_date as col7
default_date as col7 FROM $track_e_default as track_default,
FROM $track_e_default as track_default, $table_user as user,
$table_user as user, $access_url_rel_user_table as url
$access_url_rel_user_table as url WHERE
WHERE user.active <> -1 AND
user.active <> -1 AND track_default.default_user_id = user.id AND
track_default.default_user_id = user.id AND url.user_id = user.id AND
url.user_id = user.id AND access_url_id= $urlId ";
access_url_id= $urlId ";
} else {
$sql = "SELECT
default_event_type as col0,
default_value_type as col1,
default_value as col2,
c_id as col3,
session_id as col4,
user.username as col5,
user.id as col6,
default_date as col7
FROM $track_e_default track_default, $table_user user
WHERE user.active <> ".USER_SOFT_DELETED." AND track_default.default_user_id = user.id ";
}
if (!empty($_GET['keyword'])) { if (!empty($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword'])); $keyword = Database::escape_string(trim($_GET['keyword']));
@ -516,15 +456,10 @@ class Statistics
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$table_url = null;
$where_url = null;
$now = api_get_utc_datetime(); $now = api_get_utc_datetime();
$where_url_last = ' WHERE login_date > DATE_SUB("'.$now.'",INTERVAL 1 %s)'; $table_url = ", $access_url_rel_user_table";
if (api_is_multiple_url_enabled()) { $where_url = " WHERE login_user_id=user_id AND access_url_id='".$urlId."'";
$table_url = ", $access_url_rel_user_table"; $where_url_last = ' AND login_date > DATE_SUB("'.$now.'",INTERVAL 1 %s)';
$where_url = " WHERE login_user_id=user_id AND access_url_id='".$urlId."'";
$where_url_last = ' AND login_date > DATE_SUB("'.$now.'",INTERVAL 1 %s)';
}
$period = get_lang('Month'); $period = get_lang('Month');
$periodCollection = api_get_months_long(); $periodCollection = api_get_months_long();
@ -618,12 +553,8 @@ class Statistics
$table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$table_url = ''; $table_url = ", $access_url_rel_user_table";
$where_url = ''; $where_url = " AND login_user_id=user_id AND access_url_id='".$urlId."'";
if (api_is_multiple_url_enabled()) {
$table_url = ", $access_url_rel_user_table";
$where_url = " AND login_user_id=user_id AND access_url_id='".$urlId."'";
}
$now = api_get_utc_datetime(); $now = api_get_utc_datetime();
$field = 'login_id'; $field = 'login_id';
@ -708,12 +639,8 @@ class Statistics
$table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$table_url = ''; $table_url = ", $access_url_rel_user_table";
$where_url = ''; $where_url = " AND login_user_id=user_id AND access_url_id='".$urlId."'";
if (api_is_multiple_url_enabled()) {
$table_url = ", $access_url_rel_user_table";
$where_url = " AND login_user_id=user_id AND access_url_id='".$urlId."'";
}
$now = api_get_utc_datetime(); $now = api_get_utc_datetime();
$date = new DateTime($now); $date = new DateTime($now);
@ -776,21 +703,14 @@ class Statistics
foreach ($tools as $tool) { foreach ($tools as $tool) {
$tool_names[$tool] = get_lang(ucfirst($tool), ''); $tool_names[$tool] = get_lang(ucfirst($tool), '');
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT access_tool, count( access_id ) AS number_of_logins
$sql = "SELECT access_tool, count( access_id ) AS number_of_logins FROM $table t , $access_url_rel_course_table a
FROM $table t , $access_url_rel_course_table a WHERE
WHERE access_tool IN ('".implode("','", $tools)."') AND
access_tool IN ('".implode("','", $tools)."') AND t.c_id = a.c_id AND
t.c_id = a.c_id AND access_url_id='".$urlId."'
access_url_id='".$urlId."' GROUP BY access_tool
GROUP BY access_tool ";
";
} else {
$sql = "SELECT access_tool, count( access_id ) AS number_of_logins
FROM $table
WHERE access_tool IN ('".implode("','", $tools)."')
GROUP BY access_tool ";
}
$res = Database::query($sql); $res = Database::query($sql);
$result = []; $result = [];
@ -825,17 +745,11 @@ class Statistics
$table = Database::get_main_table(TABLE_MAIN_COURSE); $table = Database::get_main_table(TABLE_MAIN_COURSE);
$access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT course_language, count( c.code ) AS number_of_courses
$sql = "SELECT course_language, count( c.code ) AS number_of_courses FROM $table as c, $access_url_rel_course_table as u
FROM $table as c, $access_url_rel_course_table as u WHERE u.c_id = c.id AND access_url_id='".$urlId."'
WHERE u.c_id = c.id AND access_url_id='".$urlId."' GROUP BY course_language
GROUP BY course_language ORDER BY number_of_courses DESC";
ORDER BY number_of_courses DESC";
} else {
$sql = "SELECT course_language, count( code ) AS number_of_courses
FROM $table GROUP BY course_language
ORDER BY number_of_courses DESC";
}
$res = Database::query($sql); $res = Database::query($sql);
$result = []; $result = [];
while ($obj = Database::fetch_object($res)) { while ($obj = Database::fetch_object($res)) {
@ -853,14 +767,9 @@ class Statistics
$user_table = Database::get_main_table(TABLE_MAIN_USER); $user_table = Database::get_main_table(TABLE_MAIN_USER);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$url_condition = null; $url_condition = ", $access_url_rel_user_table as url WHERE url.user_id=u.id AND access_url_id='".$urlId."'";
$url_condition2 = null; $url_condition2 = " AND url.user_id=u.id AND access_url_id='".$urlId."'";
$table = null; $table = ", $access_url_rel_user_table as url ";
if (api_is_multiple_url_enabled()) {
$url_condition = ", $access_url_rel_user_table as url WHERE url.user_id=u.id AND access_url_id='".$urlId."'";
$url_condition2 = " AND url.user_id=u.id AND access_url_id='".$urlId."'";
$table = ", $access_url_rel_user_table as url ";
}
$sql = "SELECT COUNT(*) AS n FROM $user_table as u ".$url_condition; $sql = "SELECT COUNT(*) AS n FROM $user_table as u ".$url_condition;
$res = Database::query($sql); $res = Database::query($sql);
$count1 = Database::fetch_object($res); $count1 = Database::fetch_object($res);
@ -969,20 +878,13 @@ class Statistics
$values = $form->exportValues(); $values = $form->exportValues();
$date_diff = $values['date_diff']; $date_diff = $values['date_diff'];
$table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LASTACCESS); $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
if (api_is_multiple_url_enabled()) { $sql = "SELECT * FROM $table t , $access_url_rel_course_table a
$sql = "SELECT * FROM $table t , $access_url_rel_course_table a WHERE
WHERE t.c_id = a.c_id AND
t.c_id = a.c_id AND access_url_id='".$urlId."'
access_url_id='".$urlId."' GROUP BY t.c_id
GROUP BY t.c_id HAVING t.c_id <> ''
HAVING t.c_id <> '' AND DATEDIFF( '".api_get_utc_datetime()."' , access_date ) <= ".$date_diff;
AND DATEDIFF( '".api_get_utc_datetime()."' , access_date ) <= ".$date_diff;
} else {
$sql = "SELECT * FROM $table t
GROUP BY t.c_id
HAVING t.c_id <> ''
AND DATEDIFF( '".api_get_utc_datetime()."' , access_date ) <= ".$date_diff;
}
$sql .= ' ORDER BY `'.$columns[$column].'` '.$sql_order[$direction]; $sql .= ' ORDER BY `'.$columns[$column].'` '.$sql_order[$direction];
$from = ($page_nr - 1) * $per_page; $from = ($page_nr - 1) * $per_page;
$sql .= ' LIMIT '.$from.','.$per_page; $sql .= ' LIMIT '.$from.','.$per_page;
@ -1045,19 +947,12 @@ class Statistics
break; break;
} }
if (api_is_multiple_url_enabled()) { $sql = "SELECT lastname, firstname, username, COUNT($field) AS count_message
$sql = "SELECT lastname, firstname, username, COUNT($field) AS count_message FROM $access_url_rel_user_table as url, $message_table m
FROM $access_url_rel_user_table as url, $message_table m LEFT JOIN $user_table u ON m.$field = u.id AND u.active <> ".USER_SOFT_DELETED."
LEFT JOIN $user_table u ON m.$field = u.id AND u.active <> ".USER_SOFT_DELETED." WHERE url.user_id = m.$field AND access_url_id='".$urlId."'
WHERE url.user_id = m.$field AND access_url_id='".$urlId."' GROUP BY m.$field
GROUP BY m.$field ORDER BY count_message DESC ";
ORDER BY count_message DESC ";
} else {
$sql = "SELECT lastname, firstname, username, COUNT($field) AS count_message
FROM $message_table m
LEFT JOIN $user_table u ON m.$field = u.id AND u.active <> ".USER_SOFT_DELETED."
GROUP BY m.$field ORDER BY count_message DESC ";
}
$res = Database::query($sql); $res = Database::query($sql);
$messages_sent = []; $messages_sent = [];
while ($messages = Database::fetch_array($res)) { while ($messages = Database::fetch_array($res)) {
@ -1084,26 +979,16 @@ class Statistics
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT lastname, firstname, username, COUNT(friend_user_id) AS count_friend
$sql = "SELECT lastname, firstname, username, COUNT(friend_user_id) AS count_friend FROM $access_url_rel_user_table as url, $user_friend_table uf
FROM $access_url_rel_user_table as url, $user_friend_table uf LEFT JOIN $user_table u
LEFT JOIN $user_table u ON (uf.user_id = u.id) AND u.active <> ".USER_SOFT_DELETED."
ON (uf.user_id = u.id) AND u.active <> ".USER_SOFT_DELETED." WHERE
WHERE uf.relation_type <> '".UserRelUser::USER_RELATION_TYPE_RRHH."' AND
uf.relation_type <> '".UserRelUser::USER_RELATION_TYPE_RRHH."' AND uf.user_id = url.user_id AND
uf.user_id = url.user_id AND access_url_id = '".$urlId."'
access_url_id = '".$urlId."' GROUP BY uf.user_id
GROUP BY uf.user_id ORDER BY count_friend DESC ";
ORDER BY count_friend DESC ";
} else {
$sql = "SELECT lastname, firstname, username, COUNT(friend_user_id) AS count_friend
FROM $user_friend_table uf
LEFT JOIN $user_table u
ON (uf.user_id = u.id) AND u.active <> ".USER_SOFT_DELETED."
WHERE uf.relation_type <> '".UserRelUser::USER_RELATION_TYPE_RRHH."'
GROUP BY uf.user_id
ORDER BY count_friend DESC ";
}
$res = Database::query($sql); $res = Database::query($sql);
$list_friends = []; $list_friends = [];
while ($friends = Database::fetch_array($res)) { while ($friends = Database::fetch_array($res)) {
@ -1124,13 +1009,8 @@ class Statistics
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$total = self::countUsers(); $total = self::countUsers();
if (api_is_multiple_url_enabled()) { $table_url = ", $access_url_rel_user_table";
$table_url = ", $access_url_rel_user_table"; $where_url = " AND login_user_id=user_id AND access_url_id='".$urlId."'";
$where_url = " AND login_user_id=user_id AND access_url_id='".$urlId."'";
} else {
$table_url = '';
$where_url = '';
}
$now = api_get_utc_datetime(); $now = api_get_utc_datetime();
$sql[get_lang('This day')] = $sql[get_lang('This day')] =
"SELECT count(distinct(login_user_id)) AS number ". "SELECT count(distinct(login_user_id)) AS number ".
@ -1453,15 +1333,10 @@ class Statistics
$tblUser = Database::get_main_table(TABLE_MAIN_USER); $tblUser = Database::get_main_table(TABLE_MAIN_USER);
$tblLogin = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $tblLogin = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$urlJoin = ''; $tblUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$urlWhere = '';
if (api_is_multiple_url_enabled()) { $urlJoin = "INNER JOIN $tblUrlUser au ON u.id = au.user_id";
$tblUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $urlWhere = 'AND au.access_url_id = '.api_get_current_access_url_id();
$urlJoin = "INNER JOIN $tblUrlUser au ON u.id = au.user_id";
$urlWhere = 'AND au.access_url_id = '.api_get_current_access_url_id();
}
$sql = "SELECT u.id, $sql = "SELECT u.id,
u.firstname, u.firstname,

@ -1742,14 +1742,10 @@ class Tracking
$userCondition = " login_user_id = $userId "; $userCondition = " login_user_id = $userId ";
} }
$url_condition = null;
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$url_table = null; $access_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $url_table = ", $tbl_url_rel_user as url_users";
$access_url_id = api_get_current_access_url_id(); $url_condition = " AND u.login_user_id = url_users.user_id AND access_url_id='$access_url_id'";
$url_table = ", $tbl_url_rel_user as url_users";
$url_condition = " AND u.login_user_id = url_users.user_id AND access_url_id='$access_url_id'";
}
if (empty($timeFilter)) { if (empty($timeFilter)) {
$timeFilter = 'last_week'; $timeFilter = 'last_week';
@ -1825,13 +1821,9 @@ class Tracking
$tbl_track_login = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $tbl_track_login = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$url_table = null; $access_url_id = api_get_current_access_url_id();
$url_condition = null; $url_table = ", ".$tbl_url_rel_user." as url_users";
if (api_is_multiple_url_enabled()) { $url_condition = " AND u.login_user_id = url_users.user_id AND access_url_id='$access_url_id'";
$access_url_id = api_get_current_access_url_id();
$url_table = ", ".$tbl_url_rel_user." as url_users";
$url_condition = " AND u.login_user_id = url_users.user_id AND access_url_id='$access_url_id'";
}
if (!empty($startDate) && !empty($endDate)) { if (!empty($startDate) && !empty($endDate)) {
$startDate = Database::escape_string($startDate); $startDate = Database::escape_string($startDate);
@ -3613,25 +3605,18 @@ class Tracking
$tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tbl_session_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$accessUrlEnabled = api_is_multiple_url_enabled(); $access_url_id = api_get_current_access_url_id();
$access_url_id = $accessUrlEnabled ? api_get_current_access_url_id() : -1;
$students = []; $students = [];
// At first, courses where $coach_id is coach of the course // // At first, courses where $coach_id is coach of the course //
$sql = 'SELECT session_id, c_id $sql = 'SELECT scu.session_id, scu.c_id
FROM '.$tbl_session_course_user.' FROM '.$tbl_session_course_user.' scu
WHERE user_id='.$coach_id.' AND status = '.SessionEntity::COURSE_COACH; INNER JOIN '.$tbl_session_rel_access_url.' sru
ON (scu.session_id=sru.session_id)
if (-1 != $access_url_id) { WHERE
$sql = 'SELECT scu.session_id, scu.c_id scu.user_id='.$coach_id.' AND
FROM '.$tbl_session_course_user.' scu scu.status = '.SessionEntity::COURSE_COACH.' AND
INNER JOIN '.$tbl_session_rel_access_url.' sru sru.access_url_id = '.$access_url_id;
ON (scu.session_id=sru.session_id)
WHERE
scu.user_id='.$coach_id.' AND
scu.status = '.SessionEntity::COURSE_COACH.' AND
sru.access_url_id = '.$access_url_id;
}
$result = Database::query($sql); $result = Database::query($sql);
@ -3768,21 +3753,17 @@ class Tracking
ON (c.id = sc.c_id) ON (c.id = sc.c_id)
WHERE sc.user_id = '.$coach_id.' AND sc.status = '.SessionEntity::COURSE_COACH; WHERE sc.user_id = '.$coach_id.' AND sc.status = '.SessionEntity::COURSE_COACH;
if (api_is_multiple_url_enabled()) { $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $sql = 'SELECT DISTINCT c.code
if (-1 != $access_url_id) { FROM '.$tbl_session_course_user.' scu
$sql = 'SELECT DISTINCT c.code INNER JOIN '.$tbl_course.' c
FROM '.$tbl_session_course_user.' scu ON (c.code = scu.c_id)
INNER JOIN '.$tbl_course.' c INNER JOIN '.$tbl_course_rel_access_url.' cru
ON (c.code = scu.c_id) ON (c.id = cru.c_id)
INNER JOIN '.$tbl_course_rel_access_url.' cru WHERE
ON (c.id = cru.c_id) scu.user_id='.$coach_id.' AND
WHERE scu.status = '.SessionEntity::COURSE_COACH.' AND
scu.user_id='.$coach_id.' AND cru.access_url_id = '.$access_url_id;
scu.status = '.SessionEntity::COURSE_COACH.' AND
cru.access_url_id = '.$access_url_id;
}
}
if (!empty($sessionId)) { if (!empty($sessionId)) {
$sql .= ' AND session_id='.$sessionId; $sql .= ' AND session_id='.$sessionId;
@ -3795,47 +3776,28 @@ class Tracking
} }
// Then, courses where $coach_id is coach of the session // Then, courses where $coach_id is coach of the session
$sql = "SELECT DISTINCT course.code $tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
FROM $tbl_session_course as session_course $access_url_id = api_get_current_access_url_id();
INNER JOIN $tbl_session as session $sql = "SELECT DISTINCT c.code
ON (session.id = session_course.session_id) FROM $tbl_session_course as session_course
INNER JOIN $tblSessionRelUser session_user INNER JOIN $tbl_course c
ON (session.id = session_user.session_id ON (c.id = session_course.c_id)
AND session_user.user_id = $coach_id INNER JOIN $tbl_session as session
AND session_user.relation_type = ".SessionEntity::GENERAL_COACH.") ON session.id = session_course.session_id
INNER JOIN $tbl_course as course INNER JOIN $tblSessionRelUser session_user
ON course.id = session_course.c_id"; ON (session.id = session_user.session_id
AND session_user.user_id = $coach_id
if (api_is_multiple_url_enabled()) { AND session_user.relation_type = ".SessionEntity::GENERAL_COACH.")
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); INNER JOIN $tbl_course as course
$access_url_id = api_get_current_access_url_id(); ON course.id = session_course.c_id
if (-1 != $access_url_id) { INNER JOIN $tbl_course_rel_access_url course_rel_url
$sql = "SELECT DISTINCT c.code ON (course_rel_url.c_id = c.id)";
FROM $tbl_session_course as session_course
INNER JOIN $tbl_course c
ON (c.id = session_course.c_id)
INNER JOIN $tbl_session as session
ON session.id = session_course.session_id
INNER JOIN $tblSessionRelUser session_user
ON (session.id = session_user.session_id
AND session_user.user_id = $coach_id
AND session_user.relation_type = ".SessionEntity::GENERAL_COACH.")
INNER JOIN $tbl_course as course
ON course.id = session_course.c_id
INNER JOIN $tbl_course_rel_access_url course_rel_url
ON (course_rel_url.c_id = c.id)";
}
}
if (!empty($sessionId)) { if (!empty($sessionId)) {
$sql .= ' WHERE session_course.session_id='.$sessionId; $sql .= ' WHERE session_course.session_id='.$sessionId;
if (api_is_multiple_url_enabled()) { $sql .= ' AND access_url_id = '.$access_url_id;
$sql .= ' AND access_url_id = '.$access_url_id;
}
} else { } else {
if (api_is_multiple_url_enabled()) { $sql .= ' WHERE access_url_id = '.$access_url_id;
$sql .= ' WHERE access_url_id = '.$access_url_id;
}
} }
$result = Database::query($sql); $result = Database::query($sql);
@ -4610,28 +4572,17 @@ class Tracking
$session_id = (int) $session_id; $session_id = (int) $session_id;
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT c.id, c.code, title
$sql = "SELECT c.id, c.code, title FROM $tbl_course_user cu
FROM $tbl_course_user cu INNER JOIN $tbl_course c
INNER JOIN $tbl_course c ON (cu.c_id = c.id)
ON (cu.c_id = c.id) INNER JOIN $tbl_access_rel_course a
INNER JOIN $tbl_access_rel_course a ON (a.c_id = c.id)
ON (a.c_id = c.id) WHERE
WHERE cu.user_id = $user_id AND
cu.user_id = $user_id AND relation_type<> ".COURSE_RELATION_TYPE_RRHH." AND
relation_type<> ".COURSE_RELATION_TYPE_RRHH." AND access_url_id = $urlId
access_url_id = $urlId ORDER BY title";
ORDER BY title";
} else {
$sql = "SELECT c.id, c.code, title
FROM $tbl_course_user cu
INNER JOIN $tbl_course c
ON (cu.c_id = c.id)
WHERE
cu.user_id = $user_id AND
relation_type <> ".COURSE_RELATION_TYPE_RRHH."
ORDER BY title";
}
$rs = Database::query($sql); $rs = Database::query($sql);
$courses = $course_in_session = $temp_course_in_session = []; $courses = $course_in_session = $temp_course_in_session = [];
@ -4657,34 +4608,20 @@ class Tracking
} }
// Get the list of sessions where the user is subscribed as student // Get the list of sessions where the user is subscribed as student
if (api_is_multiple_url_enabled()) { $sql = "SELECT DISTINCT c.code, s.id as session_id, s.title
$sql = "SELECT DISTINCT c.code, s.id as session_id, s.title FROM $tbl_session_course_user cu
FROM $tbl_session_course_user cu INNER JOIN $tbl_access_rel_session a
INNER JOIN $tbl_access_rel_session a ON (a.session_id = cu.session_id)
ON (a.session_id = cu.session_id) INNER JOIN $tbl_session s
INNER JOIN $tbl_session s ON (s.id = a.session_id)
ON (s.id = a.session_id) INNER JOIN $tbl_course c
INNER JOIN $tbl_course c ON (c.id = cu.c_id)
ON (c.id = cu.c_id) $extraInnerJoin
$extraInnerJoin WHERE
WHERE cu.user_id = $user_id AND
cu.user_id = $user_id AND access_url_id = ".$urlId."
access_url_id = ".$urlId." $sessionCondition
$sessionCondition $orderBy ";
$orderBy ";
} else {
$sql = "SELECT DISTINCT c.code, s.id as session_id, s.title
FROM $tbl_session_course_user cu
INNER JOIN $tbl_session s
ON (s.id = cu.session_id)
INNER JOIN $tbl_course c
ON (c.id = cu.c_id)
$extraInnerJoin
WHERE
cu.user_id = $user_id
$sessionCondition
$orderBy ";
}
$rs = Database::query($sql); $rs = Database::query($sql);
$simple_session_array = []; $simple_session_array = [];
@ -8650,12 +8587,8 @@ class TrackingCourseLog
) "; ) ";
} }
$url_table = ''; $url_table = " INNER JOIN $tbl_url_rel_user as url_users ON (user.id = url_users.user_id)";
$url_condition = ''; $url_condition = " AND access_url_id = '$access_url_id'";
if (api_is_multiple_url_enabled()) {
$url_table = " INNER JOIN $tbl_url_rel_user as url_users ON (user.id = url_users.user_id)";
$url_condition = " AND access_url_id = '$access_url_id'";
}
$invitedUsersCondition = ''; $invitedUsersCondition = '';
if (!$includeInvitedUsers) { if (!$includeInvitedUsers) {
@ -9054,12 +8987,8 @@ class TrackingCourseLog
$condition_user = " WHERE user.user_id = $user_ids "; $condition_user = " WHERE user.user_id = $user_ids ";
} }
$url_table = null; $url_table = ", ".$tbl_url_rel_user." as url_users";
$url_condition = null; $url_condition = " AND user.user_id = url_users.user_id AND access_url_id='$access_url_id'";
if (api_is_multiple_url_enabled()) {
$url_table = ", ".$tbl_url_rel_user." as url_users";
$url_condition = " AND user.user_id = url_users.user_id AND access_url_id='$access_url_id'";
}
$invitedUsersCondition = ''; $invitedUsersCondition = '';
if (!$includeInvitedUsers) { if (!$includeInvitedUsers) {

@ -387,14 +387,10 @@ class UserManager
$email_admin = api_get_setting('emailAdministrator'); $email_admin = api_get_setting('emailAdministrator');
$url = api_get_path(WEB_PATH); $url = api_get_path(WEB_PATH);
if (api_is_multiple_url_enabled()) { $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $urlInfo = api_get_access_url($access_url_id);
if (-1 != $access_url_id) { if ($urlInfo) {
$urlInfo = api_get_access_url($access_url_id); $url = $urlInfo['url'];
if ($urlInfo) {
$url = $urlInfo['url'];
}
}
} }
// variables for the default template // variables for the default template
@ -966,14 +962,9 @@ class UserManager
PERSON_NAME_EMAIL_ADDRESS PERSON_NAME_EMAIL_ADDRESS
); );
$email_admin = api_get_setting('emailAdministrator'); $email_admin = api_get_setting('emailAdministrator');
$url = api_get_path(WEB_PATH); $access_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $url = api_get_access_url($access_url_id);
$access_url_id = api_get_current_access_url_id(); $url = $url['url'];
if (-1 != $access_url_id) {
$url = api_get_access_url($access_url_id);
$url = $url['url'];
}
}
$tplContent = new Template( $tplContent = new Template(
null, null,
@ -1381,18 +1372,14 @@ class UserManager
$return_array = []; $return_array = [];
$sql = "SELECT user.*, user.id as user_id FROM $user_table user "; $sql = "SELECT user.*, user.id as user_id FROM $user_table user ";
if (api_is_multiple_url_enabled()) { if ($idCampus) {
if ($idCampus) { $urlId = $idCampus;
$urlId = $idCampus;
} else {
$urlId = api_get_current_access_url_id();
}
$sql .= " INNER JOIN $userUrlTable url_user
ON (user.id = url_user.user_id)
WHERE url_user.access_url_id = $urlId";
} else { } else {
$sql .= " WHERE 1=1 "; $urlId = api_get_current_access_url_id();
} }
$sql .= " INNER JOIN $userUrlTable url_user
ON (user.id = url_user.user_id)
WHERE url_user.access_url_id = $urlId";
if (count($conditions) > 0) { if (count($conditions) > 0) {
foreach ($conditions as $field => $value) { foreach ($conditions as $field => $value) {
@ -1438,18 +1425,14 @@ class UserManager
$sql = "SELECT count(user.id) count FROM $user_table user "; $sql = "SELECT count(user.id) count FROM $user_table user ";
} }
if (api_is_multiple_url_enabled()) { if ($idCampus) {
if ($idCampus) { $urlId = $idCampus;
$urlId = $idCampus;
} else {
$urlId = api_get_current_access_url_id();
}
$sql .= " INNER JOIN $userUrlTable url_user
ON (user.user_id = url_user.user_id)
WHERE url_user.access_url_id = $urlId";
} else { } else {
$sql .= " WHERE 1=1 "; $urlId = api_get_current_access_url_id();
} }
$sql .= " INNER JOIN $userUrlTable url_user
ON (user.user_id = url_user.user_id)
WHERE url_user.access_url_id = $urlId";
$sql .= " AND status <> ".ANONYMOUS." "; $sql .= " AND status <> ".ANONYMOUS." ";
@ -1514,11 +1497,7 @@ class UserManager
$tblAccessUrlRelUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $tblAccessUrlRelUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$return_array = []; $return_array = [];
$sql_query = "SELECT user.id FROM $user_table user "; $sql_query = "SELECT user.id FROM $user_table user ";
$sql_query .= " INNER JOIN $tblAccessUrlRelUser auru ON auru.user_id = user.id ";
if (api_is_multiple_url_enabled()) {
$sql_query .= " INNER JOIN $tblAccessUrlRelUser auru ON auru.user_id = user.id ";
}
$sql_query .= ' WHERE 1 = 1 '; $sql_query .= ' WHERE 1 = 1 ';
if (count($conditions) > 0) { if (count($conditions) > 0) {
$temp_conditions = []; $temp_conditions = [];
@ -1535,13 +1514,9 @@ class UserManager
$sql_query .= ' AND '.implode(' '.$condition.' ', $temp_conditions); $sql_query .= ' AND '.implode(' '.$condition.' ', $temp_conditions);
} }
if (api_is_multiple_url_enabled()) { $sql_query .= ' AND auru.access_url_id = '.api_get_current_access_url_id();
$sql_query .= ' AND auru.access_url_id = '.api_get_current_access_url_id();
}
} else { } else {
if (api_is_multiple_url_enabled()) { $sql_query .= ' AND auru.access_url_id = '.api_get_current_access_url_id();
$sql_query .= ' AND auru.access_url_id = '.api_get_current_access_url_id();
}
} }
if (!empty($onlyThisUserList)) { if (!empty($onlyThisUserList)) {
@ -3379,18 +3354,12 @@ class UserManager
$t_u = Database::get_main_table(TABLE_MAIN_USER); $t_u = Database::get_main_table(TABLE_MAIN_USER);
$t_a = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $t_a = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
if (api_is_multiple_url_enabled()) { $sql = "SELECT count(u.id)
$sql = "SELECT count(u.id) FROM $t_u u
FROM $t_u u INNER JOIN $t_a url_user
INNER JOIN $t_a url_user ON (u.id = url_user.user_id)
ON (u.id = url_user.user_id) WHERE url_user.access_url_id = $access_url_id
WHERE url_user.access_url_id = $access_url_id ";
";
} else {
$sql = "SELECT count(u.id)
FROM $t_u u
WHERE 1 = 1 ";
}
$status = (int) $status; $status = (int) $status;
if (!empty($status) && $status > 0) { if (!empty($status) && $status > 0) {

@ -283,29 +283,25 @@ class IndexManager
} }
// Showing only the courses of the current access_url_id. // Showing only the courses of the current access_url_id.
if (api_is_multiple_url_enabled()) { $url_access_id = api_get_current_access_url_id();
$url_access_id = api_get_current_access_url_id(); $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (-1 != $url_access_id) { $sql = "SELECT * FROM $main_course_table as course
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); INNER JOIN $tbl_url_rel_course as url_rel_course
$sql = "SELECT * FROM $main_course_table as course ON (url_rel_course.c_id = course.id)
INNER JOIN $tbl_url_rel_course as url_rel_course WHERE
ON (url_rel_course.c_id = course.id) access_url_id = $url_access_id AND
WHERE category_id IS NULL
access_url_id = $url_access_id AND ORDER BY title, UPPER(visual_code)";
category_id IS NULL
ORDER BY title, UPPER(visual_code)";
if (!empty($category)) { if (!empty($category)) {
$sql = "SELECT * FROM $main_course_table as course $sql = "SELECT * FROM $main_course_table as course
INNER JOIN $main_category_table course_category ON course.category_id = course_category.id INNER JOIN $main_category_table course_category ON course.category_id = course_category.id
INNER JOIN $tbl_url_rel_course as url_rel_course INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id) ON (url_rel_course.c_id = course.id)
WHERE WHERE
access_url_id = $url_access_id AND access_url_id = $url_access_id AND
course_category.code = '$category' course_category.code = '$category'
ORDER BY course.title, UPPER(visual_code)"; ORDER BY course.title, UPPER(visual_code)";
}
}
} }
// Removed: AND cours.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' // Removed: AND cours.visibility='".COURSE_VISIBILITY_OPEN_WORLD."'
@ -329,47 +325,30 @@ class IndexManager
$platform_visible_courses = " AND (t3.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' )"; $platform_visible_courses = " AND (t3.visibility='".COURSE_VISIBILITY_OPEN_WORLD."' )";
} }
} }
$sqlGetSubCatList = "
SELECT t1.name,
t1.code,
t1.parent_id,
t1.children_count,COUNT(DISTINCT t3.code) AS nbCourse
FROM $main_category_table t1
LEFT JOIN $main_category_table t2
ON t1.code=t2.parent_id
LEFT JOIN $main_course_table t3
ON (t3.category_id = t1.id $platform_visible_courses)
WHERE t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."
GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count
ORDER BY t1.tree_pos, t1.name";
// Showing only the category of courses of the current access_url_id // Showing only the category of courses of the current access_url_id
if (api_is_multiple_url_enabled()) { $table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE_CATEGORY);
$table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE_CATEGORY); $courseCategoryCondition = " INNER JOIN $table a ON (t1.id = a.course_category_id)";
$courseCategoryCondition = " INNER JOIN $table a ON (t1.id = a.course_category_id)";
$url_access_id = api_get_current_access_url_id();
$url_access_id = api_get_current_access_url_id(); $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (-1 != $url_access_id) { $sqlGetSubCatList = "
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); SELECT t1.name,
$sqlGetSubCatList = " t1.code,
SELECT t1.name, t1.parent_id,
t1.code, t1.children_count,
t1.parent_id, COUNT(DISTINCT t3.code) AS nbCourse
t1.children_count, FROM $main_category_table t1
COUNT(DISTINCT t3.code) AS nbCourse $courseCategoryCondition
FROM $main_category_table t1 LEFT JOIN $main_category_table t2 ON t1.code = t2.parent_id
$courseCategoryCondition LEFT JOIN $main_course_table t3 ON (t3.category_id = t1.id $platform_visible_courses)
LEFT JOIN $main_category_table t2 ON t1.code = t2.parent_id INNER JOIN $tbl_url_rel_course as url_rel_course
LEFT JOIN $main_course_table t3 ON (t3.category_id = t1.id $platform_visible_courses) ON (url_rel_course.c_id = t3.id)
INNER JOIN $tbl_url_rel_course as url_rel_course WHERE
ON (url_rel_course.c_id = t3.id) url_rel_course.access_url_id = $url_access_id AND
WHERE t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."
url_rel_course.access_url_id = $url_access_id AND GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count
t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")." ORDER BY t1.tree_pos, t1.name";
GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count
ORDER BY t1.tree_pos, t1.name";
}
}
$resCats = Database::query($sqlGetSubCatList); $resCats = Database::query($sqlGetSubCatList);
$thereIsSubCat = false; $thereIsSubCat = false;

@ -1339,19 +1339,10 @@ class Rest extends WebService
throw new Exception(get_lang('UserNotRegistered')); throw new Exception(get_lang('UserNotRegistered'));
} }
if (api_is_multiple_url_enabled()) { UrlManager::add_user_to_url(
if (-1 != api_get_current_access_url_id()) { $userId,
UrlManager::add_user_to_url( api_get_current_access_url_id()
$userId, );
api_get_current_access_url_id()
);
} else {
UrlManager::add_user_to_url($userId, 1);
}
} else {
// We add by default the access_url_user table with access_url_id = 1
UrlManager::add_user_to_url($userId, 1);
}
// Save new field label into user_field table. // Save new field label into user_field table.
UserManager::create_extra_field( UserManager::create_extra_field(
@ -1625,12 +1616,7 @@ class Rest extends WebService
$modelSession = SessionManager::fetch($modelSessionId); $modelSession = SessionManager::fetch($modelSessionId);
$generalCoachesId = SessionManager::getGeneralCoachesIdForSession($modelSessionId); $generalCoachesId = SessionManager::getGeneralCoachesIdForSession($modelSessionId);
$modelSession['accessUrlId'] = 1; $modelSession['accessUrlId'] = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) {
if (-1 != api_get_current_access_url_id()) {
$modelSession['accessUrlId'] = api_get_current_access_url_id();
}
}
$newSessionId = SessionManager::create_session( $newSessionId = SessionManager::create_session(
$sessionName, $sessionName,
@ -1690,18 +1676,10 @@ class Rest extends WebService
throw new Exception(get_lang('CoursesNotAddedToSession')); throw new Exception(get_lang('CoursesNotAddedToSession'));
} }
if (api_is_multiple_url_enabled()) { UrlManager::add_session_to_url(
if (-1 != api_get_current_access_url_id()) { $newSessionId,
UrlManager::add_session_to_url( api_get_current_access_url_id()
$newSessionId, );
api_get_current_access_url_id()
);
} else {
UrlManager::add_session_to_url($newSessionId, 1);
}
} else {
UrlManager::add_session_to_url($newSessionId, 1);
}
return $newSessionId; return $newSessionId;
} }

@ -58,29 +58,18 @@ class ZombieManager
user.active, user.active,
access.login_date'; access.login_date';
if (api_is_multiple_url_enabled()) { $access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_rel_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $current_url_id = api_get_current_access_url_id();
$current_url_id = api_get_current_access_url_id();
$sql .= " FROM $user_table as user, $login_table as access, $access_url_rel_user_table as url $sql .= " FROM $user_table as user, $login_table as access, $access_url_rel_user_table as url
WHERE WHERE
access.login_date = (SELECT MAX(a.login_date) access.login_date = (SELECT MAX(a.login_date)
FROM $login_table as a FROM $login_table as a
WHERE a.login_user_id = user.user_id WHERE a.login_user_id = user.user_id
) AND ) AND
access.login_date <= '$ceiling' AND access.login_date <= '$ceiling' AND
user.user_id = access.login_user_id AND user.user_id = access.login_user_id AND
url.user_id = user.user_id AND url.access_url_id=$current_url_id"; url.user_id = user.user_id AND url.access_url_id=$current_url_id";
} else {
$sql .= " FROM $user_table as user, $login_table as access
WHERE
access.login_date = (SELECT MAX(a.login_date)
FROM $login_table as a
WHERE a.login_user_id = user.user_id
) AND
access.login_date <= '$ceiling' AND
user.user_id = access.login_user_id";
}
if ($active_only) { if ($active_only) {
$sql .= ' AND user.active = 1'; $sql .= ' AND user.active = 1';

@ -43,24 +43,15 @@ if (api_is_drh()) {
} }
// Select of sessions. // Select of sessions.
$tblSessionRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$accessUrlId = api_get_current_access_url_id();
$sql = "SELECT s.id, name FROM $tblSession s $sql = "SELECT s.id, name FROM $tblSession s
$innerJoinSessionRelUser INNER JOIN $tblSessionRelAccessUrl as session_rel_url
$whereCondictionDRH ON (s.id = session_rel_url.session_id)
ORDER BY name"; $innerJoinSessionRelUser
WHERE access_url_id = $accessUrlId
if (api_is_multiple_url_enabled()) { $whereCondictionMultiUrl
$tblSessionRelAccessUrl = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); ORDER BY name";
$accessUrlId = api_get_current_access_url_id();
if (-1 != $accessUrlId) {
$sql = "SELECT s.id, name FROM $tblSession s
INNER JOIN $tblSessionRelAccessUrl as session_rel_url
ON (s.id = session_rel_url.session_id)
$innerJoinSessionRelUser
WHERE access_url_id = $accessUrlId
$whereCondictionMultiUrl
ORDER BY name";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$Sessions = Database::store_result($result); $Sessions = Database::store_result($result);
$options = []; $options = [];

@ -131,14 +131,9 @@ if ($form->validate()) {
if (!empty($email) && $send_mail) { if (!empty($email) && $send_mail) {
$emailsubject = '['.api_get_setting('siteName').'] '.get_lang('Your registration on').' '.api_get_setting('siteName'); $emailsubject = '['.api_get_setting('siteName').'] '.get_lang('Your registration on').' '.api_get_setting('siteName');
$portal_url = api_get_path(WEB_PATH); $access_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $url = api_get_access_url($access_url_id);
$access_url_id = api_get_current_access_url_id(); $portal_url = $url['url'];
if (-1 != $access_url_id) {
$url = api_get_access_url($access_url_id);
$portal_url = $url['url'];
}
}
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($userInfo['firstname'], $userInfo['lastname'])).",\n\n". $emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($userInfo['firstname'], $userInfo['lastname'])).",\n\n".
get_lang('You are registered to')." ".api_get_setting('siteName')." ".get_lang('with the following settings:')."\n\n". get_lang('You are registered to')." ".api_get_setting('siteName')." ".get_lang('with the following settings:')."\n\n".

@ -172,60 +172,56 @@ function search_users($needle, $type)
break; break;
} }
if (api_is_multiple_url_enabled()) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); switch ($type) {
if (-1 != $access_url_id) { case 'single':
switch ($type) { $sql = "
case 'single': SELECT user.id, username, lastname, firstname, official_code
$sql = " FROM $tblUser user
SELECT user.id, username, lastname, firstname, official_code INNER JOIN $tbl_user_rel_access_url url_user
FROM $tblUser user ON (url_user.user_id = user.id)
INNER JOIN $tbl_user_rel_access_url url_user WHERE
ON (url_user.user_id = user.id) access_url_id = '$access_url_id'
WHERE AND (
access_url_id = '$access_url_id' username LIKE '$needle%'
AND ( OR lastname LIKE '$needle%'
username LIKE '$needle%' OR firstname LIKE '$needle%'
OR lastname LIKE '$needle%' )
OR firstname LIKE '$needle%' AND user.status <> 6
) AND user.status <> ".DRH."
AND user.status <> 6 $order_clause LIMIT 11
AND user.status <> ".DRH." ";
$order_clause LIMIT 11 break;
"; case 'multiple':
break; $sql = "
case 'multiple': SELECT user.id, username, lastname, firstname, official_code
$sql = " FROM $tblUser user
SELECT user.id, username, lastname, firstname, official_code INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.id)
FROM $tblUser user WHERE
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.id) access_url_id = $access_url_id
WHERE AND lastname LIKE '$needle%'
access_url_id = $access_url_id AND user.status <> ".DRH."
AND lastname LIKE '$needle%' AND user.status <> 6 $cond_user_id
AND user.status <> ".DRH." $order_clause
AND user.status <> 6 $cond_user_id ";
$order_clause break;
"; case 'any_session':
break; $sql = "
case 'any_session': SELECT DISTINCT user.id, username, lastname, firstname, official_code
$sql = " FROM $tblUser user
SELECT DISTINCT user.id, username, lastname, firstname, official_code LEFT OUTER JOIN $tblSessionRelUser s
FROM $tblUser user ON (s.user_id = user.id)
LEFT OUTER JOIN $tblSessionRelUser s INNER JOIN $tbl_user_rel_access_url url_user
ON (s.user_id = user.id) ON (url_user.user_id = user.id)
INNER JOIN $tbl_user_rel_access_url url_user WHERE
ON (url_user.user_id = user.id) access_url_id = $access_url_id
WHERE AND s.user_id IS null
access_url_id = $access_url_id AND user.status <> ".DRH."
AND s.user_id IS null AND user.status <> 6 $cond_user_id
AND user.status <> ".DRH." $order_clause
AND user.status <> 6 $cond_user_id ";
$order_clause break;
";
break;
}
}
} }
$rs = Database::query($sql); $rs = Database::query($sql);
@ -367,6 +363,8 @@ if ('true' === $orderListByOfficialCode) {
} }
if ($ajax_search) { if ($ajax_search) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = " $sql = "
SELECT u.id, u.lastname, u.firstname, u.username, session_id, u.official_code SELECT u.id, u.lastname, u.firstname, u.username, session_id, u.official_code
FROM $tblUser u FROM $tblUser u
@ -374,30 +372,12 @@ if ($ajax_search) {
ON su.user_id = u.id ON su.user_id = u.id
AND su.relation_type = ".Session::STUDENT." AND su.relation_type = ".Session::STUDENT."
AND su.session_id = ".intval($sessionId)." AND su.session_id = ".intval($sessionId)."
WHERE u.status<>".DRH." INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id = u.id)
WHERE access_url_id = $access_url_id
AND u.status <> ".DRH."
AND u.status <> 6 AND u.status <> 6
$order_clause $order_clause
"; ";
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "
SELECT u.id, u.lastname, u.firstname, u.username, session_id, u.official_code
FROM $tblUser u
INNER JOIN $tblSessionRelUser su
ON su.user_id = u.id
AND su.relation_type = ".Session::STUDENT."
AND su.session_id = ".intval($sessionId)."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id = u.id)
WHERE access_url_id = $access_url_id
AND u.status <> ".DRH."
AND u.status <> 6
$order_clause
";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result); $users = Database::store_result($result);
foreach ($users as $user) { foreach ($users as $user) {
@ -464,20 +444,11 @@ if ($ajax_search) {
$final_result = $extra_field_result[0]; $final_result = $extra_field_result[0];
} }
if (api_is_multiple_url_enabled()) { if (is_array($final_result) && count($final_result) > 0) {
if (is_array($final_result) && count($final_result) > 0) { $where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
$where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
} else {
//no results
$where_filter = " AND u.id = -1";
}
} else { } else {
if (is_array($final_result) && count($final_result) > 0) { //no results
$where_filter = " WHERE u.id IN ('".implode("','", $final_result)."') "; $where_filter = " AND u.id = -1";
} else {
//no results
$where_filter = " WHERE u.id = -1";
}
} }
} }
if (api_is_session_admin() && 'true' === api_get_setting('prevent_session_admins_to_manage_all_users')) { if (api_is_session_admin() && 'true' === api_get_setting('prevent_session_admins_to_manage_all_users')) {
@ -508,26 +479,22 @@ if ($ajax_search) {
$order_clause $order_clause
"; ";
} }
if (api_is_multiple_url_enabled()) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $sql = "
if (-1 != $access_url_id) { SELECT u.id, lastname, firstname, username, session_id, official_code
$sql = " FROM $tblUser u
SELECT u.id, lastname, firstname, username, session_id, official_code LEFT JOIN $tblSessionRelUser su
FROM $tblUser u ON su.user_id = u.id
LEFT JOIN $tblSessionRelUser su AND su.session_id = $sessionId
ON su.user_id = u.id AND su.relation_type = ".Session::STUDENT."
AND su.session_id = $sessionId INNER JOIN $tbl_user_rel_access_url url_user
AND su.relation_type = ".Session::STUDENT." ON (url_user.user_id = u.id)
INNER JOIN $tbl_user_rel_access_url url_user WHERE access_url_id = $access_url_id $where_filter
ON (url_user.user_id = u.id) AND u.status <> ".DRH."
WHERE access_url_id = $access_url_id $where_filter AND u.status<>6
AND u.status <> ".DRH." $order_clause
AND u.status<>6 ";
$order_clause
";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
@ -545,36 +512,22 @@ if ($ajax_search) {
unset($users); //clean to free memory unset($users); //clean to free memory
// filling the correct users in list // filling the correct users in list
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = " $sql = "
SELECT u.id, lastname, firstname, username, session_id, official_code SELECT u.id, lastname, firstname, username, session_id, official_code
FROM $tblUser u FROM $tblUser u
LEFT JOIN $tblSessionRelUser LEFT JOIN $tblSessionRelUser
ON $tblSessionRelUser.user_id = u.id ON $tblSessionRelUser.user_id = u.id
AND $tblSessionRelUser.session_id = $sessionId AND $tblSessionRelUser.session_id = $sessionId
AND $tblSessionRelUser.relation_type = ".Session::STUDENT." AND $tblSessionRelUser.relation_type = ".Session::STUDENT."
WHERE u.status <> ".DRH." AND u.status <> 6 $order_clause INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id = u.id)
WHERE access_url_id = $access_url_id
AND u.status <> ".DRH."
AND u.status <> 6
$order_clause
"; ";
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "
SELECT u.id, lastname, firstname, username, session_id, official_code
FROM $tblUser u
LEFT JOIN $tblSessionRelUser
ON $tblSessionRelUser.user_id = u.id
AND $tblSessionRelUser.session_id = $sessionId
AND $tblSessionRelUser.relation_type = ".Session::STUDENT."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id = u.id)
WHERE access_url_id = $access_url_id
AND u.status <> ".DRH."
AND u.status <> 6
$order_clause
";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
foreach ($users as $uid => $user) { foreach ($users as $uid => $user) {

@ -186,59 +186,57 @@ function search_users($needle, $type)
break; break;
} }
if (api_is_multiple_url_enabled()) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); if (-1 != $access_url_id) {
if (-1 != $access_url_id) { switch ($type) {
switch ($type) { case 'single':
case 'single': $sql = "
$sql = " SELECT user.id, username, lastname, firstname, official_code
SELECT user.id, username, lastname, firstname, official_code FROM $tbl_user user
FROM $tbl_user user INNER JOIN $tbl_user_rel_access_url url_user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id = user.id)
WHERE
access_url_id = '$access_url_id'
AND (
username LIKE '$needle%'
OR lastname LIKE '$needle%'
OR firstname LIKE '$needle%'
)
AND user.status <> 6
AND user.status <> ".DRH."
$order_clause LIMIT 11
";
break;
case 'multiple':
$sql = "
SELECT user.id, username, lastname, firstname, official_code
FROM $tbl_user user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.id)
WHERE
access_url_id = $access_url_id
AND lastname LIKE '$needle%'
AND user.status <> ".DRH."
AND user.status <> 6 $cond_user_id
$order_clause
";
break;
case 'any_session':
$sql = "
SELECT DISTINCT user.id, username, lastname, firstname, official_code
FROM $tbl_user user
LEFT OUTER JOIN $tbl_session_rel_user s
ON (s.user_id = user.id)
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = user.id) ON (url_user.user_id = user.id)
WHERE WHERE
access_url_id = '$access_url_id' access_url_id = $access_url_id
AND ( AND s.user_id IS null
username LIKE '$needle%' AND user.status <> ".DRH."
OR lastname LIKE '$needle%' AND user.status <> 6 $cond_user_id
OR firstname LIKE '$needle%' $order_clause
) ";
AND user.status <> 6 break;
AND user.status <> ".DRH."
$order_clause LIMIT 11
";
break;
case 'multiple':
$sql = "
SELECT user.id, username, lastname, firstname, official_code
FROM $tbl_user user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.id)
WHERE
access_url_id = $access_url_id
AND lastname LIKE '$needle%'
AND user.status <> ".DRH."
AND user.status <> 6 $cond_user_id
$order_clause
";
break;
case 'any_session':
$sql = "
SELECT DISTINCT user.id, username, lastname, firstname, official_code
FROM $tbl_user user
LEFT OUTER JOIN $tbl_session_rel_user s
ON (s.user_id = user.id)
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = user.id)
WHERE
access_url_id = $access_url_id
AND s.user_id IS null
AND user.status <> ".DRH."
AND user.status <> 6 $cond_user_id
$order_clause
";
break;
}
} }
} }
@ -387,47 +385,27 @@ if ('true' === $orderListByOfficialCode) {
} }
if ($ajax_search) { if ($ajax_search) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = " $sql = "
SELECT u.id, u.lastname, u.firstname, u.username, su.session_id, u.official_code SELECT u.id, u.lastname, u.firstname, u.username, su.session_id, u.official_code
FROM $tbl_session_rel_user su FROM $tbl_user u
INNER JOIN $tbl_session_rel_user su
ON
su.user_id = u.id AND
su.relation_type = ".Session::STUDENT." AND
su.session_id = ".intval($id_session)."
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = u.id)
INNER JOIN $tableRelSessionCourseUser sc INNER JOIN $tableRelSessionCourseUser sc
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) ON (sc.session_id = su.session_id AND su.user_id = sc.user_id)
INNER JOIN $tbl_user u
ON su.user_id = u.id
WHERE WHERE
su.session_id = ".intval($id_session)." AND access_url_id = $access_url_id AND
su.relation_type = ".Session::STUDENT." AND
sc.c_id = $courseId AND sc.c_id = $courseId AND
u.status<>".DRH." AND u.status <> ".DRH." AND
u.status <> 6 u.status <> 6
$order_clause $order_clause
"; ";
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "
SELECT u.id, u.lastname, u.firstname, u.username, su.session_id, u.official_code
FROM $tbl_user u
INNER JOIN $tbl_session_rel_user su
ON
su.user_id = u.id AND
su.relation_type = ".Session::STUDENT." AND
su.session_id = ".intval($id_session)."
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = u.id)
INNER JOIN $tableRelSessionCourseUser sc
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id)
WHERE
access_url_id = $access_url_id AND
sc.c_id = $courseId AND
u.status <> ".DRH." AND
u.status <> 6
$order_clause
";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result); $users = Database::store_result($result);
foreach ($users as $user) { foreach ($users as $user) {
@ -493,20 +471,11 @@ if ($ajax_search) {
$final_result = $extra_field_result[0]; $final_result = $extra_field_result[0];
} }
if (api_is_multiple_url_enabled()) { if (is_array($final_result) && count($final_result) > 0) {
if (is_array($final_result) && count($final_result) > 0) { $where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
$where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
} else {
//no results
$where_filter = " AND u.id = -1";
}
} else { } else {
if (is_array($final_result) && count($final_result) > 0) { //no results
$where_filter = " WHERE u.id IN ('".implode("','", $final_result)."') "; $where_filter = " AND u.id = -1";
} else {
//no results
$where_filter = " WHERE u.id = -1";
}
} }
} }
if (api_is_session_admin() && 'true' === api_get_setting('prevent_session_admins_to_manage_all_users')) { if (api_is_session_admin() && 'true' === api_get_setting('prevent_session_admins_to_manage_all_users')) {
@ -542,29 +511,25 @@ if ($ajax_search) {
$order_clause $order_clause
"; ";
} }
if (api_is_multiple_url_enabled()) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $sql = "
if (-1 != $access_url_id) { SELECT u.id, lastname, firstname, username, su.session_id, official_code
$sql = " FROM $tbl_user u
SELECT u.id, lastname, firstname, username, su.session_id, official_code LEFT JOIN $tbl_session_rel_user su
FROM $tbl_user u ON su.user_id = u.id
LEFT JOIN $tbl_session_rel_user su AND su.session_id = $id_session
ON su.user_id = u.id AND su.relation_type = ".Session::STUDENT."
AND su.session_id = $id_session INNER JOIN $tbl_user_rel_access_url url_user
AND su.relation_type = ".Session::STUDENT." ON (url_user.user_id = u.id)
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = u.id) WHERE
access_url_id = $access_url_id
WHERE $where_filter
access_url_id = $access_url_id AND u.status <> ".DRH."
$where_filter AND u.status<>6
AND u.status <> ".DRH." $order_clause
AND u.status<>6 ";
$order_clause
";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
@ -582,6 +547,8 @@ if ($ajax_search) {
unset($users); //clean to free memory unset($users); //clean to free memory
// filling the correct users in list // filling the correct users in list
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = " $sql = "
SELECT u.id, lastname, firstname, username, su.session_id, official_code SELECT u.id, lastname, firstname, username, su.session_id, official_code
FROM $tbl_user u FROM $tbl_user u
@ -589,39 +556,18 @@ if ($ajax_search) {
ON su.user_id = u.id ON su.user_id = u.id
AND su.session_id = $id_session AND su.session_id = $id_session
AND su.relation_type = ".Session::STUDENT." AND su.relation_type = ".Session::STUDENT."
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = u.id)
INNER JOIN $tableRelSessionCourseUser sc INNER JOIN $tableRelSessionCourseUser sc
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) ON (sc.session_id = su.session_id AND su.user_id = sc.user_id)
WHERE WHERE
sc.c_id = $courseId AND sc.c_id = $courseId AND
u.status <> ".DRH." AND u.status <> 6 access_url_id = $access_url_id AND
u.status <> ".DRH." AND
u.status <> 6
$order_clause $order_clause
"; ";
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "
SELECT u.id, lastname, firstname, username, su.session_id, official_code
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user su
ON su.user_id = u.id
AND su.session_id = $id_session
AND su.relation_type = ".Session::STUDENT."
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id = u.id)
INNER JOIN $tableRelSessionCourseUser sc
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id)
WHERE
sc.c_id = $courseId AND
access_url_id = $access_url_id AND
u.status <> ".DRH." AND
u.status <> 6
$order_clause
";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
foreach ($users as $uid => $user) { foreach ($users as $uid => $user) {

@ -126,11 +126,7 @@ $sessionTitle = Display::page_subheader(get_lang('General properties').$url);
$sessionField = new ExtraField('session'); $sessionField = new ExtraField('session');
$extraFieldData = $sessionField->getDataAndFormattedValues($sessionId); $extraFieldData = $sessionField->getDataAndFormattedValues($sessionId);
$urlList = []; $urlList = $session->getUrls();
$isMultipleUrl = api_is_multiple_url_enabled();
if ($isMultipleUrl) {
$urlList = $session->getUrls();
}
$url = Display::url( $url = Display::url(
Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon-gradient', null, 32, get_lang('Add')), Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon-gradient', null, 32, get_lang('Add')),
@ -330,13 +326,11 @@ if (!empty($sessionRelUsers)) {
); );
$addUserToUrlLink = ''; $addUserToUrlLink = '';
/*if ($isMultipleUrl) { /*if ($user['access_url_id'] != $url_id) {
if ($user['access_url_id'] != $url_id) { $userLink .= ' '.Display::getMdiIcon(StateIcon::WARNING, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Users not added to the URL'));
$userLink .= ' '.Display::getMdiIcon(StateIcon::WARNING, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Users not added to the URL')); $add = Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Add a userToURL'));
$add = Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Add a userToURL')); $addUserToUrlLink = '<a href="resume_session.php?action=add_user_to_url&id_session='.$sessionId
$addUserToUrlLink = '<a href="resume_session.php?action=add_user_to_url&id_session='.$sessionId .'&user_id='.$user['user_id'].'">'.$add.'</a>';
.'&user_id='.$user['user_id'].'">'.$add.'</a>';
}
}*/ }*/
$editUrl = null; $editUrl = null;

@ -39,35 +39,22 @@ function search_coachs($needle)
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
// search users where username or firstname or lastname begins likes $needle // search users where username or firstname or lastname begins likes $needle
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = 'SELECT username, lastname, firstname $sql = 'SELECT username, lastname, firstname
FROM '.$tbl_user.' user FROM '.$tbl_user.' user
WHERE (username LIKE "'.$needle.'%" INNER JOIN '.$tbl_user_rel_access_url.' url_user
OR firstname LIKE "'.$needle.'%" ON (url_user.user_id=user.user_id)
OR lastname LIKE "'.$needle.'%") WHERE
access_url_id = '.$access_url_id.' AND
(
username LIKE "'.$needle.'%" OR
firstname LIKE "'.$needle.'%" OR
lastname LIKE "'.$needle.'%"
)
AND status=1'. AND status=1'.
$order_clause. $order_clause.'
' LIMIT 10'; LIMIT 10';
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = 'SELECT username, lastname, firstname
FROM '.$tbl_user.' user
INNER JOIN '.$tbl_user_rel_access_url.' url_user
ON (url_user.user_id=user.user_id)
WHERE
access_url_id = '.$access_url_id.' AND
(
username LIKE "'.$needle.'%" OR
firstname LIKE "'.$needle.'%" OR
lastname LIKE "'.$needle.'%"
)
AND status=1'.
$order_clause.'
LIMIT 10';
}
}
$rs = Database::query($sql); $rs = Database::query($sql);
while ($user = Database :: fetch_array($rs)) { while ($user = Database :: fetch_array($rs)) {

@ -113,26 +113,17 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
if (api_is_multiple_url_enabled()) { $tbl_access_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_access_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $sql = "SELECT u.id as user_id,lastname,firstname,username
$sql = "SELECT u.id as user_id,lastname,firstname,username FROM $tblUser u
FROM $tblUser u LEFT JOIN $tbl_access_rel_user a
LEFT JOIN $tbl_access_rel_user a ON(u.id= a.user_id)
ON(u.id= a.user_id) WHERE
WHERE status='1' AND
status='1' AND active = 1 AND
active = 1 AND access_url_id = $access_url_id ".
access_url_id = $access_url_id ". $order_clause;
$order_clause;
} else {
$sql = "SELECT id as user_id,lastname,firstname,username
FROM $tblUser
WHERE
status = '1' AND
active = 1 ".
$order_clause;
}
$result = Database::query($sql); $result = Database::query($sql);
$coaches = Database::store_result($result); $coaches = Database::store_result($result);

@ -39,36 +39,24 @@ if (isset($_POST['formSent'])) {
$file_type = isset($_POST['file_type']) ? $_POST['file_type'] : 'csv'; $file_type = isset($_POST['file_type']) ? $_POST['file_type'] : 'csv';
$session_id = $_POST['session_id']; $session_id = $_POST['session_id'];
if (empty($session_id)) { if (empty($session_id)) {
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
$sql = "SELECT $sql = "SELECT
s.id, s.id,
s.title, s.title,
u.username, u.username,
s.access_start_date, s.access_start_date,
s.access_end_date, s.access_end_date,
s.visibility, s.visibility,
s.session_category_id s.session_category_id
FROM $tblSession s FROM $tblSession s
INNER JOIN $tblSessionRelUser sru INNER JOIN $tbl_session_rel_access_url as session_rel_url
ON (s.id = sru.session_id AND sru.relation_type = ".Session::GENERAL_COACH.") ON (s.id= session_rel_url.session_id)
INNER JOIN $tblUser u INNER JOIN $tblSessionRelUser sru
ON u.id = sru.user_id ON (s.id = sru.session_id AND sru.relation_type = ".Session::GENERAL_COACH.")
ORDER BY s.id"; INNER JOIN $tblUser u ON (u.id = sru.user_id)
WHERE session_rel_url.access_url_id = $access_url_id
if (api_is_multiple_url_enabled()) { ORDER BY s.id";
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "SELECT s.id, s.title, u.username,s.access_start_date,s.access_end_date,s.visibility,s.session_category_id
FROM $tblSession s
INNER JOIN $tbl_session_rel_access_url as session_rel_url
ON (s.id= session_rel_url.session_id)
INNER JOIN $tblSessionRelUser sru
ON (s.id = sru.session_id AND sru.relation_type = ".Session::GENERAL_COACH.")
INNER JOIN $tblUser u ON (u.id = sru.user_id)
WHERE session_rel_url.access_url_id = $access_url_id
ORDER BY s.id";
}
}
$result = Database::query($sql); $result = Database::query($sql);
} else { } else {
@ -278,19 +266,13 @@ if (isset($_POST['formSent'])) {
Display::display_header($tool_name); Display::display_header($tool_name);
//select of sessions //select of sessions
$sql = "SELECT id, title FROM $tblSession ORDER BY title"; $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $sql = "SELECT s.id, title FROM $tblSession s
$tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); INNER JOIN $tbl_session_rel_access_url as session_rel_url
$access_url_id = api_get_current_access_url_id(); ON (s.id = session_rel_url.session_id)
if (-1 != $access_url_id) { WHERE access_url_id = $access_url_id
$sql = "SELECT s.id, title FROM $tblSession s ORDER BY title";
INNER JOIN $tbl_session_rel_access_url as session_rel_url
ON (s.id = session_rel_url.session_id)
WHERE access_url_id = $access_url_id
ORDER BY title";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$sessions = Database::store_result($result); $sessions = Database::store_result($result);

@ -376,13 +376,8 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
} }
// Associate the session with access_url. // Associate the session with access_url.
if (api_is_multiple_url_enabled()) { $accessUrlId = api_get_current_access_url_id();
$accessUrlId = api_get_current_access_url_id(); UrlManager::add_session_to_url($sessionId, $accessUrlId);
UrlManager::add_session_to_url($sessionId, $accessUrlId);
} else {
// We fill by default the access_url_rel_session table.
UrlManager::add_session_to_url($sessionId, 1);
}
// Adding users to the new session. // Adding users to the new session.
foreach ($nodeSession->User as $nodeUser) { foreach ($nodeSession->User as $nodeUser) {

@ -112,20 +112,28 @@ if ('true' === $allowTutors) {
} }
} }
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
switch ($type) { switch ($type) {
case 'single': case 'single':
// search users where username or firstname or lastname begins likes $needle // search users where username or firstname or lastname begins likes $needle
$sql = 'SELECT user.user_id, username, lastname, firstname $sql = 'SELECT user.user_id, username, lastname, firstname
FROM '.$tbl_user.' user FROM '.$tbl_user.' user
INNER JOIN '.$tbl_user_rel_access_url.' url_user
ON (url_user.user_id=user.user_id)
WHERE user.active <> '.USER_SOFT_DELETED.' AND (username LIKE "'.$needle.'%" OR firstname LIKE "'.$needle.'%" WHERE user.active <> '.USER_SOFT_DELETED.' AND (username LIKE "'.$needle.'%" OR firstname LIKE "'.$needle.'%"
OR lastname LIKE "'.$needle.'%") AND user.status<>6 AND user.status<>'.DRH.''. OR lastname LIKE "'.$needle.'%") AND user.status<>6 AND user.status<>'.DRH.'
AND access_url_id = '.$access_url_id.
$order_clause. $order_clause.
' LIMIT 11'; ' LIMIT 11';
break; break;
case 'multiple': case 'multiple':
$sql = 'SELECT user.user_id, username, lastname, firstname $sql = 'SELECT user.user_id, username, lastname, firstname
FROM '.$tbl_user.' user FROM '.$tbl_user.' user
INNER JOIN '.$tbl_user_rel_access_url.' url_user
ON (url_user.user_id=user.user_id)
WHERE user.active <> '.USER_SOFT_DELETED.' AND '.(api_sort_by_first_name() ? 'firstname' : 'lastname').' WHERE user.active <> '.USER_SOFT_DELETED.' AND '.(api_sort_by_first_name() ? 'firstname' : 'lastname').'
AND access_url_id = '.$access_url_id.' AND
LIKE "'.$needle.'%" AND LIKE "'.$needle.'%" AND
user.status<>'.DRH.' AND user.status<>'.DRH.' AND
user.status<>6 '.$cond_user_id. user.status<>6 '.$cond_user_id.
@ -135,62 +143,17 @@ if ('true' === $allowTutors) {
$sql = 'SELECT DISTINCT user.user_id, username, lastname, firstname $sql = 'SELECT DISTINCT user.user_id, username, lastname, firstname
FROM '.$tbl_user.' user FROM '.$tbl_user.' user
LEFT OUTER JOIN '.$tbl_session_rel_user.' s ON (s.user_id = user.user_id) LEFT OUTER JOIN '.$tbl_session_rel_user.' s ON (s.user_id = user.user_id)
INNER JOIN '.$tbl_user_rel_access_url.' url_user ON (url_user.user_id=user.user_id)
WHERE WHERE
user.active <> '.USER_SOFT_DELETED.' AND user.active <> '.USER_SOFT_DELETED.' AND
s.user_id IS NULL AND access_url_id = '.$access_url_id.' AND
user.status <>'.DRH.' AND s.user_id IS null AND
user.status <> 6 '.$cond_user_id. user.status<>'.DRH.' AND
$order_clause; user.status<>6 '.$cond_user_id.
$order_clause;
break; break;
} }
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
switch ($type) {
case 'single':
$sql = 'SELECT user.user_id, username, lastname, firstname
FROM '.$tbl_user.' user
INNER JOIN '.$tbl_user_rel_access_url.' url_user
ON (url_user.user_id=user.user_id)
WHERE
user.active <> '.USER_SOFT_DELETED.' AND
access_url_id = '.$access_url_id.' AND
(username LIKE "'.$needle.'%" OR firstname LIKE "'.$needle.'%" OR lastname LIKE "'.$needle.'%") AND
user.status<>6 AND
user.status<>'.DRH.' '.
$order_clause.
' LIMIT 11';
break;
case 'multiple':
$sql = 'SELECT user.user_id, username, lastname, firstname
FROM '.$tbl_user.' user
INNER JOIN '.$tbl_user_rel_access_url.' url_user
ON (url_user.user_id=user.user_id)
WHERE user.active <> '.USER_SOFT_DELETED.' AND access_url_id = '.$access_url_id.' AND
'.(api_sort_by_first_name() ? 'firstname' : 'lastname').' LIKE "'.$needle.'%" AND user.status<>'.DRH.' AND user.status<>6 '.$cond_user_id.
$order_clause;
break;
case 'any_session':
$sql = 'SELECT DISTINCT user.user_id, username, lastname, firstname
FROM '.$tbl_user.' user
LEFT OUTER JOIN '.$tbl_session_rel_user.' s
ON (s.user_id = user.user_id)
INNER JOIN '.$tbl_user_rel_access_url.' url_user
ON (url_user.user_id=user.user_id)
WHERE
user.active <> '.USER_SOFT_DELETED.' AND
access_url_id = '.$access_url_id.' AND
s.user_id IS null AND
user.status<>'.DRH.' AND
user.status<>6 '.$cond_user_id.
$order_clause;
break;
}
}
}
$rs = Database::query($sql); $rs = Database::query($sql);
$i = 0; $i = 0;
if ('single' === $type) { if ('single' === $type) {
@ -292,32 +255,18 @@ if ('true' === $allowTutors) {
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
if ($ajax_search) { if ($ajax_search) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id $sql = "SELECT u.id as user_id, lastname, firstname, username, session_id
FROM $tbl_user u FROM $tbl_user u
INNER JOIN $tbl_session_rel_user INNER JOIN $tbl_session_rel_user
ON ON
$tbl_session_rel_user.user_id = u.id AND $tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT." AND $tbl_session_rel_user.relation_type = ".Session::STUDENT." AND
$tbl_session_rel_user.session_id = ".intval($id_session)." $tbl_session_rel_user.session_id = ".intval($id_session)."
WHERE u.active <> ".USER_SOFT_DELETED." AND u.status <> ".DRH." AND u.status<>6 $order_clause"; INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id=u.user_id)
if (api_is_multiple_url_enabled()) { WHERE u.active <> ".USER_SOFT_DELETED." AND u.status<>".DRH." AND u.status<>6 AND access_url_id = $access_url_id $order_clause";
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id
FROM $tbl_user u
INNER JOIN $tbl_session_rel_user
ON
$tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT." AND
$tbl_session_rel_user.session_id = ".intval($id_session)."
INNER JOIN $tbl_user_rel_access_url url_user
ON (url_user.user_id=u.user_id)
WHERE u.active <> ".USER_SOFT_DELETED." AND access_url_id = $access_url_id AND u.status<>".DRH." AND u.status<>6
$order_clause";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result); $users = Database::store_result($result);
foreach ($users as $user) { foreach ($users as $user) {
@ -345,6 +294,8 @@ if ('true' === $allowTutors) {
} }
} }
$where_filter = '';
if ($use_extra_fields) { if ($use_extra_fields) {
$final_result = []; $final_result = [];
if (count($extra_field_result) > 1) { if (count($extra_field_result) > 1) {
@ -360,60 +311,25 @@ if ('true' === $allowTutors) {
$final_result = $extra_field_result[0]; $final_result = $extra_field_result[0];
} }
$where_filter = ''; if (is_array($final_result) && count($final_result) > 0) {
if (api_is_multiple_url_enabled()) { $where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
if (is_array($final_result) && count($final_result) > 0) {
$where_filter = " AND u.id IN ('".implode("','", $final_result)."') ";
} else {
//no results
$where_filter = " AND u.id = -1";
}
} else { } else {
if (is_array($final_result) && count($final_result) > 0) { //no results
$where_filter = " WHERE u.id IN ('".implode("','", $final_result)."') "; $where_filter = " AND u.id = -1";
} else {
//no results
$where_filter = " WHERE u.id = -1";
}
} }
} }
if ($use_extra_fields) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id $access_url_id = api_get_current_access_url_id();
FROM $tbl_user u $sql = "SELECT u.id as user_id, lastname, firstname, username, session_id
LEFT JOIN $tbl_session_rel_user FROM $tbl_user u
ON $tbl_session_rel_user.user_id = u.id AND LEFT JOIN $tbl_session_rel_user
$tbl_session_rel_user.session_id = '$id_session' AND ON $tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT." $tbl_session_rel_user.session_id = '$id_session' AND
$where_filter AND u.status<>".DRH." AND u.status<>6 AND u.active <> ".USER_SOFT_DELETED." $tbl_session_rel_user.relation_type = ".Session::STUDENT."
$order_clause"; INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
} else { WHERE access_url_id = $access_url_id $where_filter AND u.status<>".DRH." AND u.status<>6 AND u.active <> ".USER_SOFT_DELETED."
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id $order_clause";
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.session_id = '$id_session' AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT."
WHERE u.status <> ".DRH." AND u.status<>6 AND u.active <> ".USER_SOFT_DELETED."
$order_clause";
}
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON
$tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.session_id = '$id_session' AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE access_url_id = $access_url_id $where_filter AND u.status<>".DRH." AND u.status<>6 AND u.active <> ".USER_SOFT_DELETED."
$order_clause";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
@ -431,31 +347,17 @@ if ('true' === $allowTutors) {
unset($users); //clean to free memory unset($users); //clean to free memory
//filling the correct users in list //filling the correct users in list
$sql = "SELECT user_id, lastname, firstname, username, session_id $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id
FROM $tbl_user u FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user LEFT JOIN $tbl_session_rel_user
ON ON
$tbl_session_rel_user.user_id = u.id AND $tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.session_id = '$id_session' AND $tbl_session_rel_user.session_id = '$id_session' AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT." $tbl_session_rel_user.relation_type = ".Session::STUDENT."
WHERE u.active <> ".USER_SOFT_DELETED." AND u.status <> ".DRH." AND u.status<>6 $order_clause"; INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE u.active <> ".USER_SOFT_DELETED." AND access_url_id = $access_url_id AND u.status<>".DRH." AND u.status<>6 $order_clause";
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if (-1 != $access_url_id) {
$sql = "SELECT u.id as user_id, lastname, firstname, username, session_id
FROM $tbl_user u
LEFT JOIN $tbl_session_rel_user
ON
$tbl_session_rel_user.user_id = u.id AND
$tbl_session_rel_user.session_id = '$id_session' AND
$tbl_session_rel_user.relation_type = ".Session::STUDENT."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
WHERE u.active <> ".USER_SOFT_DELETED." AND access_url_id = $access_url_id AND u.status<>".DRH." AND u.status<>6
$order_clause";
}
}
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
foreach ($users as $uid => $user) { foreach ($users as $uid => $user) {

@ -230,10 +230,12 @@ function get_number_of_users()
$course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER); $course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_rel_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$table_user_field_values = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES); $table_user_field_values = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$courseCode = api_get_course_id(); $courseCode = api_get_course_id();
$sessionId = api_get_session_id(); $sessionId = api_get_session_id();
$courseId = api_get_course_int_id(); $courseId = api_get_course_int_id();
$url_access_id = api_get_current_access_url_id();
$studentRoleFilter = " AND ( $studentRoleFilter = " AND (
u.roles LIKE '%ROLE_STUDENT%' u.roles LIKE '%ROLE_STUDENT%'
@ -254,63 +256,28 @@ function get_number_of_users()
LEFT JOIN $tbl_session_rel_course_user cu LEFT JOIN $tbl_session_rel_course_user cu
ON ON
u.id = cu.user_id AND u.id = cu.user_id AND
c_id = $courseId AND cu.c_id = $courseId AND
session_id = $sessionId session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user ON (url_rel_user.user_id = u.id)
WHERE WHERE
u.active <> ".USER_SOFT_DELETED." AND u.active <> ".USER_SOFT_DELETED." AND
cu.user_id IS NULL cu.user_id IS NULL AND
access_url_id = $url_access_id
$teacherRoleFilter AND $teacherRoleFilter AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) "; (u.official_code <> 'ADMIN' OR u.official_code IS NULL)
";
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
if (-1 != $url_access_id) {
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELECT COUNT(u.id)
FROM $user_table u
LEFT JOIN $tbl_session_rel_course_user cu
ON
u.id = cu.user_id AND cu.c_id = $courseId AND
session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id)
WHERE
u.active <> ".USER_SOFT_DELETED." AND
cu.user_id IS NULL AND
access_url_id = $url_access_id
$teacherRoleFilter AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL)
";
}
}
} else { } else {
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id and c_id = $courseId ON u.id = cu.user_id AND c_id = $courseId
WHERE INNER JOIN $tbl_url_rel_user as url_rel_user
u.active <> ".USER_SOFT_DELETED." AND ON (url_rel_user.user_id = u.id)
cu.user_id IS NULL WHERE
$teacherRoleFilter "; u.active <> ".USER_SOFT_DELETED." AND
cu.user_id IS NULL
if (api_is_multiple_url_enabled()) { $teacherRoleFilter AND
$url_access_id = api_get_current_access_url_id(); access_url_id = $url_access_id ";
if (-1 != $url_access_id) {
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELECT COUNT(u.id)
FROM $user_table u
LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id)
WHERE
u.active <> ".USER_SOFT_DELETED." AND
cu.user_id IS NULL
$teacherRoleFilter AND
access_url_id = $url_access_id ";
}
}
} }
} else { } else {
// students // students
@ -322,42 +289,24 @@ function get_number_of_users()
u.id = cu.user_id AND u.id = cu.user_id AND
c_id = $courseId AND c_id = $courseId AND
session_id = $sessionId session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id)
WHERE WHERE
u.active <> ".USER_SOFT_DELETED." AND u.active <> ".USER_SOFT_DELETED." AND
cu.user_id IS NULL cu.user_id IS NULL
$studentRoleFilter AND $studentRoleFilter AND
access_url_id = $url_access_id AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) "; (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
if (-1 != $url_access_id) {
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELECT COUNT(u.id)
FROM $user_table u
LEFT JOIN $tbl_session_rel_course_user cu
ON
u.id = cu.user_id AND
c_id = $courseId AND
session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id)
WHERE
u.active <> ".USER_SOFT_DELETED." AND
cu.user_id IS NULL
$studentRoleFilter AND
access_url_id = $url_access_id AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
}
}
} else { } else {
$sql = "SELECT COUNT(u.id) $sql = "SELECT COUNT(u.id)
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id = $courseId"; ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user ON (url_rel_user.user_id = u.id)";
// we change the SQL when we have a filter // we change the SQL when we have a filter
if (isset($_GET['subscribe_user_filter_value']) && if (!empty($_GET['subscribe_user_filter_value']) &&
!empty($_GET['subscribe_user_filter_value']) &&
'true' === api_get_setting('profiling_filter_adding_users') 'true' === api_get_setting('profiling_filter_adding_users')
) { ) {
$field_identification = explode('*', $_GET['subscribe_user_filter_value']); $field_identification = explode('*', $_GET['subscribe_user_filter_value']);
@ -374,23 +323,7 @@ function get_number_of_users()
$sql .= " WHERE cu.user_id IS NULL $studentRoleFilter "; $sql .= " WHERE cu.user_id IS NULL $studentRoleFilter ";
} }
if (api_is_multiple_url_enabled()) { $sql .= " AND access_url_id = $url_access_id";
$url_access_id = api_get_current_access_url_id();
if (-1 != $url_access_id) {
$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELECT COUNT(u.id)
FROM $user_table u
LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id)
WHERE
cu.user_id IS NULL AND
access_url_id = $url_access_id
$studentRoleFilter ";
}
}
} }
} }
@ -529,14 +462,16 @@ function get_user_data($from, $number_of_items, $column, $direction)
} }
$sql .= " AND access_url_id = $url_access_id"; $sql .= " AND access_url_id = $url_access_id";
} else { } else {
// adding a teacher NOT through a session // adding a teacher NOT through a session on a portal with multiple URLs
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id = $courseId"; ON (u.id = cu.user_id AND c_id = $courseId)
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ";
// applying the filter of the additional user profile fields // applying the filter of the additional user profile fields
if (isset($_GET['subscribe_user_filter_value']) && if (!empty($_GET['subscribe_user_filter_value']) &&
!empty($_GET['subscribe_user_filter_value']) &&
'true' === api_get_setting('profiling_filter_adding_users') 'true' === api_get_setting('profiling_filter_adding_users')
) { ) {
$field_identification = explode('*', $_GET['subscribe_user_filter_value']); $field_identification = explode('*', $_GET['subscribe_user_filter_value']);
@ -545,45 +480,17 @@ function get_user_data($from, $number_of_items, $column, $direction)
ON field_values.item_id = u.id ON field_values.item_id = u.id
WHERE WHERE
cu.user_id IS NULL cu.user_id IS NULL
$studentRoleFilter AND $teacherRoleFilter AND
field_values.field_id = '".intval($field_identification[0])."' AND field_values.field_id = '".intval($field_identification[0])."' AND
field_values.value = '".Database::escape_string($field_identification[1])."'"; field_values.value = '".Database::escape_string($field_identification[1])."'";
} else { } else {
$sql .= " WHERE cu.user_id IS NULL $teacherRoleFilter"; $sql .= " WHERE
cu.user_id IS NULL
$teacherRoleFilter AND
access_url_id = $url_access_id ";
} }
// adding a teacher NOT through a session on a portal with multiple URLs $sql .= " AND access_url_id = $url_access_id ";
if (api_is_multiple_url_enabled()) {
if (-1 != $url_access_id) {
$sql = "SELECT $select_fields
FROM $user_table u
LEFT JOIN $course_user_table cu
ON (u.id = cu.user_id AND c_id = $courseId)
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ";
// applying the filter of the additional user profile fields
if (isset($_GET['subscribe_user_filter_value']) &&
!empty($_GET['subscribe_user_filter_value']) &&
'true' === api_get_setting('profiling_filter_adding_users')
) {
$field_identification = explode('*', $_GET['subscribe_user_filter_value']);
$sql .= "
LEFT JOIN $table_user_field_values field_values
ON field_values.item_id = u.id
WHERE
cu.user_id IS NULL
$teacherRoleFilter AND
field_values.field_id = '".intval($field_identification[0])."' AND
field_values.value = '".Database::escape_string($field_identification[1])."'";
} else {
$sql .= " WHERE
cu.user_id IS NULL
$teacherRoleFilter AND
access_url_id = $url_access_id ";
}
}
}
} }
} else { } else {
// adding a student // adding a student
@ -594,12 +501,9 @@ function get_user_data($from, $number_of_items, $column, $direction)
ON ON
u.id = cu.user_id AND u.id = cu.user_id AND
c_id = $courseId AND c_id = $courseId AND
session_id = $sessionId "; session_id = $sessionId
INNER JOIN $tbl_url_rel_user as url_rel_user
if (api_is_multiple_url_enabled()) { ON (url_rel_user.user_id = u.id) ";
$sql .= " INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ";
}
// applying the filter of the additional user profile fields // applying the filter of the additional user profile fields
if (isset($_GET['subscribe_user_filter_value']) && if (isset($_GET['subscribe_user_filter_value']) &&
@ -621,65 +525,33 @@ function get_user_data($from, $number_of_items, $column, $direction)
$studentRoleFilter AND $studentRoleFilter AND
(u.official_code <> 'ADMIN' OR u.official_code IS NULL) "; (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
} }
if (api_is_multiple_url_enabled()) { $sql .= " AND access_url_id = $url_access_id";
$sql .= " AND access_url_id = $url_access_id";
}
} else { } else {
//showing only the courses of the current Chamilo access_url_id
$sql = "SELECT $select_fields $sql = "SELECT $select_fields
FROM $user_table u FROM $user_table u
LEFT JOIN $course_user_table cu LEFT JOIN $course_user_table cu
ON ON u.id = cu.user_id AND c_id = $courseId
u.id = cu.user_id AND INNER JOIN $tbl_url_rel_user as url_rel_user
c_id = $courseId "; ON (url_rel_user.user_id = u.id) ";
// applying the filter of the additional user profile fields // applying the filter of the additional user profile fields
if (isset($_GET['subscribe_user_filter_value']) && !empty($_GET['subscribe_user_filter_value'])) { if (!empty($_GET['subscribe_user_filter_value']) &&
'true' === api_get_setting('profiling_filter_adding_users')
) {
$field_identification = explode('*', $_GET['subscribe_user_filter_value']); $field_identification = explode('*', $_GET['subscribe_user_filter_value']);
$sql .= " $sql .= "
LEFT JOIN $table_user_field_values field_values LEFT JOIN $table_user_field_values field_values
ON field_values.item_id = u.id ON field_values.item_id = u.id
WHERE WHERE
cu.user_id IS NULL cu.user_id IS NULL
$studentRoleFilter AND $studentRoleFilter AND
field_values.field_id = '".intval($field_identification[0])."' AND field_values.field_id = '".intval($field_identification[0])."' AND
field_values.value = '".Database::escape_string($field_identification[1])."'"; field_values.value = '".Database::escape_string($field_identification[1])."' AND
access_url_id = $url_access_id
";
} else { } else {
$sql .= " WHERE cu.user_id IS NULL $studentRoleFilter "; $sql .= " WHERE cu.user_id IS NULL $studentRoleFilter AND access_url_id = $url_access_id ";
}
//showing only the courses of the current Chamilo access_url_id
if (api_is_multiple_url_enabled()) {
if (-1 != $url_access_id) {
$sql = "SELECT $select_fields
FROM $user_table u
LEFT JOIN $course_user_table cu
ON u.id = cu.user_id AND c_id = $courseId
INNER JOIN $tbl_url_rel_user as url_rel_user
ON (url_rel_user.user_id = u.id) ";
// applying the filter of the additional user profile fields
if (isset($_GET['subscribe_user_filter_value']) &&
!empty($_GET['subscribe_user_filter_value']) &&
'true' === api_get_setting('profiling_filter_adding_users')
) {
$field_identification = explode('*', $_GET['subscribe_user_filter_value']);
$sql .= "
LEFT JOIN $table_user_field_values field_values
ON field_values.item_id = u.id
WHERE
cu.user_id IS NULL
$studentRoleFilter AND
field_values.field_id = '".intval($field_identification[0])."' AND
field_values.value = '".Database::escape_string($field_identification[1])."' AND
access_url_id = $url_access_id
";
} else {
$sql .= " WHERE
cu.user_id IS NULL
$studentRoleFilter AND
access_url_id = $url_access_id ";
}
}
} }
} }
} }

@ -228,19 +228,12 @@ if (isset($_GET['action'])) {
active active
$legal $legal
FROM $table_session_course_user as session_course_user, FROM $table_session_course_user as session_course_user,
$table_users as user "; $table_users as user, "
if (api_is_multiple_url_enabled()) { .Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER)." au
$sql .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ';
}
$sql .= "
WHERE user.active <> ".USER_SOFT_DELETED." AND c_id = $courseId WHERE user.active <> ".USER_SOFT_DELETED." AND c_id = $courseId
AND session_course_user.user_id = user.id AND session_course_user.user_id = user.id
AND session_id = $sessionId AND session_id = $sessionId
"; AND user.id = au.user_id AND access_url_id = $current_access_url_id ";
if (api_is_multiple_url_enabled()) {
$sql .= " AND user.id = au.user_id AND access_url_id = $current_access_url_id ";
}
// only users no coaches/teachers // only users no coaches/teachers
if (COURSEMANAGER == $type) { if (COURSEMANAGER == $type) {
@ -316,19 +309,14 @@ if (isset($_GET['action'])) {
phone, phone,
user.official_code, user.official_code,
active $legal active $legal
FROM $table_course_user as course_user, $table_users as user "; FROM $table_course_user as course_user, $table_users as user,
if (api_is_multiple_url_enabled()) { ".Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER)." au
$sql .= ' , '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au '; WHERE
}
$sql .= " WHERE
user.active <> ".USER_SOFT_DELETED." AND user.active <> ".USER_SOFT_DELETED." AND
c_id = '$courseId' AND c_id = '$courseId' AND
course_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND course_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND
course_user.user_id = user.id "; course_user.user_id = user.id
AND user.id = au.user_id AND access_url_id = $current_access_url_id ";
if (api_is_multiple_url_enabled()) {
$sql .= " AND user.id = au.user_id AND access_url_id = $current_access_url_id ";
}
// only users no teachers/coaches // only users no teachers/coaches
if (COURSEMANAGER == $type) { if (COURSEMANAGER == $type) {

@ -47,17 +47,11 @@ if (is_array($courseSessionValue) && isset($courseSessionValue[1])) {
$sessionInfo = api_get_session_info($sessionId); $sessionInfo = api_get_session_info($sessionId);
} }
$extraUrlJoin = ''; $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$extraUrlCondition = ''; $access_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) { $extraUrlJoin = " INNER JOIN $tbl_user_rel_access_url as user_rel_url
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); ON (u.id = user_rel_url.user_id) ";
$access_url_id = api_get_current_access_url_id(); $extraUrlCondition = " AND access_url_id = $access_url_id";
if (-1 != $access_url_id) {
$extraUrlJoin .= " INNER JOIN $tbl_user_rel_access_url as user_rel_url
ON (u.id = user_rel_url.user_id) ";
$extraUrlCondition = " AND access_url_id = $access_url_id";
}
}
$sql = "SELECT $sql = "SELECT
u.id AS UserId, u.id AS UserId,
@ -107,19 +101,13 @@ if (strlen($course_code) > 0) {
ORDER BY lastname,firstname"; ORDER BY lastname,firstname";
$filename = 'export_users_'.$sessionInfo['name'].'_'.api_get_local_time(); $filename = 'export_users_'.$sessionInfo['name'].'_'.api_get_local_time();
} else { } else {
if (api_is_multiple_url_enabled()) { $tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_id = api_get_current_access_url_id();
$access_url_id = api_get_current_access_url_id(); $sql .= " FROM $userTable u
if (-1 != $access_url_id) { INNER JOIN $tbl_user_rel_access_url as user_rel_url
$sql .= " FROM $userTable u ON (u.id = user_rel_url.user_id)
INNER JOIN $tbl_user_rel_access_url as user_rel_url WHERE u.active <> ".USER_SOFT_DELETED." AND access_url_id = $access_url_id
ON (u.id = user_rel_url.user_id) ORDER BY lastname,firstname";
WHERE u.active <> ".USER_SOFT_DELETED." AND access_url_id = $access_url_id
ORDER BY lastname,firstname";
}
} else {
$sql .= " FROM $userTable u WHERE u.active <> ".USER_SOFT_DELETED." ORDER BY lastname,firstname";
}
$filename = 'export_users_'.api_get_local_time(); $filename = 'export_users_'.api_get_local_time();
} }
$data = []; $data = [];

@ -31,22 +31,18 @@ $sessionId = isset($_GET['session_id']) ? (int) $_GET['session_id'] : null;
$dateBegin = isset($_GET['date_begin']) ? strtotime($_GET['date_begin']) : null; $dateBegin = isset($_GET['date_begin']) ? strtotime($_GET['date_begin']) : null;
$dateEnd = isset($_GET['date_end']) ? strtotime($_GET['date_end'].' 23:59:59') : null; $dateEnd = isset($_GET['date_end']) ? strtotime($_GET['date_end'].' 23:59:59') : null;
if (api_is_multiple_url_enabled()) { $result = Database::select(
if (-1 != $accessUrlId) { '*',
$result = Database::select( "$tblSessionRelAccessUrl",
'*', [
"$tblSessionRelAccessUrl", 'where' => [
[ "access_url_id = ? AND session_id = ?" => [$accessUrlId, $sessionId],
'where' => [ ],
"access_url_id = ? AND session_id = ?" => [$accessUrlId, $sessionId], ]
], );
]
);
if (empty($result)) { if (empty($result)) {
api_not_allowed(); api_not_allowed();
}
}
} }
$exportAllInOne = isset($_GET['export_pdf']) ? (int) $_GET['export_pdf'] : false; $exportAllInOne = isset($_GET['export_pdf']) ? (int) $_GET['export_pdf'] : false;

@ -9,12 +9,12 @@ namespace Chamilo\CoreBundle\EventListener;
use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository; use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
use Chamilo\CoreBundle\Settings\SettingsManager; use Chamilo\CoreBundle\Settings\SettingsManager;
use Exception; use Exception;
use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
@ -37,6 +37,7 @@ class LegacyListener
private readonly ParameterBagInterface $parameterBag, private readonly ParameterBagInterface $parameterBag,
private readonly SettingsManager $settingsManager, private readonly SettingsManager $settingsManager,
private readonly ContainerInterface $container, private readonly ContainerInterface $container,
private readonly AccessUrlHelper $accessUrlHelper,
) {} ) {}
public function __invoke(RequestEvent $event): void public function __invoke(RequestEvent $event): void
@ -147,16 +148,9 @@ class LegacyListener
$session->set('cid_reset', false); $session->set('cid_reset', false);
} }
$urlId = $this->accessUrlRepository->getFirstId(); $session->set(
'access_url_id',
if (1 === (int) $this->parameterBag->get('multiple_access_url')) { $this->accessUrlHelper->getCurrent()->getId()
$url = $this->router->generate('index', [], UrlGeneratorInterface::ABSOLUTE_URL); );
$accessUrl = $this->accessUrlRepository->findOneBy(['url' => $url]);
if (null !== $accessUrl) {
$urlId = $accessUrl->getId();
}
}
$session->set('access_url_id', $urlId);
} }
} }

@ -49,14 +49,10 @@ class UsergroupRepository extends ResourceRepository
} }
} }
if ($this->accessUrlHelper->isMultipleEnabled()) { $qb->innerJoin('g.urls', 'u')
$accessUrl = $this->accessUrlHelper->getCurrent(); ->andWhere('u.accessUrl = :urlId')
->setParameter('urlId', $this->accessUrlHelper->getCurrent()->getId())
$qb->innerJoin('g.urls', 'u') ;
->andWhere('u.accessUrl = :urlId')
->setParameter('urlId', $accessUrl->getId())
;
}
$qb->orderBy('g.createdAt', 'DESC'); $qb->orderBy('g.createdAt', 'DESC');
$query = $qb->getQuery(); $query = $qb->getQuery();
@ -81,22 +77,16 @@ class UsergroupRepository extends ResourceRepository
$qb = $this->createQueryBuilder('g') $qb = $this->createQueryBuilder('g')
->select('g, COUNT(gu) AS HIDDEN memberCount') ->select('g, COUNT(gu) AS HIDDEN memberCount')
->innerJoin('g.users', 'gu') ->innerJoin('g.users', 'gu')
->innerJoin('g.urls', 'u')
->where('g.groupType = :socialClass') ->where('g.groupType = :socialClass')
->andWhere('u.accessUrl = :urlId')
->setParameter('socialClass', Usergroup::SOCIAL_CLASS) ->setParameter('socialClass', Usergroup::SOCIAL_CLASS)
->setParameter('urlId', $this->accessUrlHelper->getCurrent()->getId())
->groupBy('g') ->groupBy('g')
->orderBy('g.createdAt', 'DESC') ->orderBy('g.createdAt', 'DESC')
->setMaxResults($limit) ->setMaxResults($limit)
; ;
if ($this->accessUrlHelper->isMultipleEnabled()) {
$accessUrl = $this->accessUrlHelper->getCurrent();
$qb->innerJoin('g.urls', 'u')
->andWhere('u.accessUrl = :urlId')
->setParameter('urlId', $accessUrl->getId())
;
}
if (!empty($query)) { if (!empty($query)) {
$qb->andWhere('g.title LIKE :query OR g.description LIKE :query') $qb->andWhere('g.title LIKE :query OR g.description LIKE :query')
->setParameter('query', '%'.$query.'%') ->setParameter('query', '%'.$query.'%')
@ -111,7 +101,9 @@ class UsergroupRepository extends ResourceRepository
$qb = $this->createQueryBuilder('g') $qb = $this->createQueryBuilder('g')
->select('g, COUNT(gu) as HIDDEN memberCount') ->select('g, COUNT(gu) as HIDDEN memberCount')
->innerJoin('g.users', 'gu') ->innerJoin('g.users', 'gu')
->innerJoin('g.urls', 'u')
->where('g.groupType = :socialClass') ->where('g.groupType = :socialClass')
->andWhere('u.accessUrl = :urlId')
->setParameter('socialClass', Usergroup::SOCIAL_CLASS) ->setParameter('socialClass', Usergroup::SOCIAL_CLASS)
->andWhere('gu.relationType IN (:relationTypes)') ->andWhere('gu.relationType IN (:relationTypes)')
->setParameter('relationTypes', [ ->setParameter('relationTypes', [
@ -119,20 +111,12 @@ class UsergroupRepository extends ResourceRepository
Usergroup::GROUP_USER_PERMISSION_READER, Usergroup::GROUP_USER_PERMISSION_READER,
Usergroup::GROUP_USER_PERMISSION_HRM, Usergroup::GROUP_USER_PERMISSION_HRM,
]) ])
->setParameter('urlId', $this->accessUrlHelper->getCurrent()->getId())
->groupBy('g') ->groupBy('g')
->orderBy('memberCount', 'DESC') ->orderBy('memberCount', 'DESC')
->setMaxResults($limit) ->setMaxResults($limit)
; ;
if ($this->accessUrlHelper->isMultipleEnabled()) {
$accessUrl = $this->accessUrlHelper->getCurrent();
$qb->innerJoin('g.urls', 'u')
->andWhere('u.accessUrl = :urlId')
->setParameter('urlId', $accessUrl->getId())
;
}
return $qb->getQuery()->getResult(); return $qb->getQuery()->getResult();
} }
@ -311,22 +295,17 @@ class UsergroupRepository extends ResourceRepository
$qb->select('g.id, g.title, g.description, g.url, g.picture'); $qb->select('g.id, g.title, g.description, g.url, g.picture');
} }
if ($this->accessUrlHelper->isMultipleEnabled()) { $qb
$accessUrl = $this->accessUrlHelper->getCurrent(); ->innerJoin('g.accessUrls', 'a', 'WITH', 'g.id = a.usergroup')
->where(
$qb->innerJoin('g.accessUrls', 'a', 'WITH', 'g.id = a.usergroup') $qb->expr()->orX(
->andWhere('a.accessUrl = :urlId') $qb->expr()->like('g.title', ':tag'),
->setParameter('urlId', $accessUrl->getId()) $qb->expr()->like('g.description', ':tag'),
; $qb->expr()->like('g.url', ':tag')
} )
$qb->where(
$qb->expr()->orX(
$qb->expr()->like('g.title', ':tag'),
$qb->expr()->like('g.description', ':tag'),
$qb->expr()->like('g.url', ':tag')
) )
) ->andWhere('a.accessUrl = :urlId')
->setParameter('urlId', $this->accessUrlHelper->getCurrent()->getId())
->setParameter('tag', '%'.$tag.'%') ->setParameter('tag', '%'.$tag.'%')
; ;

@ -8,7 +8,6 @@ namespace Chamilo\CoreBundle\ServiceHelper;
use Chamilo\CoreBundle\Entity\AccessUrl; use Chamilo\CoreBundle\Entity\AccessUrl;
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository; use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Routing\RouterInterface;
@ -16,15 +15,9 @@ class AccessUrlHelper
{ {
public function __construct( public function __construct(
private readonly AccessUrlRepository $accessUrlRepository, private readonly AccessUrlRepository $accessUrlRepository,
private readonly ParameterBagInterface $parameterBag,
private readonly RouterInterface $router, private readonly RouterInterface $router,
) {} ) {}
public function isMultipleEnabled(): bool
{
return 1 === (int) $this->parameterBag->get('multiple_access_url');
}
public function getFirstAccessUrl(): AccessUrl public function getFirstAccessUrl(): AccessUrl
{ {
$urlId = $this->accessUrlRepository->getFirstId(); $urlId = $this->accessUrlRepository->getFirstId();
@ -40,13 +33,13 @@ class AccessUrlHelper
return $accessUrl; return $accessUrl;
} }
$accessUrl = $this->getFirstAccessUrl(); $url = $this->router->generate('index', [], UrlGeneratorInterface::ABSOLUTE_URL);
if ($this->isMultipleEnabled()) { /** @var AccessUrl $accessUrl */
$url = $this->router->generate('index', [], UrlGeneratorInterface::ABSOLUTE_URL); $accessUrl = $this->accessUrlRepository->findOneBy(['url' => $url]);
/** @var AccessUrl $accessUrl */ if (!$accessUrl) {
$accessUrl = $this->accessUrlRepository->findOneBy(['url' => $url]); $accessUrl = $this->getFirstAccessUrl();
} }
return $accessUrl; return $accessUrl;

@ -96,12 +96,10 @@ if ($debug) {
echo count($dbUsers) . " users with id > 1 found in internal database\n"; echo count($dbUsers) . " users with id > 1 found in internal database\n";
} }
if (api_is_multiple_url_enabled()) { $accessUrls = api_get_access_urls(0,100000,'id');
$accessUrls = api_get_access_urls(0,100000,'id'); $multipleUrlLDAPConfig = true;
$multipleUrlLDAPConfig = true; if (!empty($extldap_config) && array_key_exists('host', $extldap_config) && !empty($extldap_config['host'])) {
if (!empty($extldap_config) && array_key_exists('host', $extldap_config) && !empty($extldap_config['host'])) { $multipleUrlLDAPConfig = false;
$multipleUrlLDAPConfig = false;
}
} }
if (!$multipleUrlLDAPConfig) { if (!$multipleUrlLDAPConfig) {
@ -339,9 +337,6 @@ foreach ($accessUrls as $accessUrl) {
} }
if ($multipleUrlLDAPConfig) { if ($multipleUrlLDAPConfig) {
UrlManager::add_user_to_url($user->getId(), $accessUrlId); UrlManager::add_user_to_url($user->getId(), $accessUrlId);
} elseif (!api_is_multiple_url_enabled()) {
//we are adding by default the access_url_user table with access_url_id = 1
UrlManager::add_user_to_url($user->getId(), 1);
} }
} }
} }

Loading…
Cancel
Save