aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDavid Siegfried <david.siegfried@uni-vechta.de>2024-03-19 17:47:41 +0000
committerDavid Siegfried <david.siegfried@uni-vechta.de>2024-03-19 17:47:41 +0000
commitda2db09e67df32353674589d195112ba04536657 (patch)
tree1960a289fd0450340c4b577282ade81c236d3c13 /app
parent6698033b83d8761de959e877880afc824a86548c (diff)
refine member-export, fixes #3841
Closes #3841 Merge request studip/studip!2711
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin/user.php25
-rw-r--r--app/controllers/course/members.php25
-rw-r--r--app/controllers/course/statusgroups.php69
-rw-r--r--app/controllers/institute/members.php2
4 files changed, 65 insertions, 56 deletions
diff --git a/app/controllers/admin/user.php b/app/controllers/admin/user.php
index 7c6ea9a..70dfdf1 100644
--- a/app/controllers/admin/user.php
+++ b/app/controllers/admin/user.php
@@ -1666,16 +1666,25 @@ class Admin_UserController extends AuthenticatedController
mkdir($tmp_folder);
$courses = Course::findMany(Request::optionArray('courses'));
-
+ $header = [
+ _('Status'),
+ _('Anrede'),
+ _('Titel'),
+ _('Vorname'),
+ _('Nachname'),
+ _('Titel nachgestellt'),
+ _('Benutzername'),
+ _('Adresse'),
+ _('Telefonnr.'),
+ _('E-Mail'),
+ _('Anmeldedatum'),
+ _('Matrikelnummer'),
+ _('Studiengänge'),
+ _('Position'),
+ ];
foreach ($courses as $course) {
- $header = ['Status', 'Anrede', 'Titel', 'Vorname', 'Nachname', 'Titel nachgestellt', 'Benutzername', 'Adresse', 'Telefonnr.',
- 'E-Mail', 'Anmeldedatum', 'Matrikelnummer', 'Studiengänge'];
- $members = CourseMember::getMemberDataByCourse($course->seminar_id);
- foreach ($members as &$member) {
- $member['Anmeldedatum'] = $member['Anmeldedatum'] ? date('d.m.Y', $member['Anmeldedatum']) : _('unbekannt');
- unset($member['user_id']);
- }
+ $members = $course->getMembersData();
$filename = FileManager::cleanFileName('Teilnehmendenexport ' . $course->Name . '.' . $export_format);
$filepath = $tmp_folder . '/'. $filename;
diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php
index bf07221..3eae083 100644
--- a/app/controllers/course/members.php
+++ b/app/controllers/course/members.php
@@ -1676,7 +1676,16 @@ class Course_MembersController extends AuthenticatedController
if (count($this->awaiting) > 0) {
$widget->addLink(
- _('Warteliste CSV-Datei exportieren'),
+ _('Warteliste als Excel-Datei exportieren'),
+ URLHelper::getURL('dispatch.php/course/members/export', [
+ 'course_id' => $this->course_id,
+ 'format' => 'xlsx',
+ 'status' => $this->waiting_type,
+ ]),
+ Icon::create('export')
+ );
+ $widget->addLink(
+ _('Warteliste als CSV-Datei exportieren'),
URLHelper::getURL('dispatch.php/course/members/export', [
'course_id' => $this->course_id,
'format' => 'csv',
@@ -1738,7 +1747,6 @@ class Course_MembersController extends AuthenticatedController
if ($export_format !== 'csv' && $export_format !== 'xlsx') {
throw new Exception('Wrong format');
}
-
$header = [
_('Status'),
_('Anrede'),
@@ -1752,23 +1760,18 @@ class Course_MembersController extends AuthenticatedController
_('E-Mail'),
_('Anmeldedatum'),
_('Matrikelnummer'),
+ _('Studiengänge'),
+ _('Position'),
];
if (in_array($status, ['awaiting', 'claiming'])) {
- $header[] = _('Position');
$filename = _('Wartelistenexport');
} else {
$filename = _('Teilnehmendenexport');
}
- $header[] = _('Studiengänge');
-
- $members = CourseMember::getMemberDataByCourse($this->course_id, $status);
-
- foreach ($members as &$member) {
- $member['Anmeldedatum'] = $member['Anmeldedatum'] ? date("d.m.Y", $member['Anmeldedatum']) : _("unbekannt");
- unset($member['user_id']);
- }
+ $course = Course::findCurrent();
+ $members = $course->getMembersData($status);
$filename = $filename . ' ' . $this->course_title . '.' . $export_format;
diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php
index d2921a7..c15733d 100644
--- a/app/controllers/course/statusgroups.php
+++ b/app/controllers/course/statusgroups.php
@@ -265,7 +265,7 @@ class Course_StatusgroupsController extends AuthenticatedController
);
$export->addLink(
- _('Als .csv exportieren'),
+ _('Als CSV-Datei exportieren'),
URLHelper::getURL('dispatch.php/course/statusgroups/export', [
'course_id' => $this->course_id,
'format' => 'csv',
@@ -311,57 +311,54 @@ class Course_StatusgroupsController extends AuthenticatedController
throw new Exception('Wrong format');
}
- if (Request::get('institute_id')) {
- $institute_id = Request::get('institute_id');
- }
+ $course = Course::findCurrent();
- $header = [_('Gruppe'), _('Titel'), _('Vorname'), _('Nachname'), _('Titel nachgestellt'), _('Nutzername'),
- _('Privatadresse'), _('Privatnr.'), _('E-Mail'), _('Anmeldedatum'), _('Studiengänge')];
+ $header = [
+ _('Gruppe'),
+ _('geschlecht'),
+ _('Titel'),
+ _('Vorname'),
+ _('Nachname'),
+ _('Titel nachgestellt'),
+ _('Nutzername'),
+ _('Privatadresse'),
+ _('Privatnr.'),
+ _('E-Mail'),
+ _('Anmeldedatum'),
+ _('Matrikelnummer'),
+ _('Studiengänge')
+ ];
- $temp = [];
$groups = Statusgruppen::findBySeminar_id($this->course_id);
+ $result = [];
if ($groups) {
+ $assigned_with_group = [];
foreach ($groups as $group) {
- foreach ($group['members'] as $mem) {
- $member_data = CourseMember::getMemberDataByCourse($this->course_id, '', $mem['user_id']);
-
- foreach ($member_data as &$mem_data) {
- $mem_data['Anmeldedatum'] = $mem_data['Anmeldedatum'] ? date('d.m.Y', $mem_data['Anmeldedatum']) : _('unbekannt');
-
- if (!isset($temp[$group['name']])) {
- $temp[$group['name']] = [];
- }
- $temp[$group['name']][$mem_data['user_id']] = [
- 'Gruppe' => $group['name'],
- 'Titel' => $mem_data['title_front'],
- 'Vorname' => $mem_data['Vorname'],
- 'Nachname' => $mem_data['Nachname'],
- 'Titel nachgestellt' => $mem_data['title_rear'],
- 'Nutzername' => $mem_data['title_front'],
- 'Privatadresse' => $mem_data['privadr'],
- 'Privatnr.' => $mem_data['privatnr'],
- 'E-Mail' => $mem_data['Email'],
- 'Anmeldedatum' => $mem_data['Anmeldedatum'],
- 'Studiengänge' => $mem_data['studiengaenge'],
- ];
+ foreach ($group->members as $member) {
+ if (!in_array($member->user_id, $assigned_with_group)) {
+ $assigned_with_group[] = $member->user_id;
}
+ $result[$member->user_id] = $member->getExportData();
}
}
- }
+ $members = $course->members->filter(function($group_member) use ($assigned_with_group) {
+ return !in_array($group_member->user_id, $assigned_with_group);
+ })->orderBy('position');
+
+ foreach ($members as $member) {
+ $data = ['gruppe' => _('keiner Funktion oder Gruppe zugeordnet')] + $member->getExportData();
- $statusgroup_data = [];
+ unset($data['status']);
+ unset($data['position']);
- foreach ($temp as $group => $group_members) {
- foreach ($group_members as $member) {
- $statusgroup_data[] = $member;
+ $result[$member->user_id] = $data;
}
-
}
$filename = FileManager::cleanFileName(_('Gruppenliste') . ' ' . $this->course_title . '.' . $export_format);
- $this->render_spreadsheet($header, $statusgroup_data, $export_format, $filename);
+ $this->render_spreadsheet($header, $result, $export_format, $filename);
}
/**
diff --git a/app/controllers/institute/members.php b/app/controllers/institute/members.php
index 1d49012..4158478 100644
--- a/app/controllers/institute/members.php
+++ b/app/controllers/institute/members.php
@@ -654,7 +654,7 @@ class Institute_MembersController extends AuthenticatedController
Icon::create('export')
);
$widget->addLink(
- _('Als .csv exportieren'),
+ _('Als CSV-Datei exportieren'),
URLHelper::getURL('dispatch.php/institute/members/export', [
'institute_id' => $this->institute->id,
'format' => 'csv',