PluginProbe
User Access Manager / 2.3.16
User Access Manager v2.3.16
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 / ObjectMembership / ObjectMembershipWithMapHandler.php

ObjectMembershipWithMapHandler.php in User Access Manager 2.3.16, at src/ObjectMembership/ObjectMembershipWithMapHandler.php

79 lines 2.5 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\ObjectMembership;
6
7 use Exception;
8 use UserAccessManager\Object\ObjectMapHandler;
9 use UserAccessManager\UserGroup\AbstractUserGroup;
10 use UserAccessManager\UserGroup\AssignmentInformation;
11
12 abstract class ObjectMembershipWithMapHandler extends ObjectMembershipHandler
13 {
14 /**
15 * Returns the map.
16 * @return array
17 */
18 abstract protected function getMap(): array;
19
20 /**
21 * @throws Exception
22 */
23 protected function getMembershipByMap(
24 AbstractUserGroup $userGroup,
25 bool $lockRecursive,
26 int|string|null $objectId,
27 ?AssignmentInformation &$assignmentInformation = null
28 ): bool {
29 // Reset value to prevent errors
30 $recursiveMembership = [];
31
32 if ($lockRecursive === true) {
33 $map = $this->getMap();
34 $generalMap = $map[ObjectMapHandler::TREE_MAP_PARENTS][$this->generalObjectType] ?? [];
35
36 if (isset($generalMap[$objectId]) === true) {
37 foreach ($generalMap[$objectId] as $parentId => $type) {
38 $isObjectMember = $userGroup->isObjectMember(
39 $this->generalObjectType,
40 $parentId,
41 $rmAssignmentInformation
42 );
43
44 if ($isObjectMember === true) {
45 $recursiveMembership[$this->generalObjectType][$parentId] = $rmAssignmentInformation;
46 }
47 }
48 }
49 }
50
51 $isMember = $userGroup->isObjectAssignedToGroup($this->generalObjectType, $objectId, $assignmentInformation);
52 return $this->checkAccessWithRecursiveMembership($isMember, $recursiveMembership, $assignmentInformation);
53 }
54
55 /**
56 * @throws Exception
57 */
58 protected function getFullObjectsByMap(AbstractUserGroup $userGroup, bool $lockRecursive, string $objectType): array
59 {
60 $objects = $this->getSimpleAssignedObjects($userGroup, $objectType);
61
62 if ($lockRecursive === true) {
63 $map = $this->getMap();
64 $map = $map[ObjectMapHandler::TREE_MAP_CHILDREN][$objectType] ?? [];
65 $map = array_intersect_key($map, $objects);
66
67 foreach ($map as $childrenIds) {
68 foreach ($childrenIds as $parentId => $type) {
69 if ($userGroup->isObjectMember($objectType, $parentId) === true) {
70 $objects[$parentId] = $type;
71 }
72 }
73 }
74 }
75
76 return $objects;
77 }
78 }
79