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 = [];