Exemplo n.º 1
0
 /**
  * Updates the group assignment of given user.
  *
  * @param Form $form
  * @param User $user
  */
 private function updateGroupAssignment(Form $form, User $user)
 {
     /** @var ObjectManager $objectManager */
     $objectManager = $this->get('twomartens.core.db_manager');
     $repository = $objectManager->getRepository('TwoMartensCoreBundle:Group');
     /** @var Collection $groups */
     $groups = new ArrayCollection($repository->findAll());
     $submittedGroups = $form->get('groups')->getData();
     foreach ($groups as $group) {
         /** @var Group $group */
         if (in_array($group->getRoleName(), $submittedGroups)) {
             $user->addGroup($group);
             $group->addUser($user);
         } else {
             // don't remove user from group if he is last user and group
             // must not be empty
             if (!$group->canBeEmpty() && $group->getUsers()->count() <= 1) {
                 continue;
             }
             $user->removeGroup($group);
             $group->removeUser($user);
         }
     }
 }