Fixing bug when relating users to sessions

skala
Julio Montoya 15 years ago
parent d8bf65ea82
commit d6c7c3de43
  1. 6
      main/admin/add_users_to_session.php
  2. 52
      main/inc/lib/sessionmanager.lib.php

@ -88,9 +88,9 @@ function search_users($needle, $type) {
$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';
$cond_user_id = ''; $cond_user_id = '';
if (!empty($id_session)) { if (!empty($id_session)) {
$id_session = Database::escape_string($id_session); $id_session = intval($id_session);
// check id_user from session_rel_user table // check id_user from session_rel_user table
$sql = 'SELECT id_user FROM '.$tbl_session_rel_user.' WHERE id_session ="'.(int)$id_session.'" AND relation_type<>'.SESSION_RELATION_TYPE_RRHH.' '; $sql = 'SELECT id_user FROM '.$tbl_session_rel_user.' WHERE id_session ="'.$id_session.'" AND relation_type<>'.SESSION_RELATION_TYPE_RRHH.' ';
$res = Database::query($sql); $res = Database::query($sql);
$user_ids = array(); $user_ids = array();
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {
@ -229,7 +229,7 @@ if($_POST['form_sent']) {
if ($form_sent == 1) { if ($form_sent == 1) {
//added a parameter to send emails when registering a user //added a parameter to send emails when registering a user
SessionManager::suscribe_users_to_session($id_session,$UserList,true,true); SessionManager::suscribe_users_to_session($id_session, $UserList, null, true);
//adding the session to the access_url_rel_session table //adding the session to the access_url_rel_session table

@ -401,7 +401,7 @@ class SessionManager {
* @param bool Whether to unsubscribe existing users (true, default) or not (false) * @param bool Whether to unsubscribe existing users (true, default) or not (false)
* @return void Nothing, or false on error * @return void Nothing, or false on error
**/ **/
public static function suscribe_users_to_session ($id_session,$user_list, $visibility=SESSION_VISIBLE_READ_ONLY, $empty_users=true,$send_email=false) { public static function suscribe_users_to_session($id_session, $user_list, $session_visibility = SESSION_VISIBLE_READ_ONLY, $empty_users=true, $send_email=false) {
if ($id_session!= strval(intval($id_session))) return false; if ($id_session!= strval(intval($id_session))) return false;
foreach($user_list as $intUser){ foreach($user_list as $intUser){
@ -416,33 +416,35 @@ class SessionManager {
$session_name = $session_info['name']; $session_name = $session_info['name'];
//from function parameter //from function parameter
$session_visibility = $visibility;
if (empty($session_visibility)) { if (empty($session_visibility)) {
$session_visivility = $session_info['visibility']; //loaded from DB $session_visibility = $session_info['visibility']; //loaded from DB
//default status loaded if empty //default status loaded if empty
if (empty($session_visivility)) if (empty($session_visibility))
$session_visibility = SESSION_VISIBLE_READ_ONLY; // by default readonly 1 $session_visibility = SESSION_VISIBLE_READ_ONLY; // by default readonly 1
} else {
if (!in_array($session_visibility, array(SESSION_VISIBLE_READ_ONLY, SESSION_VISIBLE, SESSION_INVISIBLE))) {
$session_visibility = SESSION_VISIBLE_READ_ONLY;
}
} }
//$sql = "SELECT id_user FROM $tbl_session_rel_user WHERE id_session='$id_session' AND relation_type<>".SESSION_RELATION_TYPE_RRHH.""; $sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session = '$id_session' ";
$sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' ";
$result = Database::query($sql); $result = Database::query($sql);
$existingUsers = array(); $existingUsers = array();
while($row = Database::fetch_array($result)){ while($row = Database::fetch_array($result)) {
$existingUsers[] = $row['id_user']; $existingUsers[] = $row['id_user'];
} }
$sql = "SELECT course_code FROM $tbl_session_rel_course WHERE id_session='$id_session'"; $sql = "SELECT course_code FROM $tbl_session_rel_course WHERE id_session = '$id_session'";
$result=Database::query($sql); $result = Database::query($sql);
$course_list=array(); $course_list = array();
while($row=Database::fetch_array($result)) { while($row = Database::fetch_array($result)) {
$course_list[]=$row['course_code']; $course_list[]=$row['course_code'];
} }
if ($send_email) { if ($send_email) {
global $_configuration; //global $_configuration;
//sending emails only //sending emails only
if(is_array($user_list) && count($user_list)>0) { if(is_array($user_list) && count($user_list)>0) {
foreach($user_list as $enreg_user) { foreach($user_list as $enreg_user) {
@ -461,15 +463,15 @@ class SessionManager {
$emailheaders = 'From: '.get_setting('administratorName').' '.get_setting('administratorSurname').' <'.get_setting('emailAdministrator').">\n"; $emailheaders = 'From: '.get_setting('administratorName').' '.get_setting('administratorSurname').' <'.get_setting('emailAdministrator').">\n";
$emailheaders .= 'Reply-To: '.get_setting('emailAdministrator'); $emailheaders .= 'Reply-To: '.get_setting('emailAdministrator');
if ($_configuration['multiple_access_urls']) { /*if (api_get_multiple_access_url()) {
$access_url_id = api_get_current_access_url_id(); $access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1 ){ if ($access_url_id){
$url = api_get_access_url($access_url_id); $url = api_get_access_url($access_url_id);
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".sprintf(get_lang('YouAreRegisterToSessionX'),$session_name) ." \n\n" .get_lang('Address') ." ". get_setting('siteName') ." ". get_lang('Is') ." : ". $url['url'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".get_setting('administratorName')." ".get_setting('administratorSurname')."\n". get_lang('Manager'). " ".get_setting('siteName')."\nT. ".get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".get_setting('emailAdministrator'); $emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".sprintf(get_lang('YouAreRegisterToSessionX'),$session_name) ." \n\n" .get_lang('Address') ." ". get_setting('siteName') ." ". get_lang('Is') ." : ". $url['url'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".get_setting('administratorName')." ".get_setting('administratorSurname')."\n". get_lang('Manager'). " ".get_setting('siteName')."\nT. ".get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".get_setting('emailAdministrator');
} }
} else { } else {*/
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".sprintf(get_lang('YouAreRegisterToSessionX'),$session_name) ." \n\n" .get_lang('Address') ." ". get_setting('siteName') ." ". get_lang('Is') ." : ". $_configuration['root_web'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".get_setting('administratorName')." ".get_setting('administratorSurname')."\n". get_lang('Manager'). " ".get_setting('siteName')."\nT. ".get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".get_setting('emailAdministrator'); $emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".sprintf(get_lang('YouAreRegisterToSessionX'), $session_name) ." \n\n" .get_lang('Address') ." ". get_setting('siteName') ." ". get_lang('Is') ." : ". api_get_path(WEB_PATH) ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".get_setting('administratorName')." ".get_setting('administratorSurname')."\n". get_lang('Manager'). " ".get_setting('siteName')."\nT. ".get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".get_setting('emailAdministrator');
} //}
@api_send_mail($emailto, $emailsubject, $emailbody, $emailheaders); @api_send_mail($emailto, $emailsubject, $emailbody, $emailheaders);
@ -482,23 +484,24 @@ class SessionManager {
// for each course in the session // for each course in the session
$nbr_users=0; $nbr_users=0;
$enreg_course = Database::escape_string($enreg_course); $enreg_course = Database::escape_string($enreg_course);
// delete existing users // delete existing users
if ($empty_users!==false) { if ($empty_users) {
foreach ($existingUsers as $existing_user) { foreach ($existingUsers as $existing_user) {
if(!in_array($existing_user, $user_list)) { if (!in_array($existing_user, $user_list)) {
$sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND id_user='$existing_user' AND status != 2 "; $sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND id_user='$existing_user' ";
Database::query($sql); Database::query($sql);
if(Database::affected_rows()) { if (Database::affected_rows()) {
$nbr_users--; $nbr_users--;
} }
} }
} }
} }
// insert new users into session_rel_course_rel_user and ignore if they already exist // insert new users into session_rel_course_rel_user and ignore if they already exist
foreach ($user_list as $enreg_user) { foreach ($user_list as $enreg_user) {
if(!in_array($enreg_user, $existingUsers)) { if(!in_array($enreg_user, $existingUsers)) {
$enreg_user = Database::escape_string($enreg_user); $enreg_user = Database::escape_string($enreg_user);
$insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user,visibility) VALUES('$id_session','$enreg_course','$enreg_user','$session_visivility')"; $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user,visibility) VALUES('$id_session','$enreg_course','$enreg_user','$session_visibility')";
Database::query($insert_sql); Database::query($insert_sql);
if(Database::affected_rows()) { if(Database::affected_rows()) {
$nbr_users++; $nbr_users++;
@ -1542,7 +1545,8 @@ class SessionManager {
} }
} }
$users = null; $users = null;
$res = self::suscribe_users_to_session($sid, $short_users, 1, true, false); //Subscribing in read only mode
$res = self::suscribe_users_to_session($sid, $short_users, SESSION_VISIBLE_READ_ONLY, true, false);
$short_users = null; $short_users = null;
} }
return $sid; return $sid;

Loading…
Cancel
Save