diff options
| author | David Siegfried <david.siegfried@uni-vechta.de> | 2024-03-19 17:47:41 +0000 |
|---|---|---|
| committer | David Siegfried <david.siegfried@uni-vechta.de> | 2024-03-19 17:47:41 +0000 |
| commit | da2db09e67df32353674589d195112ba04536657 (patch) | |
| tree | 1960a289fd0450340c4b577282ade81c236d3c13 /app/controllers/course/statusgroups.php | |
| parent | 6698033b83d8761de959e877880afc824a86548c (diff) | |
refine member-export, fixes #3841
Closes #3841
Merge request studip/studip!2711
Diffstat (limited to 'app/controllers/course/statusgroups.php')
| -rw-r--r-- | app/controllers/course/statusgroups.php | 69 |
1 files changed, 33 insertions, 36 deletions
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); } /** |
