Don't reset session_rel_user.registered_at of users see BT#14271

that will be registered later anyways.

Rename function subscribe_users_to_session to
subscribeUsersToSession.
pull/2539/head
jmontoyaa 7 years ago
parent 18f62688b0
commit 19adf981b0
  1. 2
      main/admin/user_import.php
  2. 2
      main/admin/user_move_stats.php
  3. 2
      main/auth/courses.php
  4. 2
      main/auth/inscription.php
  5. 75
      main/inc/lib/sessionmanager.lib.php
  6. 4
      main/inc/lib/usergroup.lib.php
  7. 4
      main/session/add_users_to_session.php
  8. 2
      main/session/session_user_import.php
  9. 2
      main/user/add_users_to_session.php
  10. 4
      main/webservices/registration.soap.php
  11. 2
      main/webservices/webservice_session.php
  12. 2
      plugin/advanced_subscription/ajax/advanced_subscription.ajax.php
  13. 2
      plugin/advanced_subscription/src/open_session.php
  14. 2
      plugin/buycourses/src/buy_course_plugin.class.php

@ -223,7 +223,7 @@ function save_data($users)
foreach ($user['Sessions'] as $sessionId) {
$sessionInfo = api_get_session_info($sessionId);
if (!empty($sessionInfo)) {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$sessionId,
[$user_id],
SESSION_VISIBLE_READ_ONLY,

@ -115,7 +115,7 @@ if (isset($_REQUEST['load_ajax'])) {
echo 'User added to the session';
}
//Registering user to the new session
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$new_session_id,
[$user_id],
false

@ -302,7 +302,7 @@ switch ($action) {
}
}
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$_GET['session_id'],
[$userId],
SESSION_VISIBLE_READ_ONLY,

@ -710,7 +710,7 @@ if ($form->validate()) {
if (!empty($sessionToRedirect) && !$sessionPremiumChecker) {
$sessionInfo = api_get_session_info($sessionToRedirect);
if (!empty($sessionInfo)) {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$sessionToRedirect,
[$user_id],
SESSION_VISIBLE_READ_ONLY,

@ -1857,24 +1857,24 @@ class SessionManager
* @author Carlos Vargas from existing code
* @author Julio Montoya. Cleaning code.
*
* @param int $id_session
* @param array $user_list
* @param int $sessionId
* @param array $userList
* @param int $session_visibility
* @param bool $empty_users
*
* @return bool
*/
public static function subscribe_users_to_session(
$id_session,
$user_list,
public static function subscribeUsersToSession(
$sessionId,
$userList,
$session_visibility = SESSION_VISIBLE_READ_ONLY,
$empty_users = true
) {
if ($id_session != strval(intval($id_session))) {
if ($sessionId != strval(intval($sessionId))) {
return false;
}
foreach ($user_list as $intUser) {
foreach ($userList as $intUser) {
if ($intUser != strval(intval($intUser))) {
return false;
}
@ -1885,8 +1885,7 @@ class SessionManager
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$entityManager = Database::getManager();
$session = $entityManager->find('ChamiloCoreBundle:Session', $id_session);
$session = api_get_session_entity($sessionId);
// from function parameter
if (empty($session_visibility)) {
@ -1903,7 +1902,7 @@ class SessionManager
}
$sql = "SELECT user_id FROM $tbl_session_rel_course_rel_user
WHERE session_id = $id_session AND status = 0";
WHERE session_id = $sessionId AND status = 0";
$result = Database::query($sql);
$existingUsers = [];
while ($row = Database::fetch_array($result)) {
@ -1911,7 +1910,7 @@ class SessionManager
}
$sql = "SELECT c_id FROM $tbl_session_rel_course
WHERE session_id = $id_session";
WHERE session_id = $sessionId";
$result = Database::query($sql);
$course_list = [];
while ($row = Database::fetch_array($result)) {
@ -1919,10 +1918,10 @@ class SessionManager
}
if ($session->getSendSubscriptionNotification() &&
is_array($user_list)
is_array($userList)
) {
// Sending emails only
foreach ($user_list as $user_id) {
foreach ($userList as $user_id) {
if (in_array($user_id, $existingUsers)) {
continue;
}
@ -1981,12 +1980,12 @@ class SessionManager
foreach ($course_list as $courseId) {
// for each course in the session
$nbr_users = 0;
$courseId = intval($courseId);
$courseId = (int) $courseId;
$sql = "SELECT DISTINCT user_id
FROM $tbl_session_rel_course_rel_user
WHERE
session_id = $id_session AND
session_id = $sessionId AND
c_id = $courseId AND
status = 0
";
@ -1999,10 +1998,10 @@ class SessionManager
// Delete existing users
if ($empty_users) {
foreach ($existingUsers as $existing_user) {
if (!in_array($existing_user, $user_list)) {
if (!in_array($existing_user, $userList)) {
$sql = "DELETE FROM $tbl_session_rel_course_rel_user
WHERE
session_id = $id_session AND
session_id = $sessionId AND
c_id = $courseId AND
user_id = $existing_user AND
status = 0 ";
@ -2015,7 +2014,7 @@ class SessionManager
api_get_utc_datetime(),
api_get_user_id(),
$courseId,
$id_session
$sessionId
);
if (Database::affected_rows($result)) {
@ -2027,18 +2026,19 @@ class SessionManager
// Replace with this new function
// insert new users into session_rel_course_rel_user and ignore if they already exist
foreach ($user_list as $enreg_user) {
foreach ($userList as $enreg_user) {
if (!in_array($enreg_user, $existingUsers)) {
$status = self::get_user_status_in_course_session(
$enreg_user,
$courseId,
$id_session
$sessionId
);
// Avoid duplicate entries.
if ($status === false || ($status !== false && $status != 0)) {
$enreg_user = (int) $enreg_user;
$sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user (session_id, c_id, user_id, visibility, status)
VALUES($id_session, $courseId, $enreg_user, $session_visibility, 0)";
VALUES($sessionId, $courseId, $enreg_user, $session_visibility, 0)";
$result = Database::query($sql);
if (Database::affected_rows($result)) {
$nbr_users++;
@ -2051,7 +2051,7 @@ class SessionManager
api_get_utc_datetime(),
api_get_user_id(),
$courseId,
$id_session
$sessionId
);
}
}
@ -2060,45 +2060,50 @@ class SessionManager
// Count users in this session-course relation
$sql = "SELECT COUNT(user_id) as nbUsers
FROM $tbl_session_rel_course_rel_user
WHERE session_id = $id_session AND c_id = $courseId AND status<>2";
WHERE session_id = $sessionId AND c_id = $courseId AND status<>2";
$rs = Database::query($sql);
list($nbr_users) = Database::fetch_array($rs);
// update the session-course relation to add the users total
$sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users
WHERE session_id = $id_session AND c_id = $courseId";
WHERE session_id = $sessionId AND c_id = $courseId";
Database::query($sql);
}
// Delete users from the session
if ($empty_users === true) {
$sql = "DELETE FROM $tbl_session_rel_user
WHERE session_id = $id_session AND relation_type<>".SESSION_RELATION_TYPE_RRHH."";
WHERE
session_id = $sessionId AND
relation_type <> ".SESSION_RELATION_TYPE_RRHH;
// Don't reset session_rel_user.registered_at of users that will be registered later anyways.
if (!empty($userList)) {
$avoidDeleteThisUsers = " AND user_id NOT IN ('".implode("','", $userList)."')";
$sql .= $avoidDeleteThisUsers;
}
Database::query($sql);
}
// Insert missing users into session
$nbr_users = 0;
foreach ($user_list as $enreg_user) {
$isUserSubscribed = self::isUserSubscribedAsStudent($id_session, $enreg_user);
foreach ($userList as $enreg_user) {
$isUserSubscribed = self::isUserSubscribedAsStudent($sessionId, $enreg_user);
if ($isUserSubscribed === false) {
$enreg_user = (int) $enreg_user;
$nbr_users++;
$sql = "INSERT IGNORE INTO $tbl_session_rel_user (relation_type, session_id, user_id, registered_at)
VALUES (0, $id_session, $enreg_user, '".api_get_utc_datetime()."')";
VALUES (0, $sessionId, $enreg_user, '".api_get_utc_datetime()."')";
Database::query($sql);
}
}
// update number of users in the session
$nbr_users = count($user_list);
$nbr_users = count($userList);
if ($empty_users) {
// update number of users in the session
$sql = "UPDATE $tbl_session SET nbr_users= $nbr_users
WHERE id = $id_session ";
WHERE id = $sessionId ";
Database::query($sql);
} else {
$sql = "UPDATE $tbl_session SET nbr_users = nbr_users + $nbr_users
WHERE id = $id_session";
WHERE id = $sessionId";
Database::query($sql);
}
}
@ -4462,7 +4467,7 @@ class SessionManager
}
$users = null;
//Subscribing in read only mode
self::subscribe_users_to_session(
self::subscribeUsersToSession(
$sid,
$short_users,
SESSION_VISIBLE_READ_ONLY,
@ -6069,7 +6074,7 @@ SQL;
continue;
}
$messages[] = Display::return_message(get_lang('StudentList').'<br />'.$userToString, 'info', false);
self::subscribe_users_to_session(
self::subscribeUsersToSession(
$sessionDestinationId,
$newUserList,
SESSION_VISIBLE_READ_ONLY,

@ -695,7 +695,7 @@ class UserGroup extends Model
Database::insert($this->usergroup_rel_session_table, $params);
if (!empty($user_list)) {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$session_id,
$user_list,
null,
@ -887,7 +887,7 @@ class UserGroup extends Model
// Adding sessions
if (!empty($session_list)) {
foreach ($session_list as $session_id) {
SessionManager::subscribe_users_to_session($session_id, $new_items, null, false);
SessionManager::subscribeUsersToSession($session_id, $new_items, null, false);
}
}

@ -269,7 +269,7 @@ function search_users($needle, $type)
$xajax->processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
<script>
function add_user_to_session (code, content) {
document.getElementById("user_to_add").value = "";
document.getElementById("ajax_list_users_single").innerHTML = "";
@ -330,7 +330,7 @@ if (isset($_POST['form_sent']) && $_POST['form_sent']) {
$notEmptyList = api_get_configuration_value('session_multiple_subscription_students_list_avoid_emptying');
// Added a parameter to send emails when registering a user
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$id_session,
$UserList,
null,

@ -43,7 +43,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
}
if (!empty($user_list)) {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$session_id,
$user_list,
null,

@ -275,7 +275,7 @@ if ($allowTutors == 'true') {
if ($form_sent == 1) {
//added a parameter to send emails when registering a user
SessionManager::subscribe_users_to_session($id_session, $UserList, null, true);
SessionManager::subscribeUsersToSession($id_session, $UserList, null, true);
header('Location: resume_session.php?id_session='.$id_session);
exit;
}

@ -5364,7 +5364,7 @@ function WSSuscribeUsersToSession($params)
continue; // user_id is not active.
}
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$sessionId,
[$user_id],
SESSION_VISIBLE_READ_ONLY,
@ -5461,7 +5461,7 @@ function WSSubscribeUserToSessionSimple($params)
error_log($result);
}
} else {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$session_id,
[$user_id],
SESSION_VISIBLE_READ_ONLY,

@ -616,7 +616,7 @@ class WSSession extends WS
return $user_id;
} else {
if ($state == 1) {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$session_id,
[$user_id]
);

@ -312,7 +312,7 @@ if ($verified) {
// Student Session inscription
if ($data['newStatus'] == ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED) {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$data['sessionId'],
[$data['studentUserId']],
null,

@ -44,7 +44,7 @@ if (SessionManager::isUserSubscribedAsStudent(
$tpl->assign('is_subscribed', false);
$tpl->assign('errorMessages', $plugin->getErrorMessages());
} else {
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$_GET['session_id'],
[$_GET['user_id']],
SESSION_VISIBLE_READ_ONLY,

@ -882,7 +882,7 @@ class BuyCoursesPlugin extends Plugin
$saleIsCompleted = CourseManager::subscribe_user($sale['user_id'], $course['code']);
break;
case self::PRODUCT_TYPE_SESSION:
SessionManager::subscribe_users_to_session(
SessionManager::subscribeUsersToSession(
$sale['product_id'],
[$sale['user_id']],
api_get_session_visibility($sale['product_id']),

Loading…
Cancel
Save