From 07c4c7d2a3f0fc45ddc7c611aca9863e599b84f7 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Thu, 22 Aug 2024 07:50:13 +0000 Subject: user admin: allow searching for matriculation number and add matriculation number to export, fixes #4497 Closes #4497 Merge request studip/studip!3289 --- app/controllers/admin/user.php | 38 +++++++++++++++++++++----------------- app/views/admin/user/index.php | 9 +++++++-- lib/models/User.class.php | 5 +++++ 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/app/controllers/admin/user.php b/app/controllers/admin/user.php index d60a387..a9a04cf 100644 --- a/app/controllers/admin/user.php +++ b/app/controllers/admin/user.php @@ -100,11 +100,12 @@ class Admin_UserController extends AuthenticatedController } } - $request['username'] = trim($request['username']); - $request['email'] = trim($request['email']); - $request['vorname'] = trim($request['vorname']); - $request['nachname'] = trim($request['nachname']); - $request['inaktiv'] = $inaktiv; + $request['username'] = trim($request['username']); + $request['email'] = trim($request['email']); + $request['matriculation_number'] = trim($request['matriculation_number']); + $request['vorname'] = trim($request['vorname']); + $request['nachname'] = trim($request['nachname']); + $request['inaktiv'] = $inaktiv; $request['datafields'] = $search_datafields; $_SESSION['admin']['user'] = $request; @@ -135,6 +136,7 @@ class Admin_UserController extends AuthenticatedController 'vorname', 'nachname', 'email', + 'matriculation_number', 'inaktiv', 'locked', 'show_only_not_lectures', @@ -162,16 +164,16 @@ class Admin_UserController extends AuthenticatedController PageLayout::postInfo(_('Sie haben keine Suchkriterien ausgewählt!')); } elseif (count($this->users) < 1 && Request::submitted('search')) { PageLayout::postInfo(_('Es wurden keine Personen mit diesen Suchkriterien gefunden.')); - } else { + } elseif (!Request::submitted('export')) { $_SESSION['admin']['user']['results'] = true; PageLayout::postInfo(sprintf(_('Es wurden %s Personen mit diesen Suchkriterien gefunden.'), count($this->users))); } if (is_array($this->users) && Request::submitted('export')) { - $tmpname = md5(uniqid('tmp')); $captions = ['username', 'vorname', 'nachname', 'email', + 'matriculation_number', 'status', 'authentifizierung', 'domänen', @@ -189,11 +191,12 @@ class Admin_UserController extends AuthenticatedController $u['Vorname'], $u['Nachname'], $u['Email'], + $u['matriculation_number'], $u['perms'], $u['auth_plugin'], - join(';', $userdomains), + implode(';', $userdomains), $u['mkdate'] ? strftime('%x', $u['mkdate']) : '', - $u->online->last_lifesign ? strftime('%x', $u->online->last_lifesign) : '' + isset($u->online->last_lifesign) ? strftime('%x', $u->online->last_lifesign) : '' ]; foreach ($this->datafields as $datafield) { $df = new DatafieldEntryModel( @@ -207,14 +210,15 @@ class Admin_UserController extends AuthenticatedController } return $data; }; - if (array_to_csv(array_map($mapper, $this->users), $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) { - $this->redirect( - FileManager::getDownloadURLForTemporaryFile( - $tmpname, - 'nutzer-export.csv' - ) - ); - } + + $this->render_csv( + array_merge( + [$captions], + array_map($mapper, $this->users), + ), + 'nutzer-export.csv' + ); + return; } } diff --git a/app/views/admin/user/index.php b/app/views/admin/user/index.php index 77c6937..2470428 100644 --- a/app/views/admin/user/index.php +++ b/app/views/admin/user/index.php @@ -21,16 +21,21 @@ use Studip\Button;
-