You are here

function social_group_request_group_content_insert in Open Social 8.9

Same name and namespace in other branches
  1. 10.3.x modules/social_features/social_group/modules/social_group_request/social_group_request.module \social_group_request_group_content_insert()
  2. 10.0.x modules/social_features/social_group/modules/social_group_request/social_group_request.module \social_group_request_group_content_insert()
  3. 10.1.x modules/social_features/social_group/modules/social_group_request/social_group_request.module \social_group_request_group_content_insert()
  4. 10.2.x modules/social_features/social_group/modules/social_group_request/social_group_request.module \social_group_request_group_content_insert()

Implements hook_ENTITY_TYPE_insert().

File

modules/social_features/social_group/modules/social_group_request/social_group_request.module, line 70
Primary module hooks for social_group_request module.

Code

function social_group_request_group_content_insert(GroupContentInterface $group_content) {
  $type = $group_content
    ->getContentPlugin()
    ->getPluginId();
  $membership_request_enabled = $group_content
    ->getGroup()
    ->getGroupType()
    ->hasContentPlugin('group_membership_request');

  // If new membership is created, check related membership request exists.
  if ($type === 'group_membership' && $membership_request_enabled) {
    $approver = \Drupal::currentUser()
      ->id();
    $storage = \Drupal::entityTypeManager()
      ->getStorage('group_content');
    $filters = [
      'entity_id' => $group_content
        ->getEntity()
        ->id(),
      'grequest_status' => GroupMembershipRequest::REQUEST_PENDING,
    ];
    $requests = $storage
      ->loadByGroup($group_content
      ->getGroup(), 'group_membership_request', $filters);

    /** @var \Drupal\group\Entity\GroupContentInterface $request */
    foreach ($requests as $request) {
      $request
        ->set('grequest_status', GroupMembershipRequest::REQUEST_ACCEPTED)
        ->set('grequest_updated_by', $approver)
        ->save();
      if ($request) {
        \Drupal::messenger()
          ->addStatus(t('Membership request approved'));
      }
      else {
        \Drupal::messenger()
          ->addError(t('Error updating Request'));
      }
    }
  }
}