diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2022-09-26 08:11:22 +0000 |
|---|---|---|
| committer | Marcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de> | 2022-09-26 08:11:22 +0000 |
| commit | ec684bbd1629803bee4c15faf78c9997aaf7daf5 (patch) | |
| tree | ff7f8145f3d12469aad4839e16cc77f82d0cced7 /app/controllers/multipersonsearch.php | |
| parent | 93fb3b44a2f1f4af9e568041a579fda27fa86e6e (diff) | |
StEP00362: Rechte- und Zugriffsverwaltung für Arbeitsplatz > Lernmaterialien
Closes #919
Merge request studip/studip!639
Diffstat (limited to 'app/controllers/multipersonsearch.php')
| -rw-r--r-- | app/controllers/multipersonsearch.php | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/app/controllers/multipersonsearch.php b/app/controllers/multipersonsearch.php index d036315..01733cb 100644 --- a/app/controllers/multipersonsearch.php +++ b/app/controllers/multipersonsearch.php @@ -110,7 +110,8 @@ class MultipersonsearchController extends AuthenticatedController * This needs to be done in one single action to provider a similar * usability for no-JavaScript users as for JavaScript users. */ - public function no_js_form_action() { + public function no_js_form_action() + { if (!empty($_POST)) { CSRFProtection::verifyUnsafeRequest(); @@ -243,4 +244,41 @@ class MultipersonsearchController extends AuthenticatedController } + + public function ajax_search_vue_action($name) + { + $searchterm = Request::get('s'); + $searchterm = str_replace(',', ' ', $searchterm); + $searchterm = preg_replace('/\s+/u', ' ', $searchterm); + + $result = []; + // execute searchobject if searchterm is at least 3 chars long + if (mb_strlen($searchterm) >= 3) { + $mp = MultiPersonSearch::load($name); + $mp->setSearchObject(new StandardSearch('user_id')); + $searchObject = $mp->getSearchObject(); + $result = array_map(function ($r) { + return $r['user_id']; + }, $searchObject->getResults($searchterm, [], 50)); + $result = User::findFullMany($result, 'ORDER BY Nachname ASC, Vorname ASC'); + $alreadyMember = $mp->getDefaultSelectedUsersIDs(); + } + + $output = []; + foreach ($result as $user) { + $output[] = [ + 'id' => $user->id, + 'avatar' => Avatar::getAvatar($user->id)->getURL(Avatar::SMALL), + 'text' => "{$user->nachname}, {$user->vorname} -- {$user->perms} ({$user->username})", + 'selected' => $alreadyMember === null ? false : in_array($user->id, $alreadyMember), + 'nachname' => $user->nachname, + 'vorname' => $user->vorname, + 'username' => $user->username, + 'formatted-name' => trim($user->getFullName()) + ]; + } + $this->render_json($output); + } + + } |
