diff --git a/main/session/session_export.php b/main/session/session_export.php index 71d958c7b8..0dc16464d6 100644 --- a/main/session/session_export.php +++ b/main/session/session_export.php @@ -33,8 +33,10 @@ $interbreadcrumb[] = ['url' => 'session_list.php', 'name' => get_lang('SessionLi set_time_limit(0); if (isset($_POST['formSent'])) { $formSent = $_POST['formSent']; - $file_type = isset($_POST['file_type']) ? $_POST['file_type'] : 'csv'; + $file_type = $_POST['file_type'] ?? 'csv'; $session_id = $_POST['session_id']; + $includeUsers = !isset($_POST['no_include_users']); + if (empty($session_id)) { $sql = "SELECT s.id, @@ -64,22 +66,22 @@ if (isset($_POST['formSent'])) { } } - $result = Database::query($sql); } else { $sql = "SELECT s.id,name,username,access_start_date,access_end_date,visibility,session_category_id FROM $tbl_session s INNER JOIN $tbl_user ON $tbl_user.user_id = s.id_coach WHERE s.id='$session_id'"; - $result = Database::query($sql); } + $result = Database::query($sql); + if (Database::num_rows($result)) { $sessionListToExport = []; if (in_array($file_type, ['csv', 'xls'])) { $archiveFile = 'export_sessions_'.$session_id.'_'.api_get_local_time(); $cvs = true; - $sessionListToExport[] = [ + $exportHeaders = [ 'SessionId', 'SessionName', 'Coach', @@ -87,9 +89,15 @@ if (isset($_POST['formSent'])) { 'DateEnd', 'Visibility', 'SessionCategory', - 'Users', - 'Courses', ]; + + if ($includeUsers) { + $exportHeaders[] = 'Users'; + } + + $exportHeaders[] = 'Courses'; + + $sessionListToExport[] = $exportHeaders; } else { if (!file_exists($archivePath)) { mkdir($archivePath, api_get_permissions_for_new_directories(), true); @@ -119,26 +127,30 @@ if (isset($_POST['formSent'])) { $row['visibility'] = str_replace(';', ',', $row['visibility']); $row['session_category'] = str_replace(';', ',', $row['session_category_id']); // users - $sql = "SELECT DISTINCT $tbl_user.username + $users = ''; + + if ($includeUsers) { + $sql = "SELECT DISTINCT $tbl_user.username FROM $tbl_user INNER JOIN $tbl_session_user ON $tbl_user.user_id = $tbl_session_user.user_id AND - $tbl_session_user.relation_type<>".SESSION_RELATION_TYPE_RRHH." AND - $tbl_session_user.session_id = '".$row['id']."'"; + $tbl_session_user.relation_type<>" . SESSION_RELATION_TYPE_RRHH . " AND + $tbl_session_user.session_id = '" . $row['id'] . "'"; - $rsUsers = Database::query($sql); - $users = ''; - while ($rowUsers = Database::fetch_array($rsUsers)) { - if ($cvs) { - $users .= str_replace(';', ',', $rowUsers['username']).'|'; - } else { - $users .= "\t\t$rowUsers[username]\n"; + $rsUsers = Database::query($sql); + + while ($rowUsers = Database::fetch_array($rsUsers)) { + if ($cvs) { + $users .= str_replace(';', ',', $rowUsers['username']) . '|'; + } else { + $users .= "\t\t$rowUsers[username]\n"; + } } - } - if (!empty($users) && $cvs) { - $users = api_substr($users, 0, api_strlen($users) - 1); + if (!empty($users) && $cvs) { + $users = api_substr($users, 0, api_strlen($users) - 1); + } } // Courses @@ -171,15 +183,22 @@ if (isset($_POST['formSent'])) { if ($cvs) { $courses .= str_replace(';', ',', $rowCourses['code']); - $courses .= '['.str_replace(';', ',', $coachs).']['; + $courses .= '['.str_replace(';', ',', $coachs).']'; + + if ($includeUsers) { + $courses .= '['; + } } else { $courses .= "\t\t\n"; $courses .= "\t\t\t$rowCourses[code]\n"; $courses .= "\t\t\t$coachs\n"; } - // rel user courses - $sql = "SELECT DISTINCT u.username + $userscourse = ''; + + if ($includeUsers) { + // rel user courses + $sql = "SELECT DISTINCT u.username FROM $tbl_session_course_user scu INNER JOIN $tbl_session_user su ON @@ -192,26 +211,30 @@ if (isset($_POST['formSent'])) { scu.c_id='".$rowCourses['c_id']."' AND scu.session_id='".$row['id']."'"; - $rsUsersCourse = Database::query($sql); - $userscourse = ''; - while ($rowUsersCourse = Database::fetch_array($rsUsersCourse)) { + $rsUsersCourse = Database::query($sql); + while ($rowUsersCourse = Database::fetch_array($rsUsersCourse)) { + if ($cvs) { + $userscourse .= str_replace(';', ',', $rowUsersCourse['username']).','; + } else { + $courses .= "\t\t\t$rowUsersCourse[username]\n"; + } + } + if ($cvs) { - $userscourse .= str_replace(';', ',', $rowUsersCourse['username']).','; - } else { - $courses .= "\t\t\t$rowUsersCourse[username]\n"; + if (!empty($userscourse)) { + $userscourse = api_substr( + $userscourse, + 0, + api_strlen($userscourse) - 1 + ); + } + + $courses .= $userscourse.']'; } } if ($cvs) { - if (!empty($userscourse)) { - $userscourse = api_substr( - $userscourse, - 0, - api_strlen($userscourse) - 1 - ); - } - - $courses .= $userscourse.']|'; + $courses .= '|'; } else { $courses .= "\t\t\n"; } @@ -223,7 +246,7 @@ if (isset($_POST['formSent'])) { $add = $courses; if (in_array($file_type, ['csv', 'xls'])) { - $sessionListToExport[] = [ + $exportContent = [ $row['id'], $row['name'], $row['username'], @@ -231,22 +254,25 @@ if (isset($_POST['formSent'])) { $row['access_end_date'], $row['visibility'], $row['session_category'], - $users, - $courses, ]; + + if ($includeUsers) { + $exportContent[] = $users; + } + + $exportContent[] = $courses; + $sessionListToExport[] = $exportContent; } else { $add = "\t\n" - ."\t\t$row[id]\n" - ."\t\t$row[name]\n" - ."\t\t$row[username]\n" - ."\t\t$row[access_start_date]\n" - ."\t\t$row[access_end_date]\n" - ."\t\t$row[visibility]\n" - ."\t\t$row[session_category]\n"; - } + ."\t\t$row[id]\n" + ."\t\t$row[name]\n" + ."\t\t$row[username]\n" + ."\t\t$row[access_start_date]\n" + ."\t\t$row[access_end_date]\n" + ."\t\t$row[visibility]\n" + ."\t\t$row[session_category]\n" + ."\t\n"; - if (!$cvs) { - $add .= "\t\n"; fputs($fp, $add); } } @@ -264,7 +290,6 @@ if (isset($_POST['formSent'])) { case 'xls': Export::arrayToXls($sessionListToExport, $archiveFile); exit; - break; } } } @@ -310,6 +335,14 @@ foreach ($Sessions as $enreg) { } $form->addElement('select', 'session_id', get_lang('WhichSessionToExport'), $options); +$form->addCheckBox( + 'no_include_users', + [ + get_lang('Users'), + get_lang('ReportDoesNotIncludeListOfUsersNeitherForSessionNorForEachCourse') + ], + get_lang('DoNotIncludeUsers') +); $form->addButtonExport(get_lang('ExportSession')); $defaults = [];