Merge pull request #3964 from christianbeeznest/ASF-19113

Session import: Fix csv and xml import when name already exists - refs BT#19147
pull/3972/head
Angel Fernando Quiroz Campos 4 years ago committed by GitHub
commit 008a2543a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 21
      main/inc/lib/sessionmanager.lib.php
  2. 46
      main/session/session_import.php

@ -5092,7 +5092,7 @@ class SessionManager
if ($i > 1) { if ($i > 1) {
$suffix = ' - '.$i; $suffix = ' - '.$i;
} }
$sql = 'SELECT 1 FROM '.$tbl_session.' $sql = 'SELECT id FROM '.$tbl_session.'
WHERE name="'.Database::escape_string($session_name).$suffix.'"'; WHERE name="'.Database::escape_string($session_name).$suffix.'"';
$rs = Database::query($sql); $rs = Database::query($sql);
if (Database::result($rs, 0, 0)) { if (Database::result($rs, 0, 0)) {
@ -5358,18 +5358,19 @@ class SessionManager
$extraFieldValueCareer = new ExtraFieldValue('career'); $extraFieldValueCareer = new ExtraFieldValue('career');
$careerList = isset($enreg['extra_careerid']) && !empty($enreg['extra_careerid']) ? $enreg['extra_careerid'] : []; $careerList = isset($enreg['extra_careerid']) && !empty($enreg['extra_careerid']) ? $enreg['extra_careerid'] : [];
$careerList = str_replace(['[', ']'], '', $careerList); $careerList = str_replace(['[', ']'], '', $careerList);
$careerList = explode(',', $careerList);
$finalCareerIdList = []; $finalCareerIdList = [];
foreach ($careerList as $careerId) { if (!empty($careerList)) {
$realCareerIdList = $extraFieldValueCareer->get_item_id_from_field_variable_and_field_value( $careerList = explode(',', $careerList);
'external_career_id', foreach ($careerList as $careerId) {
$careerId $realCareerIdList = $extraFieldValueCareer->get_item_id_from_field_variable_and_field_value(
); 'external_career_id',
if (isset($realCareerIdList['item_id'])) { $careerId
$finalCareerIdList[] = $realCareerIdList['item_id']; );
if (isset($realCareerIdList['item_id'])) {
$finalCareerIdList[] = $realCareerIdList['item_id'];
}
} }
} }
foreach ($users as $user) { foreach ($users as $user) {
$user_id = UserManager::get_user_id_from_username($user); $user_id = UserManager::get_user_id_from_username($user);
if ($user_id !== false) { if ($user_id !== false) {

@ -228,10 +228,27 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
} }
} }
$visibility = trim(api_utf8_decode($node_session->Visibility)); // Default visibility
$session_category_id = trim(api_utf8_decode($node_session->SessionCategory)); $visibilityAfterExpirationPerSession = SESSION_VISIBLE_READ_ONLY;
if (isset($node_session->VisibilityAfterExpiration)) {
$visibility = trim(api_utf8_decode($node_session->VisibilityAfterExpiration));
switch ($visibility) {
case 'accessible':
$visibilityAfterExpirationPerSession = SESSION_VISIBLE;
break;
case 'not_accessible':
$visibilityAfterExpirationPerSession = SESSION_INVISIBLE;
break;
case 'read_only':
default:
$visibilityAfterExpirationPerSession = SESSION_VISIBLE_READ_ONLY;
break;
}
}
$session_category_id = (int) trim(api_utf8_decode($node_session->SessionCategory));
if (!$updatesession) { if (!$isOverwrite) {
// Always create a session. // Always create a session.
$unique_name = false; // This MUST be initializead. $unique_name = false; // This MUST be initializead.
$i = 0; $i = 0;
@ -240,7 +257,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
if ($i > 1) { if ($i > 1) {
$suffix = ' - '.$i; $suffix = ' - '.$i;
} }
$sql = 'SELECT 1 FROM '.$tbl_session.' $sql = 'SELECT id FROM '.$tbl_session.'
WHERE name="'.Database::escape_string($session_name.$suffix).'"'; WHERE name="'.Database::escape_string($session_name.$suffix).'"';
$rs = Database::query($sql); $rs = Database::query($sql);
if (Database::result($rs, 0, 0)) { if (Database::result($rs, 0, 0)) {
@ -252,14 +269,15 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
} }
// Creating the session. // Creating the session.
$sql_session = "INSERT IGNORE INTO $tbl_session SET $sql_session = "INSERT INTO $tbl_session SET
name = '".Database::escape_string($session_name)."', name = '".Database::escape_string($session_name)."',
id_coach = '$coach_id', id_coach = '$coach_id',
access_start_date = '$date_start', access_start_date = '$date_start',
access_end_date = '$date_end', access_end_date = '$date_end',
visibility = '$visibility', visibility = '$visibilityAfterExpirationPerSession',
session_category_id = '$session_category_id', ".(!empty($session_category_id) ? "session_category_id = '{$session_category_id}'," : "")."
session_admin_id=".intval($_user['user_id']); session_admin_id=".api_get_user_id();
$rs_session = Database::query($sql_session); $rs_session = Database::query($sql_session);
$session_id = Database::insert_id(); $session_id = Database::insert_id();
$session_counter++; $session_counter++;
@ -268,14 +286,14 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
$my_session_result = SessionManager::get_session_by_name($session_name); $my_session_result = SessionManager::get_session_by_name($session_name);
if ($my_session_result === false) { if ($my_session_result === false) {
// Creating the session. // Creating the session.
$sql_session = "INSERT IGNORE INTO $tbl_session SET $sql_session = "INSERT INTO $tbl_session SET
name = '".Database::escape_string($session_name)."', name = '".Database::escape_string($session_name)."',
id_coach = '$coach_id', id_coach = '$coach_id',
access_start_date = '$date_start', access_start_date = '$date_start',
access_end_date = '$date_end', access_end_date = '$date_end',
visibility = '$visibility', visibility = '$visibilityAfterExpirationPerSession',
session_category_id = '$session_category_id', ".(!empty($session_category_id) ? "session_category_id = '{$session_category_id}'," : "")."
session_admin_id=".intval($_user['user_id']); session_admin_id=".api_get_user_id();
$rs_session = Database::query($sql_session); $rs_session = Database::query($sql_session);
$session_id = Database::insert_id(); $session_id = Database::insert_id();
$session_counter++; $session_counter++;
@ -285,7 +303,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
id_coach = '$coach_id', id_coach = '$coach_id',
access_start_date = '$date_start', access_start_date = '$date_start',
access_end_date = '$date_end', access_end_date = '$date_end',
visibility = '$visibility', visibility = '$visibilityAfterExpirationPerSession',
session_category_id = '$session_category_id' session_category_id = '$session_category_id'
WHERE name = '$session_name'"; WHERE name = '$session_name'";
$rs_session = Database::query($sql_session); $rs_session = Database::query($sql_session);
@ -335,7 +353,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) {
c_id = $courseId, c_id = $courseId,
session_id = $session_id"; session_id = $session_id";
$rs_course = Database::query($sql_course); $rs_course = Database::query($sql_course);
SessionManager::installCourse($id_session, $courseId); SessionManager::installCourse($session_id, $courseId);
} }
$course_coaches = explode(',', $node_course->Coach); $course_coaches = explode(',', $node_course->Coach);

Loading…
Cancel
Save