Beispiel #1
0
 function buildMessage(User $user, Salon $salon, $content, $date)
 {
     $message = new Message();
     $message->setSalon($salon);
     $message->setUser($user);
     $message->setCreatedAt($date);
     $message->setMessage($content);
     return $message;
 }
Beispiel #2
0
 public function showAction(Request $request, $id)
 {
     $user = $this->getUser();
     $em = $this->get('doctrine.orm.entity_manager');
     $salon = $em->getRepository('TerAelisTChatBundle:Salon')->getRoomFull($id);
     if ($salon == null) {
         throw $this->createNotFoundException('Salon introuvable.');
     }
     $salonUsers = $salon->getUsers();
     $salonMods = $salon->getMods();
     $allow = false;
     $mod = false;
     if (!$allow) {
         foreach ($salonMods as $m) {
             if ($m->getId() == $user->getId()) {
                 $allow = true;
                 $mod = true;
                 break;
             }
         }
         if (!$allow) {
             foreach ($salonUsers as $u) {
                 if ($u->getId() == $user->getId()) {
                     $allow = true;
                     break;
                 }
             }
         }
     }
     if (!$allow) {
         throw $this->createNotFoundException('Salon introuvable.');
     }
     $messages = $salon->getMessages();
     // Création du formulaire
     $message = new Message();
     $message->setSalon($salon);
     $message->setUser($user);
     if ($request->isMethod('POST')) {
         $message->setCreatedAt(new \DateTime());
         $message->setMessage(json_decode($request->getContent())->message);
         $persistService = $this->get('teraelis.tchat.persist_chat');
         $persistService->persistMessage($message);
         $response = new Response();
         $response->setContent(json_encode(array('response' => 'ok', 'createdAt' => $message->getCreatedAt()->getTimestamp())));
         $response->headers->set('Content-Type', 'application/json');
         return $response;
     } else {
         if ($request->isMethod('OPTION')) {
             $response = new Response();
             $response->headers->set('Allow', 'GET', 'POST', 'OPTIONS');
             return $response;
         }
     }
     $form = $this->createForm(new MessageType(), $message);
     $renderArray = array('date' => (new \DateTime())->getTimestamp(), 'salon' => $salon, 'users' => $salonUsers, 'mods' => $salonMods, 'mod' => $mod, 'messages' => $messages, 'form' => $form->createView());
     if ($salon->getPrivate()) {
         $otherUser = null;
         foreach ($salonUsers as $otherUser) {
             if ($user->getId() != $otherUser->getId()) {
                 break;
             }
         }
         $renderArray['otherUser'] = $otherUser;
     }
     $nonVus = $em->getRepository('TerAelisTChatBundle:NonVuTChat')->nonVuBySalon($salon, $user);
     foreach ($nonVus as $nv) {
         $em->remove($nv);
     }
     $em->flush();
     return $this->render('TerAelisTChatBundle:Salon:show.html.twig', $renderArray);
 }