예제 #1
0
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $admin = new User();
     $admin->setFullName('Admin ADMIN');
     $admin->setLogin('admin');
     $admin->setMail('*****@*****.**');
     $admin->setIsAdmin(true);
     $admin->setAvatar('admin.png');
     $admin->setBirthday(new \DateTime());
     $admin->setLastVisitHome(new \DateTime());
     $admin->setReadOnlyExpirationDate(new \DateTime());
     $user = new User();
     $user->setFullName('User USER');
     $user->setLogin('user');
     $user->setMail('*****@*****.**');
     $user->setIsAdmin(false);
     $user->setAvatar('user.png');
     $user->setBirthday(new \DateTime());
     $user->setLastVisitHome(new \DateTime());
     $user->setReadOnlyExpirationDate(new \DateTime());
     $orga = new Organization();
     $orga->setName('Orga ORGA');
     $orga->setLogin('orga');
     $orga->setContactMail('*****@*****.**');
     $manager->persist($admin);
     $manager->persist($user);
     $manager->persist($orga);
     $membership = new Member();
     $membership->setOrganization($orga);
     $membership->setUser($user);
     $membership->addPermission('daymail');
     $manager->persist($membership);
     $manager->flush();
     $this->addReference('user_admin', $admin);
     $this->addReference('user_user', $user);
     $this->addReference('user_orga', $orga);
     $this->addReference('user_membership', $orga);
 }
예제 #2
0
 /**
  * @Route("/orga/members/{page}", defaults={"page" = 1}, requirements={"page" = "\d+"}, name="orga_admin_members")
  * @Template()
  */
 public function membersAction($page)
 {
     if (!$this->getUserLayer()->isOrga()) {
         return $this->createAccessDeniedResponse();
     }
     /** @var $em EntityManager */
     $em = $this->getDoctrine()->getManager();
     $members = $em->createQueryBuilder()->select('m, u')->from('EtuUserBundle:Member', 'm')->leftJoin('m.user', 'u')->where('m.organization = :orga')->setParameter('orga', $this->getUser()->getId())->orderBy('m.role', 'DESC')->addOrderBy('u.lastName')->getQuery();
     $members = $this->get('knp_paginator')->paginate($members, $page, 20);
     $member = new Member();
     $member->setOrganization($this->getUser());
     $roles = Member::getAvailableRoles();
     foreach ($roles as $key => $role) {
         $roles[$key] = 'user.orga.role.' . $role;
     }
     $form = $this->createFormBuilder($member)->add('user', 'user')->add('role', 'choice', array('choices' => $roles))->getForm();
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST' && $form->submit($request)->isValid()) {
         /** @var $user User */
         $user = $em->createQueryBuilder()->select('u')->from('EtuUserBundle:User', 'u')->where('u.login = :login')->orWhere('u.fullName = :fullName')->setParameter('login', $member->getUser())->setParameter('fullName', $member->getUser())->setMaxResults(1)->getQuery()->getOneOrNullResult();
         if (!$user) {
             $this->get('session')->getFlashBag()->set('message', array('type' => 'error', 'message' => 'user.orga.members.error_user_not_fount'));
         } else {
             $member->setUser($user);
             // Keep the membership as unique
             $membership = $em->getRepository('EtuUserBundle:Member')->findOneBy(array('user' => $member->getUser(), 'organization' => $member->getOrganization()));
             if (!$membership) {
                 if ($member->getRole() == Member::ROLE_PRESIDENT) {
                     $this->getUser()->setPresident($member->getUser());
                 }
                 $this->getUser()->addCountMembers();
                 $em->persist($this->getUser());
                 $this->getSubscriptionsManager()->subscribe($member->getUser(), 'orga', $this->getUser()->getId());
                 $em->persist($member);
                 $em->flush();
                 $this->get('session')->getFlashBag()->set('message', array('type' => 'success', 'message' => 'user.orga.members.confirm_add'));
             } else {
                 $this->get('session')->getFlashBag()->set('message', array('type' => 'error', 'message' => 'user.orga.members.error_exists'));
             }
         }
         return $this->redirect($this->generateUrl('orga_admin_members', array('page' => $page)));
     }
     return array('pagination' => $members, 'form' => $form->createView());
 }