Session import modifs see #7116

Adding "remove user not in list" and "update session in list" options.
1.9.x
Julio Montoya 12 years ago
parent 346f7eb6ff
commit cae20a5ce2
  1. 23
      main/admin/session_import.php
  2. 45
      main/inc/lib/sessionmanager.lib.php

@ -49,8 +49,8 @@ if ($_POST['formSent']) {
$form_sent = $_POST['formSent'];
$file_type = $_POST['file_type'];
$send_mail = $_POST['sendMail'] ? 1 : 0;
//$updatesession = $_POST['updatesession'] ? 1 : 0;
$updatesession = 0;
$isOverwrite = $_POST['overwrite'] ? 1 : 0;
$deleteUsersNotInList = isset($_POST['delete_users_not_in_list']) ? true : false;
$sessions = array();
$session_counter = 0;
@ -458,10 +458,20 @@ if ($_POST['formSent']) {
$error_message .= get_lang('XMLNotValid');
}
} else {
// CSV
$result = SessionManager::importCSV($_FILES['import_file']['tmp_name'], $updatesession, api_get_user_id());
$result = SessionManager::importCSV(
$_FILES['import_file']['tmp_name'],
$isOverwrite,
api_get_user_id(),
null,
array(),
null,
null,
null,
1,
array(),
$deleteUsersNotInList
);
$error_message = $result['error_message'];
$session_counter = $result['session_counter'];
}
@ -512,10 +522,11 @@ if (!empty($error_message)) {
$form = new FormValidator('import_sessions', 'post', api_get_self(), null, array('enctype' => 'multipart/form-data'));
$form->addElement('hidden', 'formSent', 1);
$form->addElement('file', 'import_file', get_lang('ImportFileLocation'));
$form->addElement('radio', 'file_type', array(get_lang('FileType'), '<a href="example_session.csv" target="_blank">'.get_lang('ExampleCSVFile').'</a>'), 'CSV', 'csv');
$form->addElement('radio', 'file_type', array(null, '<a href="example_session.xml" target="_blank">'.get_lang('ExampleXMLFile').'</a>'), 'XML', 'xml');
$form->addElement('checkbox', 'overwrite', null, get_lang('IfSessionExistsUpdate'));
$form->addElement('checkbox', 'delete_users_not_in_list', null, get_lang('DeleteUsersNotInList'));
$form->addElement('checkbox', 'sendMail', null, get_lang('SendMailToUsers'));
$form->addElement('button', 'submit', get_lang('ImportSession'));

@ -1406,24 +1406,31 @@ class SessionManager
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$delete_sql = "DELETE FROM $tbl_session_rel_user WHERE id_session = '$session_id' AND id_user ='$user_id' AND relation_type<>".SESSION_RELATION_TYPE_RRHH."";
$delete_sql = "DELETE FROM $tbl_session_rel_user
WHERE id_session = '$session_id' AND
id_user ='$user_id' AND
relation_type <> ".SESSION_RELATION_TYPE_RRHH."";
Database::query($delete_sql);
$return = Database::affected_rows();
// Update number of users
$update_sql = "UPDATE $tbl_session SET nbr_users= nbr_users - $return WHERE id='$session_id' ";
Database::query($update_sql);
$sql = "UPDATE $tbl_session SET nbr_users = nbr_users - $return WHERE id='$session_id' ";
Database::query($sql);
// Get the list of courses related to this session
$course_list = SessionManager::get_course_list_by_session_id($session_id);
if(!empty($course_list)) {
if (!empty($course_list)) {
foreach($course_list as $course) {
$course_code = $course['code'];
// Delete user from course
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='$user_id'");
if(Database::affected_rows()) {
$sql = "DELETE FROM $tbl_session_rel_course_rel_user
WHERE id_session='$session_id' AND course_code='$course_code' AND id_user='$user_id'";
Database::query($sql);
if (Database::affected_rows()) {
// Update number of users in this relation
Database::query("UPDATE $tbl_session_rel_course SET nbr_users=nbr_users - 1 WHERE id_session='$session_id' AND course_code='$course_code'");
$sql = "UPDATE $tbl_session_rel_course SET nbr_users=nbr_users - 1
WHERE id_session='$session_id' AND course_code='$course_code'";
Database::query($sql);
}
}
}
@ -2640,7 +2647,8 @@ class SessionManager
$daysCoachAccessBeforeBeginning = null,
$daysCoachAccessAfterBeginning = null,
$sessionVisibility = 1,
$fieldsToAvoidUpdate = array()
$fieldsToAvoidUpdate = array(),
$deleteUsersNotInList = false
) {
$content = file($file);
@ -2708,7 +2716,7 @@ class SessionManager
}
}
$session_name = Database::escape_string($enreg['SessionName']);
$session_name = Database::escape_string($enreg['SessionName']);
if (empty($session_name)) {
continue;
@ -2901,6 +2909,25 @@ class SessionManager
}
}
if ($deleteUsersNotInList) {
// Getting user in DB in order to compare to the new list.
$usersListInDatabase = self::get_users_by_session($session_id, 0);
if (!empty($usersListInDatabase)) {
if (empty($userList)) {
foreach ($usersListInDatabase as $userInfo) {
self::unsubscribe_user_from_session($session_id, $userInfo['user_id']);
}
} else {
foreach ($usersListInDatabase as $userInfo) {
if (!in_array($userInfo['user_id'], $userList)) {
self::unsubscribe_user_from_session($session_id, $userInfo['user_id']);
}
}
}
}
}
$courses = explode('|', $enreg['Courses']);
foreach ($courses as $course) {

Loading…
Cancel
Save