diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index b9939bf420..33c415f603 100755 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -5092,7 +5092,7 @@ class SessionManager if ($i > 1) { $suffix = ' - '.$i; } - $sql = 'SELECT 1 FROM '.$tbl_session.' + $sql = 'SELECT id FROM '.$tbl_session.' WHERE name="'.Database::escape_string($session_name).$suffix.'"'; $rs = Database::query($sql); if (Database::result($rs, 0, 0)) { @@ -5358,18 +5358,19 @@ class SessionManager $extraFieldValueCareer = new ExtraFieldValue('career'); $careerList = isset($enreg['extra_careerid']) && !empty($enreg['extra_careerid']) ? $enreg['extra_careerid'] : []; $careerList = str_replace(['[', ']'], '', $careerList); - $careerList = explode(',', $careerList); $finalCareerIdList = []; - foreach ($careerList as $careerId) { - $realCareerIdList = $extraFieldValueCareer->get_item_id_from_field_variable_and_field_value( - 'external_career_id', - $careerId - ); - if (isset($realCareerIdList['item_id'])) { - $finalCareerIdList[] = $realCareerIdList['item_id']; + if (!empty($careerList)) { + $careerList = explode(',', $careerList); + foreach ($careerList as $careerId) { + $realCareerIdList = $extraFieldValueCareer->get_item_id_from_field_variable_and_field_value( + 'external_career_id', + $careerId + ); + if (isset($realCareerIdList['item_id'])) { + $finalCareerIdList[] = $realCareerIdList['item_id']; + } } } - foreach ($users as $user) { $user_id = UserManager::get_user_id_from_username($user); if ($user_id !== false) { diff --git a/main/session/session_import.php b/main/session/session_import.php index f27dd633e6..debde179e8 100644 --- a/main/session/session_import.php +++ b/main/session/session_import.php @@ -228,10 +228,27 @@ if (isset($_POST['formSent']) && $_POST['formSent']) { } } - $visibility = trim(api_utf8_decode($node_session->Visibility)); - $session_category_id = trim(api_utf8_decode($node_session->SessionCategory)); + // Default visibility + $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. $unique_name = false; // This MUST be initializead. $i = 0; @@ -240,7 +257,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) { if ($i > 1) { $suffix = ' - '.$i; } - $sql = 'SELECT 1 FROM '.$tbl_session.' + $sql = 'SELECT id FROM '.$tbl_session.' WHERE name="'.Database::escape_string($session_name.$suffix).'"'; $rs = Database::query($sql); if (Database::result($rs, 0, 0)) { @@ -252,14 +269,15 @@ if (isset($_POST['formSent']) && $_POST['formSent']) { } // Creating the session. - $sql_session = "INSERT IGNORE INTO $tbl_session SET + $sql_session = "INSERT INTO $tbl_session SET name = '".Database::escape_string($session_name)."', id_coach = '$coach_id', access_start_date = '$date_start', access_end_date = '$date_end', - visibility = '$visibility', - session_category_id = '$session_category_id', - session_admin_id=".intval($_user['user_id']); + visibility = '$visibilityAfterExpirationPerSession', + ".(!empty($session_category_id) ? "session_category_id = '{$session_category_id}'," : "")." + session_admin_id=".api_get_user_id(); + $rs_session = Database::query($sql_session); $session_id = Database::insert_id(); $session_counter++; @@ -268,14 +286,14 @@ if (isset($_POST['formSent']) && $_POST['formSent']) { $my_session_result = SessionManager::get_session_by_name($session_name); if ($my_session_result === false) { // Creating the session. - $sql_session = "INSERT IGNORE INTO $tbl_session SET + $sql_session = "INSERT INTO $tbl_session SET name = '".Database::escape_string($session_name)."', id_coach = '$coach_id', access_start_date = '$date_start', access_end_date = '$date_end', - visibility = '$visibility', - session_category_id = '$session_category_id', - session_admin_id=".intval($_user['user_id']); + visibility = '$visibilityAfterExpirationPerSession', + ".(!empty($session_category_id) ? "session_category_id = '{$session_category_id}'," : "")." + session_admin_id=".api_get_user_id(); $rs_session = Database::query($sql_session); $session_id = Database::insert_id(); $session_counter++; @@ -285,7 +303,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) { id_coach = '$coach_id', access_start_date = '$date_start', access_end_date = '$date_end', - visibility = '$visibility', + visibility = '$visibilityAfterExpirationPerSession', session_category_id = '$session_category_id' WHERE name = '$session_name'"; $rs_session = Database::query($sql_session); @@ -335,7 +353,7 @@ if (isset($_POST['formSent']) && $_POST['formSent']) { c_id = $courseId, session_id = $session_id"; $rs_course = Database::query($sql_course); - SessionManager::installCourse($id_session, $courseId); + SessionManager::installCourse($session_id, $courseId); } $course_coaches = explode(',', $node_course->Coach);