Пример #1
0
 /**
  * Creates an Og membership to a group optionally assigning roles as well.
  *
  * @param \Drupal\Core\Session\AccountInterface $user
  *    The user to be assigned as a group member.
  * @param \Drupal\Core\Entity\EntityInterface $entity
  *    The organic group entity.
  * @param \Drupal\og\Entity\OgRole[] $roles
  *    An array of OgRoles to be passed to the membership.
  *
  * @throws \Exception
  *    Throws an exception when the user is anonymous or the entity is not a
  *    group.
  */
 protected function subscribeUserToGroup(AccountInterface $user, EntityInterface $entity, array $roles = [])
 {
     if (!Og::isGroup($entity->getEntityTypeId(), $entity->bundle())) {
         throw new \Exception("The {$entity->label()} is not a group.");
     }
     /** @var \Drupal\og\OgMembershipInterface $membership */
     $membership = OgMembership::create();
     $membership->setUser($user)->setGroup($entity);
     foreach ($roles as $role) {
         $membership->addRole($role);
     }
     $membership->save();
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function submitForm(array &$form, FormStateInterface $form_state)
 {
     /** @var RdfInterface $collection */
     $collection = Rdf::load($form_state->getValue('collection_id'));
     /** @var \Drupal\user\UserInterface $user */
     $user = User::load($form_state->getValue('user_id'));
     $role_id = $collection->getEntityTypeId() . '-' . $collection->bundle() . '-' . OgRoleInterface::AUTHENTICATED;
     $membership = OgMembership::create();
     $membership->setUser($user)->setGroup($collection)->setState(OgMembershipInterface::STATE_ACTIVE)->setRoles([OgRole::load($role_id)])->save();
     drupal_set_message($this->t('You are now a member of %collection.', ['%collection' => $collection->getName()]));
     // @todo: This is a temporary workaround for the lack of og cache
     // contexts/tags. Remove this when Og provides proper cache context.
     // @see: https://webgate.ec.europa.eu/CITnet/jira/browse/ISAICP-2628
     Cache::invalidateTags(['user.roles']);
 }