Loading grequest.module +5 −5 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ function grequest_menu_local_tasks_alter(&$data, $route_name) { $route_matcher = \Drupal::service('current_route_match'); $group = $route_matcher->getParameter('group'); if ($group instanceof GroupInterface && !$group->getGroupType()->hasContentPlugin('group_membership_request')) { if ($group instanceof GroupInterface && !$group->getGroupType()->hasPlugin('group_membership_request')) { unset($data['tabs'][0]['views_view:view.group_pending_members.page_1']); } } Loading @@ -38,13 +38,13 @@ function grequest_menu_local_tasks_alter(&$data, $route_name) { /** * Implements hook_entity_delete(). */ function grequest_group_content_delete(EntityInterface $group_content) { if (is_null($group_content->getEntity())) { function grequest_group_content_delete(EntityInterface $group_relationship) { if (is_null($group_relationship->getEntity())) { return; } if ($group_content->getContentPlugin()->getPluginId() === 'group_membership') { $membership_request = \Drupal::service('grequest.membership_request_manager')->getMembershipRequest($group_content->getEntity(), $group_content->getGroup()); if ($group_relationship->getPluginId() === 'group_membership') { $membership_request = \Drupal::service('grequest.membership_request_manager')->getMembershipRequest($group_relationship->getEntity(), $group_relationship->getGroup()); if (!empty($membership_request)) { $membership_request->delete(); } Loading src/Controller/GroupMembershipRequestController.php +10 −10 Original line number Diff line number Diff line Loading @@ -75,34 +75,34 @@ class GroupMembershipRequestController extends ControllerBase { */ public function requestMembership(GroupInterface $group) { $user = $this->entityTypeManager->getStorage('user')->load($this->currentUser->id()); $group_relation = $this->membershipRequestManager->create($group, $user); return $this->entityFormBuilder()->getForm($group_relation, 'group-request-membership'); $group_relationship = $this->membershipRequestManager->create($group, $user); return $this->entityFormBuilder()->getForm($group_relationship, 'group-request-membership'); } /** * Provides the form for approval a group membership. * * @param \Drupal\group\Plugin\Group\Relation\GroupRelationInterface $group_relation * The group relation. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relation * The group relationship. * * @return array * A group approval membership form. */ public function approveMembership(GroupRelationInterface $group_relation) { return $this->entityFormBuilder()->getForm($group_relation, 'group-approve-membership'); public function approveMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-approve-membership'); } /** * Provides the form for rejection a group membership. * * @param \Drupal\group\Plugin\Group\Relation\GroupRelationInterface $group_relation * The group relation. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * The group relationship. * * @return array * A group rejection membership form. */ public function rejectMembership(GroupRelationInterface $group_relation) { return $this->entityFormBuilder()->getForm($group_relation, 'group-reject-membership'); public function rejectMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-reject-membership'); } /** Loading src/Entity/Form/GroupMembershipApproveForm.php +4 −4 Original line number Diff line number Diff line Loading @@ -114,13 +114,13 @@ class GroupMembershipApproveForm extends ContentEntityConfirmFormBase { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $group_relation = $this->getEntity(); $group_relationship = $this->getEntity(); $group_roles = []; $form_roles_values = $form_state->getValue('roles'); if (!empty($form_roles_values)) { $group_roles = array_filter(array_values($form_roles_values)); } $result = $this->membershipRequestManager->approve($group_relation, $group_roles); $result = $this->membershipRequestManager->approve($group_relationship, $group_roles); if ($result) { $this->messenger()->addStatus($this->t('Membership request approved')); Loading @@ -130,8 +130,8 @@ class GroupMembershipApproveForm extends ContentEntityConfirmFormBase { } $this->logger->notice('@type: approved %title.', [ '@type' => $group_relation->bundle(), '%title' => $group_relation->label(), '@type' => $group_relationship->bundle(), '%title' => $group_relationship->label(), ]); $form_state->setRedirectUrl($this->getCancelUrl()); Loading src/Entity/Form/GroupMembershipRejectForm.php +4 −4 Original line number Diff line number Diff line Loading @@ -95,9 +95,9 @@ class GroupMembershipRejectForm extends ContentEntityConfirmFormBase { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $group_relation = $this->getEntity(); $group_relationship = $this->getEntity(); $result = $this->membershipRequestManager->reject($group_relation); $result = $this->membershipRequestManager->reject($group_relationship); if ($result) { $this->messenger()->addStatus($this->t('Membership request rejected')); Loading @@ -107,8 +107,8 @@ class GroupMembershipRejectForm extends ContentEntityConfirmFormBase { } $this->logger->notice('@type: rejected %title.', [ '@type' => $group_relation->bundle(), '%title' => $group_relation->label(), '@type' => $group_relationship->bundle(), '%title' => $group_relationship->label(), ]); $form_state->setRedirectUrl($this->getCancelUrl()); Loading src/MembershipRequestManager.php +38 −40 Original line number Diff line number Diff line Loading @@ -5,10 +5,10 @@ namespace Drupal\grequest; use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\group\Entity\GroupContent; use Drupal\group\Entity\GroupContentInterface; use Drupal\grequest\Plugin\Group\Relation\GroupMembershipRequest; use Drupal\group\Entity\GroupInterface; use Drupal\group\Entity\GroupRelationship; use Drupal\group\Entity\GroupRelationshipInterface; use Drupal\user\UserInterface; /** Loading Loading @@ -51,23 +51,23 @@ class MembershipRequestManager { * @param \Drupal\group\Entity\GroupInterface $group * Group. * * @return \Drupal\Core\Entity\EntityInterface|null * Group content. * @return \Drupal\group\Entity\GroupRelationshipInterface|null * Group relationship or NULL. */ public function getMembershipRequest(UserInterface $user, GroupInterface $group) { // If no responsible group content types were found, we return nothing. $group_content_type_storage = $this->entityTypeManager->getStorage('group_content_type'); $group_content_types = $group_content_type_storage->loadByContentPluginId('group_membership_request'); if (!empty($group_content_types)) { $group_content_storage = $this->entityTypeManager->getStorage('group_content'); $group_content_items = $group_content_storage->loadByProperties([ 'type' => array_keys($group_content_types), // If no responsible group relationship types were found, we return nothing. $group_relationship_type_storage = $this->entityTypeManager->getStorage('group_content_type'); $group_relationship_types = $group_relationship_type_storage->loadByPluginId('group_membership_request'); if (!empty($group_relationship_types)) { $group_relationship_storage = $this->entityTypeManager->getStorage('group_content'); $group_membership_requests = $group_relationship_storage->loadByProperties([ 'type' => array_keys($group_relationship_types), 'entity_id' => $user->id(), 'gid' => $group->id(), ]); if (!empty($group_content_items)) { return reset($group_content_items); if (!empty($group_membership_requests)) { return reset($group_membership_requests); } } Loading @@ -77,20 +77,20 @@ class MembershipRequestManager { /** * Approve a membership request. * * @param \Drupal\group\Entity\GroupContentInterface $group_content * Group membership request group content. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * Group membership request group relationship. * @param array $group_roles * Group roles to be added to a member. * * @return bool * Result. */ public function approve(GroupContentInterface $group_content, array $group_roles = []) { $this->updateStatus($group_content, GroupMembershipRequest::TRANSITION_APPROVE); $result = $group_content->save() == SAVED_UPDATED; public function approve(GroupRelationshipInterface $group_relationship, array $group_roles = []) { $this->updateStatus($group_relationship, GroupMembershipRequest::TRANSITION_APPROVE); $result = $group_relationship->save() == SAVED_UPDATED; if ($result) { // Adding user to a group. $group_content->getGroup()->addMember($group_content->getEntity(), [ $group_relationship->getGroup()->addMember($group_relationship->getEntity(), [ 'group_roles' => $group_roles, ]); } Loading @@ -101,33 +101,33 @@ class MembershipRequestManager { /** * Reject a membership request. * * @param \Drupal\group\Entity\GroupContentInterface $group_content * Group membership request group content. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * Group membership request group relationship. * * @return bool * Result. */ public function reject(GroupContentInterface $group_content) { $this->updateStatus($group_content, GroupMembershipRequest::TRANSITION_REJECT); return $group_content->save() == SAVED_UPDATED; public function reject(GroupRelationshipInterface $group_relationship) { $this->updateStatus($group_relationship, GroupMembershipRequest::TRANSITION_REJECT); return $group_relationship->save() == SAVED_UPDATED; } /** * Update status of a membership request. * * @param \Drupal\group\Entity\GroupContentInterface $group_content * Group membership request group content. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * Group membership request group relationship. * @param string $transition_id * Transition approve | reject. */ public function updateStatus(GroupContentInterface $group_content, $transition_id) { if ($group_content->getContentPlugin()->getPluginId() != 'group_membership_request') { public function updateStatus(GroupRelationshipInterface $group_relationship, $transition_id) { if ($group_relationship->getPluginId() != 'group_membership_request') { throw new \Exception('Only group content of "Group membership request" is allowed.'); } $state_item = $group_content->get(GroupMembershipRequest::STATUS_FIELD)->first(); $state_item = $group_relationship->get(GroupMembershipRequest::STATUS_FIELD)->first(); if ($state_item->isTransitionAllowed($transition_id)) { $state_item->applyTransitionById($transition_id); $group_content->set('grequest_updated_by', $this->currentUser->id()); $group_relationship->set('grequest_updated_by', $this->currentUser->id()); } else { throw new \Exception(new FormattableMarkup('Transition ":transition_id" is not allowed.', [':transition_id' => $transition_id])); Loading @@ -142,18 +142,16 @@ class MembershipRequestManager { * @param \Drupal\user\UserInterface $user * User. * * @return \Drupal\group\Entity\GroupContentInterface * Group membership request group content. * @return \Drupal\group\Entity\GroupRelationshipInterface * Group membership request group relationship. */ public function create(GroupInterface $group, UserInterface $user) { if ($group->getMember($user)) { throw new \Exception('This user is already a member of the group'); } $group_content = GroupContent::create([ 'type' => $group ->getGroupType() ->getContentPlugin('group_membership_request') ->getContentTypeConfigId(), $group_relationship = GroupRelationship::create([ 'group_type' => $group->getGroupType()->id(), 'plugin_id' => 'group_membership_request', 'gid' => $group->id(), 'entity_id' => $user->id(), GroupMembershipRequest::STATUS_FIELD => GroupMembershipRequest::REQUEST_NEW, Loading @@ -161,9 +159,9 @@ class MembershipRequestManager { // We have to set transition here. Once the group_content saved events will // be correctly fired. $this->updateStatus($group_content, GroupMembershipRequest::TRANSITION_CREATE); $this->updateStatus($group_relationship, GroupMembershipRequest::TRANSITION_CREATE); return $group_content; return $group_relationship; } } Loading
grequest.module +5 −5 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ function grequest_menu_local_tasks_alter(&$data, $route_name) { $route_matcher = \Drupal::service('current_route_match'); $group = $route_matcher->getParameter('group'); if ($group instanceof GroupInterface && !$group->getGroupType()->hasContentPlugin('group_membership_request')) { if ($group instanceof GroupInterface && !$group->getGroupType()->hasPlugin('group_membership_request')) { unset($data['tabs'][0]['views_view:view.group_pending_members.page_1']); } } Loading @@ -38,13 +38,13 @@ function grequest_menu_local_tasks_alter(&$data, $route_name) { /** * Implements hook_entity_delete(). */ function grequest_group_content_delete(EntityInterface $group_content) { if (is_null($group_content->getEntity())) { function grequest_group_content_delete(EntityInterface $group_relationship) { if (is_null($group_relationship->getEntity())) { return; } if ($group_content->getContentPlugin()->getPluginId() === 'group_membership') { $membership_request = \Drupal::service('grequest.membership_request_manager')->getMembershipRequest($group_content->getEntity(), $group_content->getGroup()); if ($group_relationship->getPluginId() === 'group_membership') { $membership_request = \Drupal::service('grequest.membership_request_manager')->getMembershipRequest($group_relationship->getEntity(), $group_relationship->getGroup()); if (!empty($membership_request)) { $membership_request->delete(); } Loading
src/Controller/GroupMembershipRequestController.php +10 −10 Original line number Diff line number Diff line Loading @@ -75,34 +75,34 @@ class GroupMembershipRequestController extends ControllerBase { */ public function requestMembership(GroupInterface $group) { $user = $this->entityTypeManager->getStorage('user')->load($this->currentUser->id()); $group_relation = $this->membershipRequestManager->create($group, $user); return $this->entityFormBuilder()->getForm($group_relation, 'group-request-membership'); $group_relationship = $this->membershipRequestManager->create($group, $user); return $this->entityFormBuilder()->getForm($group_relationship, 'group-request-membership'); } /** * Provides the form for approval a group membership. * * @param \Drupal\group\Plugin\Group\Relation\GroupRelationInterface $group_relation * The group relation. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relation * The group relationship. * * @return array * A group approval membership form. */ public function approveMembership(GroupRelationInterface $group_relation) { return $this->entityFormBuilder()->getForm($group_relation, 'group-approve-membership'); public function approveMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-approve-membership'); } /** * Provides the form for rejection a group membership. * * @param \Drupal\group\Plugin\Group\Relation\GroupRelationInterface $group_relation * The group relation. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * The group relationship. * * @return array * A group rejection membership form. */ public function rejectMembership(GroupRelationInterface $group_relation) { return $this->entityFormBuilder()->getForm($group_relation, 'group-reject-membership'); public function rejectMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-reject-membership'); } /** Loading
src/Entity/Form/GroupMembershipApproveForm.php +4 −4 Original line number Diff line number Diff line Loading @@ -114,13 +114,13 @@ class GroupMembershipApproveForm extends ContentEntityConfirmFormBase { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $group_relation = $this->getEntity(); $group_relationship = $this->getEntity(); $group_roles = []; $form_roles_values = $form_state->getValue('roles'); if (!empty($form_roles_values)) { $group_roles = array_filter(array_values($form_roles_values)); } $result = $this->membershipRequestManager->approve($group_relation, $group_roles); $result = $this->membershipRequestManager->approve($group_relationship, $group_roles); if ($result) { $this->messenger()->addStatus($this->t('Membership request approved')); Loading @@ -130,8 +130,8 @@ class GroupMembershipApproveForm extends ContentEntityConfirmFormBase { } $this->logger->notice('@type: approved %title.', [ '@type' => $group_relation->bundle(), '%title' => $group_relation->label(), '@type' => $group_relationship->bundle(), '%title' => $group_relationship->label(), ]); $form_state->setRedirectUrl($this->getCancelUrl()); Loading
src/Entity/Form/GroupMembershipRejectForm.php +4 −4 Original line number Diff line number Diff line Loading @@ -95,9 +95,9 @@ class GroupMembershipRejectForm extends ContentEntityConfirmFormBase { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $group_relation = $this->getEntity(); $group_relationship = $this->getEntity(); $result = $this->membershipRequestManager->reject($group_relation); $result = $this->membershipRequestManager->reject($group_relationship); if ($result) { $this->messenger()->addStatus($this->t('Membership request rejected')); Loading @@ -107,8 +107,8 @@ class GroupMembershipRejectForm extends ContentEntityConfirmFormBase { } $this->logger->notice('@type: rejected %title.', [ '@type' => $group_relation->bundle(), '%title' => $group_relation->label(), '@type' => $group_relationship->bundle(), '%title' => $group_relationship->label(), ]); $form_state->setRedirectUrl($this->getCancelUrl()); Loading
src/MembershipRequestManager.php +38 −40 Original line number Diff line number Diff line Loading @@ -5,10 +5,10 @@ namespace Drupal\grequest; use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\group\Entity\GroupContent; use Drupal\group\Entity\GroupContentInterface; use Drupal\grequest\Plugin\Group\Relation\GroupMembershipRequest; use Drupal\group\Entity\GroupInterface; use Drupal\group\Entity\GroupRelationship; use Drupal\group\Entity\GroupRelationshipInterface; use Drupal\user\UserInterface; /** Loading Loading @@ -51,23 +51,23 @@ class MembershipRequestManager { * @param \Drupal\group\Entity\GroupInterface $group * Group. * * @return \Drupal\Core\Entity\EntityInterface|null * Group content. * @return \Drupal\group\Entity\GroupRelationshipInterface|null * Group relationship or NULL. */ public function getMembershipRequest(UserInterface $user, GroupInterface $group) { // If no responsible group content types were found, we return nothing. $group_content_type_storage = $this->entityTypeManager->getStorage('group_content_type'); $group_content_types = $group_content_type_storage->loadByContentPluginId('group_membership_request'); if (!empty($group_content_types)) { $group_content_storage = $this->entityTypeManager->getStorage('group_content'); $group_content_items = $group_content_storage->loadByProperties([ 'type' => array_keys($group_content_types), // If no responsible group relationship types were found, we return nothing. $group_relationship_type_storage = $this->entityTypeManager->getStorage('group_content_type'); $group_relationship_types = $group_relationship_type_storage->loadByPluginId('group_membership_request'); if (!empty($group_relationship_types)) { $group_relationship_storage = $this->entityTypeManager->getStorage('group_content'); $group_membership_requests = $group_relationship_storage->loadByProperties([ 'type' => array_keys($group_relationship_types), 'entity_id' => $user->id(), 'gid' => $group->id(), ]); if (!empty($group_content_items)) { return reset($group_content_items); if (!empty($group_membership_requests)) { return reset($group_membership_requests); } } Loading @@ -77,20 +77,20 @@ class MembershipRequestManager { /** * Approve a membership request. * * @param \Drupal\group\Entity\GroupContentInterface $group_content * Group membership request group content. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * Group membership request group relationship. * @param array $group_roles * Group roles to be added to a member. * * @return bool * Result. */ public function approve(GroupContentInterface $group_content, array $group_roles = []) { $this->updateStatus($group_content, GroupMembershipRequest::TRANSITION_APPROVE); $result = $group_content->save() == SAVED_UPDATED; public function approve(GroupRelationshipInterface $group_relationship, array $group_roles = []) { $this->updateStatus($group_relationship, GroupMembershipRequest::TRANSITION_APPROVE); $result = $group_relationship->save() == SAVED_UPDATED; if ($result) { // Adding user to a group. $group_content->getGroup()->addMember($group_content->getEntity(), [ $group_relationship->getGroup()->addMember($group_relationship->getEntity(), [ 'group_roles' => $group_roles, ]); } Loading @@ -101,33 +101,33 @@ class MembershipRequestManager { /** * Reject a membership request. * * @param \Drupal\group\Entity\GroupContentInterface $group_content * Group membership request group content. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * Group membership request group relationship. * * @return bool * Result. */ public function reject(GroupContentInterface $group_content) { $this->updateStatus($group_content, GroupMembershipRequest::TRANSITION_REJECT); return $group_content->save() == SAVED_UPDATED; public function reject(GroupRelationshipInterface $group_relationship) { $this->updateStatus($group_relationship, GroupMembershipRequest::TRANSITION_REJECT); return $group_relationship->save() == SAVED_UPDATED; } /** * Update status of a membership request. * * @param \Drupal\group\Entity\GroupContentInterface $group_content * Group membership request group content. * @param \Drupal\group\Entity\GroupRelationshipInterface $group_relationship * Group membership request group relationship. * @param string $transition_id * Transition approve | reject. */ public function updateStatus(GroupContentInterface $group_content, $transition_id) { if ($group_content->getContentPlugin()->getPluginId() != 'group_membership_request') { public function updateStatus(GroupRelationshipInterface $group_relationship, $transition_id) { if ($group_relationship->getPluginId() != 'group_membership_request') { throw new \Exception('Only group content of "Group membership request" is allowed.'); } $state_item = $group_content->get(GroupMembershipRequest::STATUS_FIELD)->first(); $state_item = $group_relationship->get(GroupMembershipRequest::STATUS_FIELD)->first(); if ($state_item->isTransitionAllowed($transition_id)) { $state_item->applyTransitionById($transition_id); $group_content->set('grequest_updated_by', $this->currentUser->id()); $group_relationship->set('grequest_updated_by', $this->currentUser->id()); } else { throw new \Exception(new FormattableMarkup('Transition ":transition_id" is not allowed.', [':transition_id' => $transition_id])); Loading @@ -142,18 +142,16 @@ class MembershipRequestManager { * @param \Drupal\user\UserInterface $user * User. * * @return \Drupal\group\Entity\GroupContentInterface * Group membership request group content. * @return \Drupal\group\Entity\GroupRelationshipInterface * Group membership request group relationship. */ public function create(GroupInterface $group, UserInterface $user) { if ($group->getMember($user)) { throw new \Exception('This user is already a member of the group'); } $group_content = GroupContent::create([ 'type' => $group ->getGroupType() ->getContentPlugin('group_membership_request') ->getContentTypeConfigId(), $group_relationship = GroupRelationship::create([ 'group_type' => $group->getGroupType()->id(), 'plugin_id' => 'group_membership_request', 'gid' => $group->id(), 'entity_id' => $user->id(), GroupMembershipRequest::STATUS_FIELD => GroupMembershipRequest::REQUEST_NEW, Loading @@ -161,9 +159,9 @@ class MembershipRequestManager { // We have to set transition here. Once the group_content saved events will // be correctly fired. $this->updateStatus($group_content, GroupMembershipRequest::TRANSITION_CREATE); $this->updateStatus($group_relationship, GroupMembershipRequest::TRANSITION_CREATE); return $group_content; return $group_relationship; } }