PluginProbe
User Access Manager / 2.3.4
User Access Manager v2.3.4
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
← All changes | src/ObjectMembership/ObjectMembershipWithMapHandler.php +35 -45 trunk2.3.4 View file →
@@ -10,55 +10,45 @@
10 10 use UserAccessManager\UserGroup\AssignmentInformation;
11 11
12 12 abstract class ObjectMembershipWithMapHandler extends ObjectMembershipHandler
13 13 {
14 + /**
15 + * Returns the map.
16 + * @return array
17 + */
14 18 abstract protected function getMap(): array;
15 19
16 - protected function getHandledObjectsIncluding(array $objectTypes): array
17 - {
18 - $objectTypeNames = array_keys($objectTypes);
19 -
20 - return array_merge(
21 - parent::getHandledObjects(),
22 - array_combine($objectTypeNames, $objectTypeNames)
23 - );
24 - }
25 -
26 20 /**
27 21 * @throws Exception
28 22 */
29 - private function getRecursiveMembershipByMap(AbstractUserGroup $userGroup, int|string|null $objectId): array
30 - {
31 - $parentMap = $this->getMap()[ObjectMapHandler::TREE_MAP_PARENTS][$this->generalObjectType] ?? [];
23 + protected function getMembershipByMap(
24 + AbstractUserGroup $userGroup,
25 + bool $lockRecursive,
26 + int|string $objectId,
27 + AssignmentInformation &$assignmentInformation = null
28 + ): bool {
29 + // Reset value to prevent errors
32 30 $recursiveMembership = [];
33 31
34 - foreach (array_keys($parentMap[$objectId] ?? []) as $parentId) {
35 - $isObjectMember = $userGroup->isObjectMember(
36 - $this->generalObjectType,
37 - $parentId,
38 - $parentAssignmentInformation
39 - );
32 + if ($lockRecursive === true) {
33 + $map = $this->getMap();
34 + $generalMap = $map[ObjectMapHandler::TREE_MAP_PARENTS][$this->generalObjectType] ?? [];
40 35
41 - if ($isObjectMember === true) {
42 - $recursiveMembership[$this->generalObjectType][$parentId] = $parentAssignmentInformation;
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 + }
43 48 }
44 49 }
45 50
46 - return $recursiveMembership;
47 - }
48 -
49 - /**
50 - * @throws Exception
51 - */
52 - protected function getMembershipByMap(
53 - AbstractUserGroup $userGroup,
54 - bool $lockRecursive,
55 - int|string|null $objectId,
56 - ?AssignmentInformation &$assignmentInformation = null
57 - ): bool {
58 - $recursiveMembership = ($lockRecursive === true) ?
59 - $this->getRecursiveMembershipByMap($userGroup, $objectId) : [];
60 -
61 51 $isMember = $userGroup->isObjectAssignedToGroup($this->generalObjectType, $objectId, $assignmentInformation);
62 52 return $this->checkAccessWithRecursiveMembership($isMember, $recursiveMembership, $assignmentInformation);
63 53 }
64 54
@@ -68,18 +58,18 @@
68 58 protected function getFullObjectsByMap(AbstractUserGroup $userGroup, bool $lockRecursive, string $objectType): array
69 59 {
70 60 $objects = $this->getSimpleAssignedObjects($userGroup, $objectType);
71 61
72 - if ($lockRecursive === false) {
73 - return $objects;
74 - }
62 + if ($lockRecursive === true) {
63 + $map = $this->getMap();
64 + $map = $map[ObjectMapHandler::TREE_MAP_CHILDREN][$objectType] ?? [];
65 + $map = array_intersect_key($map, $objects);
75 66
76 - $childrenMap = $this->getMap()[ObjectMapHandler::TREE_MAP_CHILDREN][$objectType] ?? [];
77 -
78 - foreach (array_intersect_key($childrenMap, $objects) as $childrenIds) {
79 - foreach ($childrenIds as $parentId => $type) {
80 - if ($userGroup->isObjectMember($objectType, $parentId) === true) {
81 - $objects[$parentId] = $type;
67 + foreach ($map as $childrenIds) {
68 + foreach ($childrenIds as $parentId => $type) {
69 + if ($userGroup->isObjectMember($objectType, $parentId) === true) {
70 + $objects[$parentId] = $type;
71 + }
82 72 }
83 73 }
84 74 }
85 75