Commit fb84be63 authored by Nikolay Lobachev's avatar Nikolay Lobachev
Browse files

Issue #3308268 by LOBsTerr: Update tests

parent 12a44bb9
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
group_content_enabler.config.invitation_expire:
group_relation.config.invitation_expire:
  type: 'integer'
  label: 'Expire invites'

group_content_enabler.config.invitation_expire_keep:
group_relation.config.invitation_expire_keep:
  type: 'boolean'
  label: Keep expired invitations'

group_content_enabler.config.invitation_subject:
group_relation.config.invitation_subject:
  type: 'text'
  label: 'Subject'

group_content_enabler.config.invitation_body:
group_relation.config.invitation_body:
  type: 'text'
  label: 'Body'

group_content_enabler.config.existing_user_invitation_subject:
group_relation.config.existing_user_invitation_subject:
  type: 'text'
  label: 'Subject'

group_content_enabler.config.existing_user_invitation_body:
group_relation.config.existing_user_invitation_body:
  type: 'text'
  label: 'Body'

group_content_enabler.config.unblock_invitees:
group_relation.config.unblock_invitees:
  type: 'boolean'
  label: 'Unblock invitees'

group_content_enabler.config.invitation_bypass_form:
group_relation.config.invitation_bypass_form:
  type: 'boolean'
  label: 'Accept invitations immediately'

group_content_enabler.config.cancel_user_invitation_subject:
group_relation.config.cancel_user_invitation_subject:
  type: 'text'
  label: 'Subject'

group_content_enabler.config.cancel_user_invitation_body:
group_relation.config.cancel_user_invitation_body:
  type: 'text'
  label: 'Body'

group_content_enabler.config.send_cancel_email:
group_relation.config.send_cancel_email:
  type: 'boolean'
  label: 'Send notification when an invitation is cancelled'

group_content_enabler.config.send_email_existing_users:
group_relation.config.send_email_existing_users:
  type: 'boolean'
  label: 'Send invitation e-mail to already registered users'

+3 −1
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ use Drupal\Core\Url;
use Drupal\ginvite\Event\UserRegisteredFromInvitationEvent;
use Drupal\ginvite\Plugin\Group\Relation\GroupInvitation;
use Drupal\group\Access\GroupAccessResult;
use Drupal\group\Entity\GroupInterface;
use Drupal\group\Entity\GroupRelationshipInterface;
use Drupal\user\UserInterface;

@@ -55,9 +56,10 @@ function ginvite_form_group_content_form_alter(&$form, FormStateInterface $form_
      ],
    ];

    $group = $group_relationship->getGroup();
    // Forbid users without the permission to assign roles to users they are
    // inviting.
    if (!GroupAccessResult::allowedIfHasGroupPermission($group_relationship->getGroup(), \Drupal::currentUser(), 'administer members')->isAllowed()) {
    if ($group instanceof GroupInterface && !GroupAccessResult::allowedIfHasGroupPermission($group, \Drupal::currentUser(), 'administer members')->isAllowed()) {
      $form['group_roles']['#access'] = FALSE;
    }
  }
+18 −30
Original line number Diff line number Diff line
@@ -59,14 +59,17 @@ class GroupInvitationLoader implements GroupInvitationLoaderInterface {
  /**
   * Wraps GroupRelationship entities in a GroupInvitation object.
   *
   * @param \Drupal\group\Entity\GroupRelationshipInterface[] $group_relationships
   *   An array of GroupRelationship entities to wrap.
   * @param array $filters
   *   An associative array where the keys are the property names and the
   *   values are the values those properties must have.
   *
   * @return \Drupal\ginvite\GroupInvitation[]
   *   A list of GroupInvitation wrapper objects.
   */
  protected function wrapGroupRelationshipEntities(array $group_relationships) {
  protected function loadGroupInvitations(array $filters) {
    $group_invitations = [];

    $group_relationships = $this->groupRelationshipStorage->loadByProperties($filters);
    foreach ($group_relationships as $group_relationship) {
      $group_invitations[] = new GroupInvitationWrapper($group_relationship);
    }
@@ -77,13 +80,13 @@ class GroupInvitationLoader implements GroupInvitationLoaderInterface {
   * {@inheritdoc}
   */
  public function load(GroupInterface $group, AccountInterface $account) {
    $properties = [
    $filters = [
      'gid' => $group->id(),
      'entity_id' => $account->id(),
      'plugin_id' => 'group_invitation',
    ];

    $group_invitations = $this->loadGroupInvitations($properties);
    $group_invitations = $this->loadByProperties($filters);
    return $group_invitations ? reset($group_invitations) : FALSE;
  }

@@ -91,20 +94,20 @@ class GroupInvitationLoader implements GroupInvitationLoaderInterface {
   * {@inheritdoc}
   */
  public function loadByGroup(GroupInterface $group, $roles = NULL, $mail = NULL, $status = GroupInvitation::INVITATION_PENDING) {
    $properties = [
    $filters = [
      'gid' => $group->id(),
      'invitation_status' => $status,
      'plugin_id' => 'group_invitation',
    ];

    if (isset($roles)) {
      $properties['group_roles'] = (array) $roles;
      $filters['group_roles'] = (array) $roles;
    }
    if (isset($mail)) {
      $properties['invitee_mail'] = $mail;
      $filters['invitee_mail'] = $mail;
    }

    return $this->loadGroupInvitations($properties);
    return $this->loadByProperties($filters);
  }

  /**
@@ -119,30 +122,23 @@ class GroupInvitationLoader implements GroupInvitationLoaderInterface {
      return [];
    }

    $group_relationship_type_ids = $this->loadGroupRelationshipTypeIds();

    // If none were found, there can be no invitations either.
    if (empty($group_relationship_type_ids)) {
      return [];
    }

    $properties = [
      'type' => $group_relationship_type_ids,
    $filters = [
      'entity_id' => $account->id(),
      'invitation_status' => $status,
      'invitee_mail' => $account->getEmail(),
    ];

    if (isset($roles)) {
      $properties['group_roles'] = (array) $roles;
      $filters['group_roles'] = (array) $roles;
    }

    return $this->loadGroupInvitations($properties);
    return $this->loadByProperties($filters);
  }

  /**
   * {@inheritdoc}
   */
  public function loadByProperties(array $values) {
  public function loadByProperties(array $filters = []) {
    $group_relationship_type_ids = $this->loadGroupRelationshipTypeIds();

    // If none were found, there can be no invitations either.
@@ -152,7 +148,7 @@ class GroupInvitationLoader implements GroupInvitationLoaderInterface {

    $values['type'] = $group_relationship_type_ids;

    return $this->loadGroupInvitations($values);
    return $this->loadGroupInvitations($filters);
  }

  /**
@@ -179,12 +175,4 @@ class GroupInvitationLoader implements GroupInvitationLoaderInterface {
    return $group_relationship_type_ids;
  }

  /**
   * {@inheritdoc}
   */
  public function loadGroupInvitations($properties) {
    $group_relationships = $this->groupRelationshipStorage->loadByProperties($properties);
    return $this->wrapGroupRelationshipEntities($group_relationships);
  }

}
+2 −14
Original line number Diff line number Diff line
@@ -62,25 +62,13 @@ interface GroupInvitationLoaderInterface {
  /**
   * Load Invitations by their property values.
   *
   * @param array $values
   * @param array $filters
   *   An associative array where the keys are the property names and the
   *   values are the values those properties must have.
   *
   * @return \Drupal\ginvite\GroupInvitation[]
   *   The loaded GroupInvitations matching the criteria.
   */
  public function loadByProperties(array $values);

  /**
   * Load Invitations and wrap them into GroupInvitation classes.
   *
   * @param array $properties
   *   An associative array where the keys are the property names and the
   *   values are the values those properties must have.
   *
   * @return \Drupal\ginvite\GroupInvitation[]
   *   The loaded GroupInvitations matching the criteria.
   */
  public function loadGroupInvitations($properties);
  public function loadByProperties(array $filters = []);

}
+0 −20
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ class GroupInvitation extends GroupRelationBase implements ContainerFactoryPlugi
    return $static;
  }


  /**
   * {@inheritdoc}
   */
@@ -228,23 +227,4 @@ class GroupInvitation extends GroupRelationBase implements ContainerFactoryPlugi
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
    // @TODO - we can't set this settings based on the permissions of the current user.
    $this->configuration['unblock_invitees'] = $this->currentUser->hasPermission('administer account settings') ? $form_state->getValue('unblock_invitees') : 0;
    $this->configuration['invitation_expire'] = $form_state->getValue('invitation_expire');
    $this->configuration['invitation_expire_keep'] = $form_state->getValue('invitation_expire_keep');
    $this->configuration['invitation_subject'] = $form_state->getValue('invitation_subject');
    $this->configuration['invitation_body'] = $form_state->getValue('invitation_body');
    $this->configuration['existing_user_invitation_subject'] = $form_state->getValue('existing_user_invitation_subject');
    $this->configuration['existing_user_invitation_body'] = $form_state->getValue('existing_user_invitation_body');
    $this->configuration['send_email_existing_users'] = $form_state->getValue('send_email_existing_users');
    $this->configuration['invitation_bypass_form'] = $form_state->getValue('invitation_bypass_form');
    $this->configuration['cancel_user_invitation_subject'] = $form_state->getValue('cancel_user_invitation_subject');
    $this->configuration['cancel_user_invitation_body'] = $form_state->getValue('cancel_user_invitation_body');
    $this->configuration['send_cancel_email'] = $form_state->getValue('send_cancel_email');
  }

}
Loading