Exemplo n.º 1
0
 /**
  * @param FormBuilderInterface $builder
  * @param array $options
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $credentials = array(Entity\ChatMember::CREDENTIALS_INVITE => 'Приглашать друзей', Entity\ChatMember::CREDENTIALS_WRITE => 'Писать сообщения', Entity\ChatMember::CREDENTIALS_DELETE => 'Удалить чат', Entity\ChatMember::CREDENTIALS_SETTINGS => 'Управлять настройками');
     $credentialChoice = array();
     foreach ($credentials as $key => $value) {
         if ($this->member->hasCredential($key)) {
             $credentialChoice[$key] = $value;
         }
     }
     $builder->add('email', 'email', array('required' => true, 'label' => 'Электронный Адрес', 'attr' => array('placeholder' => 'Электронный Адрес'), 'constraints' => array(new Constraints\NotBlank(), new Constraints\Email())))->add('credentials', 'choice', array('required' => false, 'label' => 'Полномочия', 'multiple' => true, 'expanded' => true, 'choices' => $credentialChoice))->add('message', 'textarea', array('required' => true, 'label' => 'Текст Сообщения', 'attr' => array('placeholder' => 'Текст Сообщения'), 'constraints' => array(new Constraints\NotBlank(), new Constraints\Length(array('min' => 10)))));
 }
Exemplo n.º 2
0
 public function inviteAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $member = $this->get('security.context')->getToken()->getUser();
     $chat = $member->getChat();
     if (!$member->hasCredential(Entity\ChatMember::CREDENTIALS_INVITE)) {
         $request->getSession()->getFlashBag()->add('warning', $this->get('translator')->trans('Вы не можете приглашать в этот чат'));
         return $this->redirectToRoute('chat_details', array('token' => $request->get('token')));
     }
     $form = $this->createForm(new ChatInviteFormType($member), null, array('action' => $this->generateUrl('chat_invite', array('token' => $request->get('token')))));
     $form->handleRequest($request);
     if ($form->isSubmitted() && $form->isValid()) {
         // Check credentials
         $credentials = array();
         foreach ($form->get('credentials')->getData() as $credential) {
             if ($member->hasCredential($credential)) {
                 $credentials[] = $credential;
             }
         }
         $token = hash('sha1', rand(1000000000, 9999999999), false) . '_' . $request->get('encryption_key');
         $member = new Entity\ChatMember();
         $member->setUsername($this->get('translator')->trans('Гость'))->setTextColor('#000000')->setBackgroundColor('#ffffff')->setChat($chat)->setToken($token)->setCredentials($credentials);
         $em->persist($member);
         $em->flush();
         $message = \Swift_Message::newInstance()->setSubject($this->get('translator')->trans('Приглашение в чат'))->setFrom('*****@*****.**')->setTo($form->get('email')->getData())->setBody($this->renderView('Emails/invite.html.twig', array('message' => $form->get('message')->getData(), 'link' => $this->generateUrl('chat_join', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL))), 'text/html');
         $this->get('mailer')->send($message);
         $request->getSession()->getFlashBag()->add('success', $this->get('translator')->trans('Приглашение в чат успешно отправлено'));
         return $this->redirectToRoute('chat_details', array('token' => $request->get('token')));
     }
     return $this->render('ChatCommonBundle:Chat:invite.html.twig', array('form' => $form->createView(), 'token' => $request->get('token')));
 }