PluginProbe
User Access Manager / 2.3.15
User Access Manager v2.3.15
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / Controller / Backend / DynamicGroupsController.php

DynamicGroupsController.php in User Access Manager 2.3.15, at src/Controller/Backend/DynamicGroupsController.php

63 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace UserAccessManager\Controller\Backend;
6
7 use JetBrains\PhpStorm\NoReturn;
8 use UserAccessManager\UserGroup\DynamicUserGroup;
9 use WP_Role;
10
11 class DynamicGroupsController extends ObjectController
12 {
13 /**
14 * Returns the dynamic user groups for the ajax request.
15 */
16 #[NoReturn]
17 public function getDynamicGroupsForAjax(): void
18 {
19 if ($this->checkUserAccess() === false) {
20 echo json_encode([]);
21 $this->php->callExit();
22 return;
23 }
24
25 $search = $this->getRequestParameter('q');
26 $searches = explode(',', $search);
27 $search = trim(end($searches));
28
29 $users = $this->wordpress->getUsers([
30 'search' => '*' . $search . '*',
31 'fields' => ['ID', 'display_name', 'user_login', 'user_email']
32 ]);
33 $matches = array_map(
34 function ($element) {
35 return [
36 'id' => $element->ID,
37 'name' => TXT_UAM_USER . ": $element->display_name ($element->user_login)",
38 'type' => DynamicUserGroup::USER_TYPE
39 ];
40 },
41 $users
42 );
43
44 /**
45 * @var WP_Role[] $roles
46 */
47 $roles = $this->wordpress->getRoles()->roles;
48
49 foreach ($roles as $key => $role) {
50 if (str_contains(strtolower($role['name']), strtolower($search))) {
51 $matches[] = [
52 'id' => $key,
53 'name' => TXT_UAM_ROLE . ': ' . $role['name'],
54 'type' => DynamicUserGroup::ROLE_TYPE
55 ];
56 }
57 }
58
59 echo json_encode($matches);
60 $this->php->callExit();
61 }
62 }
63