Skip to content
This repository was archived by the owner on Aug 18, 2024. It is now read-only.

Commit f58b7f1

Browse files
authored
Merge pull request #516 from Gizra/pass-role-ids
Do not require to pass full OgRole objects when we only need the ID.
2 parents 79b79db + 5e93e60 commit f58b7f1

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

src/MembershipManager.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,7 @@ public function getMembership(EntityInterface $group, AccountInterface $user, ar
127127
/**
128128
* {@inheritdoc}
129129
*/
130-
public function getUserGroupIdsByRoles(AccountInterface $user, array $roles, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array {
131-
$role_ids = array_map(function (OgRoleInterface $role): string {
132-
return $role->id();
133-
}, $roles);
134-
130+
public function getUserGroupIdsByRoleIds(AccountInterface $user, array $role_ids, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array {
135131
/** @var \Drupal\og\OgMembershipInterface[] $memberships */
136132
$memberships = $this->getMemberships($user, $states);
137133
$memberships = array_filter($memberships, function (OgMembershipInterface $membership) use ($role_ids, $require_all_roles): bool {
@@ -149,8 +145,8 @@ public function getUserGroupIdsByRoles(AccountInterface $user, array $roles, arr
149145
/**
150146
* {@inheritdoc}
151147
*/
152-
public function getUserGroupsByRoles(AccountInterface $user, array $roles, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array {
153-
$group_ids = $this->getUserGroupIdsByRoles($user, $roles, $states, $require_all_roles);
148+
public function getUserGroupsByRoleIds(AccountInterface $user, array $role_ids, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array {
149+
$group_ids = $this->getUserGroupIdsByRoleIds($user, $role_ids, $states, $require_all_roles);
154150
return $this->loadGroups($group_ids);
155151
}
156152

src/MembershipManagerInterface.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public function getUserGroups(AccountInterface $user, array $states = [OgMembers
6060
*
6161
* @param \Drupal\Core\Session\AccountInterface $user
6262
* The user to get the groups for.
63-
* @param \Drupal\og\OgRoleInterface[] $roles
64-
* A list of og role objects to filter by.
63+
* @param string[] $role_ids
64+
* A list of OG role IDs to filter by.
6565
* @param string[] $states
6666
* (optional) An array of states to filter the memberships by.
6767
* @param bool $require_all_roles
@@ -73,15 +73,15 @@ public function getUserGroups(AccountInterface $user, array $states = [OgMembers
7373
* An associative array, keyed by group entity type, each item an array of
7474
* group entities.
7575
*/
76-
public function getUserGroupsByRoles(AccountInterface $user, array $roles, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array;
76+
public function getUserGroupsByRoleIds(AccountInterface $user, array $role_ids, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array;
7777

7878
/**
7979
* Returns an array of groups ids filtered by the og roles of the user.
8080
*
8181
* @param \Drupal\Core\Session\AccountInterface $user
8282
* The user to get the groups for.
83-
* @param \Drupal\og\OgRoleInterface[] $roles
84-
* A list of og role objects to filter by.
83+
* @param string[] $role_ids
84+
* A list of OG role IDs to filter by.
8585
* @param string[] $states
8686
* (optional) An array of states to filter the memberships by.
8787
* @param bool $require_all_roles
@@ -93,7 +93,7 @@ public function getUserGroupsByRoles(AccountInterface $user, array $roles, array
9393
* An associative array, keyed by group entity type, each item an array of
9494
* group IDs.
9595
*/
96-
public function getUserGroupIdsByRoles(AccountInterface $user, array $roles, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array;
96+
public function getUserGroupIdsByRoleIds(AccountInterface $user, array $role_ids, array $states = [OgMembershipInterface::STATE_ACTIVE], bool $require_all_roles = TRUE): array;
9797

9898
/**
9999
* Returns the group memberships a user is associated with.

tests/src/Kernel/Entity/GetUserGroupsTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ public function testIsMemberStates() {
241241
/**
242242
* Tests retrieval of groups filtered by roles.
243243
*
244-
* @covers ::getUserGroupIdsByRoles
244+
* @covers ::getUserGroupIdsByRoleIds
245245
*/
246246
public function testGetGroupsByRoles() {
247247
// Create a test role.
@@ -266,26 +266,26 @@ public function testGetGroupsByRoles() {
266266
// By default only active memberships are retrieved, so if we ask the
267267
// groups where the user is a normal member of the result should not include
268268
// group 2 where our test user is blocked.
269-
$groups = $this->membershipManager->getUserGroupIdsByRoles($this->user3, [$member_role]);
269+
$groups = $this->membershipManager->getUserGroupIdsByRoleIds($this->user3, [$member_role->id()]);
270270
$this->assertCount(1, $groups['entity_test']);
271271
$actual = reset($groups['entity_test']);
272272
$this->assertEquals($this->group1->id(), $actual);
273273

274274
// When asking for the groups where our user has the test role, the result
275275
// should not include the blocked membership, so it should be empty.
276-
$groups = $this->membershipManager->getUserGroupsByRoles($this->user3, [$extra_role_1]);
276+
$groups = $this->membershipManager->getUserGroupsByRoleIds($this->user3, [$extra_role_1->id()]);
277277
$this->assertCount(0, $groups);
278278

279279
// Include all states.
280-
$groups = $this->membershipManager->getUserGroupIdsByRoles($this->user3, [$member_role], OgMembershipInterface::ALL_STATES, FALSE);
280+
$groups = $this->membershipManager->getUserGroupIdsByRoleIds($this->user3, [$member_role->id()], OgMembershipInterface::ALL_STATES, FALSE);
281281
$this->assertCount(2, $groups['entity_test']);
282282

283283
// Request any of multiple roles.
284-
$groups = $this->membershipManager->getUserGroupsByRoles($this->user3, [$member_role, $extra_role_1], OgMembershipInterface::ALL_STATES, FALSE);
284+
$groups = $this->membershipManager->getUserGroupsByRoleIds($this->user3, [$member_role->id(), $extra_role_1->id()], OgMembershipInterface::ALL_STATES, FALSE);
285285
$this->assertCount(2, $groups['entity_test']);
286286

287287
// Request all of multiple roles.
288-
$groups = $this->membershipManager->getUserGroupsByRoles($this->user3, [$member_role, $extra_role_1], OgMembershipInterface::ALL_STATES, TRUE);
288+
$groups = $this->membershipManager->getUserGroupsByRoleIds($this->user3, [$member_role->id(), $extra_role_1->id()], OgMembershipInterface::ALL_STATES, TRUE);
289289
$this->assertCount(1, $groups['entity_test']);
290290
$actual = reset($groups['entity_test']);
291291
$this->assertEquals($this->group2->id(), $actual->id());

0 commit comments

Comments
 (0)