Skip to content
Snippets Groups Projects
Commit 07c4c7d2 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms Committed by Jan-Hendrik Willms
Browse files

user admin: allow searching for matriculation number and add matriculation...

user admin: allow searching for matriculation number and add matriculation number to export, fixes #4497

Closes #4497

Merge request studip/studip!3289
parent b4f70725
No related branches found
No related tags found
No related merge requests found
...@@ -102,6 +102,7 @@ class Admin_UserController extends AuthenticatedController ...@@ -102,6 +102,7 @@ class Admin_UserController extends AuthenticatedController
$request['username'] = trim($request['username']); $request['username'] = trim($request['username']);
$request['email'] = trim($request['email']); $request['email'] = trim($request['email']);
$request['matriculation_number'] = trim($request['matriculation_number']);
$request['vorname'] = trim($request['vorname']); $request['vorname'] = trim($request['vorname']);
$request['nachname'] = trim($request['nachname']); $request['nachname'] = trim($request['nachname']);
$request['inaktiv'] = $inaktiv; $request['inaktiv'] = $inaktiv;
...@@ -135,6 +136,7 @@ class Admin_UserController extends AuthenticatedController ...@@ -135,6 +136,7 @@ class Admin_UserController extends AuthenticatedController
'vorname', 'vorname',
'nachname', 'nachname',
'email', 'email',
'matriculation_number',
'inaktiv', 'inaktiv',
'locked', 'locked',
'show_only_not_lectures', 'show_only_not_lectures',
...@@ -162,16 +164,16 @@ class Admin_UserController extends AuthenticatedController ...@@ -162,16 +164,16 @@ class Admin_UserController extends AuthenticatedController
PageLayout::postInfo(_('Sie haben keine Suchkriterien ausgewählt!')); PageLayout::postInfo(_('Sie haben keine Suchkriterien ausgewählt!'));
} elseif (count($this->users) < 1 && Request::submitted('search')) { } elseif (count($this->users) < 1 && Request::submitted('search')) {
PageLayout::postInfo(_('Es wurden keine Personen mit diesen Suchkriterien gefunden.')); PageLayout::postInfo(_('Es wurden keine Personen mit diesen Suchkriterien gefunden.'));
} else { } elseif (!Request::submitted('export')) {
$_SESSION['admin']['user']['results'] = true; $_SESSION['admin']['user']['results'] = true;
PageLayout::postInfo(sprintf(_('Es wurden %s Personen mit diesen Suchkriterien gefunden.'), count($this->users))); PageLayout::postInfo(sprintf(_('Es wurden %s Personen mit diesen Suchkriterien gefunden.'), count($this->users)));
} }
if (is_array($this->users) && Request::submitted('export')) { if (is_array($this->users) && Request::submitted('export')) {
$tmpname = md5(uniqid('tmp'));
$captions = ['username', $captions = ['username',
'vorname', 'vorname',
'nachname', 'nachname',
'email', 'email',
'matriculation_number',
'status', 'status',
'authentifizierung', 'authentifizierung',
'domänen', 'domänen',
...@@ -189,11 +191,12 @@ class Admin_UserController extends AuthenticatedController ...@@ -189,11 +191,12 @@ class Admin_UserController extends AuthenticatedController
$u['Vorname'], $u['Vorname'],
$u['Nachname'], $u['Nachname'],
$u['Email'], $u['Email'],
$u['matriculation_number'],
$u['perms'], $u['perms'],
$u['auth_plugin'], $u['auth_plugin'],
join(';', $userdomains), implode(';', $userdomains),
$u['mkdate'] ? strftime('%x', $u['mkdate']) : '', $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) { foreach ($this->datafields as $datafield) {
$df = new DatafieldEntryModel( $df = new DatafieldEntryModel(
...@@ -207,14 +210,15 @@ class Admin_UserController extends AuthenticatedController ...@@ -207,14 +210,15 @@ class Admin_UserController extends AuthenticatedController
} }
return $data; return $data;
}; };
if (array_to_csv(array_map($mapper, $this->users), $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) {
$this->redirect( $this->render_csv(
FileManager::getDownloadURLForTemporaryFile( array_merge(
$tmpname, [$captions],
array_map($mapper, $this->users),
),
'nutzer-export.csv' 'nutzer-export.csv'
)
); );
} return;
} }
} }
......
...@@ -21,16 +21,21 @@ use Studip\Button; ...@@ -21,16 +21,21 @@ use Studip\Button;
<fieldset> <fieldset>
<legend><?= _('Benutzerverwaltung') ?></legend> <legend><?= _('Benutzerverwaltung') ?></legend>
<label class="col-3"> <label class="col-2">
<?= _('Benutzername') ?> <?= _('Benutzername') ?>
<input name="username" type="text" value="<?= htmlReady($request['username'] ?? '') ?>"> <input name="username" type="text" value="<?= htmlReady($request['username'] ?? '') ?>">
</label> </label>
<label class="col-3"> <label class="col-2">
<?= _('E-Mail') ?> <?= _('E-Mail') ?>
<input name="email" type="text" value="<?= htmlReady($request['email'] ?? '') ?>"> <input name="email" type="text" value="<?= htmlReady($request['email'] ?? '') ?>">
</label> </label>
<label class="col-2">
<?= _('Matrikelnummer') ?>
<input name="matriculation_number" type="text" value="<?= htmlReady($request['matriculation_number'] ?? '') ?>">
</label>
<label class="col-3"> <label class="col-3">
<?= _('Vorname') ?> <?= _('Vorname') ?>
<input name="vorname" type="text" value="<?= htmlReady($request['vorname'] ?? '') ?>"> <input name="vorname" type="text" value="<?= htmlReady($request['vorname'] ?? '') ?>">
......
...@@ -432,6 +432,11 @@ class User extends AuthUserMd5 implements Range, PrivacyObject, Studip\Calendar\ ...@@ -432,6 +432,11 @@ class User extends AuthUserMd5 implements Range, PrivacyObject, Studip\Calendar\
$params[':email'] = self::searchParam($attributes['email']); $params[':email'] = self::searchParam($attributes['email']);
} }
if (!empty($attributes['matriculation_number'])) {
$where[] = "au.`matriculation_number` LIKE :matriculation_number";
$params[':matriculation_number'] = self::searchParam($attributes['matriculation_number']);
}
//permissions //permissions
if (!empty($attributes['perm']) && $attributes['perm'] !== 'alle') { if (!empty($attributes['perm']) && $attributes['perm'] !== 'alle') {
$where[] = "au.`perms` = :perms"; $where[] = "au.`perms` = :perms";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment