aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/multipersonsearch.php
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2022-09-26 08:11:22 +0000
committerMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2022-09-26 08:11:22 +0000
commitec684bbd1629803bee4c15faf78c9997aaf7daf5 (patch)
treeff7f8145f3d12469aad4839e16cc77f82d0cced7 /app/controllers/multipersonsearch.php
parent93fb3b44a2f1f4af9e568041a579fda27fa86e6e (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.php40
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);
+ }
+
+
}