ninegate/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Controller/ChatController.php

109 lines
4.0 KiB
PHP
Raw Normal View History

2019-07-16 12:10:32 +02:00
<?php
namespace Cadoles\WebsocketBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;
use Ramsey\Uuid\Uuid;
2019-07-17 11:50:37 +02:00
use Cadoles\WebsocketBundle\Form\ChatType;
2019-07-16 12:10:32 +02:00
class ChatController extends Controller
{
public function clientAction($id, Request $request)
{
$user=$this->getUser();
if(!$user) {
die();
}
else {
2019-07-17 11:50:37 +02:00
$framed=$request->query->get('framed');
if($framed) {
$border=$request->query->get('border');
if($border) {
$colorbodyback=$request->query->get('colorbodyfont');
$colorbodyfont=$request->query->get('colorbodyback');
}
else {
$colorbodyback=$request->query->get('colorbodyback');
$colorbodyfont=$request->query->get('colorbodyfont');
}
}
else {
$border=false;
$colorbodyback=$this->get('session')->get('color')["main"];
$colorbodyfont=$this->get('session')->get('color')["fontcolorhover"];
}
$em = $this->getDoctrine()->getManager();
// On récupère les 100 derniers message du groupe
$group=$em->getRepository("CadolesCoreBundle:Group")->find($id);
if(!$group) die();
2019-07-16 12:10:32 +02:00
// Génération d'une clé temporaire d'accès au chat
$key = Uuid::uuid4();
2019-07-17 11:50:37 +02:00
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["group"=>$group,"user"=>$user]);
2019-09-30 16:30:52 +02:00
if($usergroup) {
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
}
2019-07-16 12:10:32 +02:00
2019-07-17 11:50:37 +02:00
// Récupération des message du groupe
$messages=$em->getRepository("CadolesWebsocketBundle:Message")->findBy(["group"=>$group],["submitdate"=>"DESC"],100);
// Création du formulaire
$form = $this->createForm(ChatType::class,null,[]);
2019-07-16 12:10:32 +02:00
// Affichage du chat
return $this->render('CadolesWebsocketBundle:Chat:client.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'userkey' => $key,
'groupid' => $id,
2019-07-24 13:41:35 +02:00
'group' => $group,
2019-07-17 11:50:37 +02:00
'messages' => $messages,
'framed' => $framed,
'border' => $border,
'colorbodyback' => $colorbodyback,
'colorbodyfont' => $colorbodyfont,
2019-09-30 16:30:52 +02:00
'ingroup' => ($usergroup),
'fgmanager' => ($usergroup&&($usergroup->getFgmanager()||$user->getRole()=="ROLE_ADMIN"||$user->getRole()=="ROLE_MODO")),
2019-07-17 11:50:37 +02:00
'form' => $form->createView()
2019-07-16 12:10:32 +02:00
]);
}
}
2019-09-23 16:17:15 +02:00
public function seeAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$em = $this->getDoctrine()->getManager();
$output=array();
$id=$request->request->get('id');
$user=$this->getUser();
if($user) {
$message=$em->getRepository("CadolesWebsocketBundle:Message")->find($id);
$message->addSee($user);
// Sauvegarde
$em->persist($message);
$em->flush();
}
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
2019-07-16 12:10:32 +02:00
}