<?php
namespace App\PaaBundle\Controller;
//use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use App\PaaBundle\Controller\PAABaseController;
use App\PaaBundle\Entity\intervenants;
use App\PaaBundle\Entity\usagers;
use App\Tests\test_chloe\fichierTest;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; // LG 20180622
use Symfony\Component\HttpFoundation\JsonResponse; // AV 20230412 add
use Symfony\Component\HttpFoundation\Session\SessionInterface; // AV 20230413 add
use App\PaaBundle\Controller\MailController ;
class TestController extends PAABaseController {
public function TestGetDateAvecJourAction(){
echo '<script type="text/javascript" src="http://127.0.0.1/paa/public//vendor/jQuery-3.3.1/jquery-3.3.1.min.js?v=6"></script>';
echo '<script type="text/javascript" src="http://127.0.0.1/paa/public//Limoog/Paa/src/Paa.js?v=6"></script>';
echo '<script type="text/javascript" src="http://127.0.0.1/paa/public//vendor/moment/moment.min.js?v=6"></script>';
$loConnexion = $this->getDoctrineConnection();
echo "<div>Pour la semaine ...... et le jour .. : ..... PHP ..... | | ..... BDD ..... | | .....JS.....";
$this->vérifierEgalité(1,3638,$loConnexion);
$this->vérifierEgalité(2,3638,$loConnexion);
$this->vérifierEgalité(3,3638,$loConnexion);
$this->vérifierEgalité(4,3638,$loConnexion);
$this->vérifierEgalité(5,3638,$loConnexion);
$this->vérifierEgalité(6,3638,$loConnexion);
$this->vérifierEgalité(7,3638,$loConnexion);
$this->vérifierEgalité(1,-3,$loConnexion);
$this->vérifierEgalité(2,-3,$loConnexion);
$this->vérifierEgalité(3,-3,$loConnexion);
$this->vérifierEgalité(4,-3,$loConnexion);
$this->vérifierEgalité(5,-3,$loConnexion);
$this->vérifierEgalité(6,-3,$loConnexion);
$this->vérifierEgalité(7,-3,$loConnexion);
$this->vérifierEgalité(1,-2,$loConnexion);
$this->vérifierEgalité(2,-2,$loConnexion);
$this->vérifierEgalité(3,-2,$loConnexion);
$this->vérifierEgalité(4,-2,$loConnexion);
$this->vérifierEgalité(5,-2,$loConnexion);
$this->vérifierEgalité(6,-2,$loConnexion);
$this->vérifierEgalité(7,-2,$loConnexion);
$this->vérifierEgalité(1,-1,$loConnexion);
$this->vérifierEgalité(2,-1,$loConnexion);
$this->vérifierEgalité(3,-1,$loConnexion);
$this->vérifierEgalité(4,-1,$loConnexion);
$this->vérifierEgalité(5,-1,$loConnexion);
$this->vérifierEgalité(6,-1,$loConnexion);
$this->vérifierEgalité(7,-1,$loConnexion);
$this->vérifierEgalité(1,0,$loConnexion);
$this->vérifierEgalité(2,0,$loConnexion);
$this->vérifierEgalité(3,0,$loConnexion);
$this->vérifierEgalité(4,0,$loConnexion);
$this->vérifierEgalité(5,0,$loConnexion);
$this->vérifierEgalité(6,0,$loConnexion);
$this->vérifierEgalité(7,0,$loConnexion);
$this->vérifierEgalité(1,-100,$loConnexion);
$this->vérifierEgalité(2,-100,$loConnexion);
$this->vérifierEgalité(3,-100,$loConnexion);
$this->vérifierEgalité(4,-100,$loConnexion);
$this->vérifierEgalité(5,-100,$loConnexion);
$this->vérifierEgalité(6,-100,$loConnexion);
$this->vérifierEgalité(7,-100,$loConnexion);
$this->vérifierEgalité(1,-101,$loConnexion);
$this->vérifierEgalité(2,-101,$loConnexion);
$this->vérifierEgalité(3,-101,$loConnexion);
$this->vérifierEgalité(4,-101,$loConnexion);
$this->vérifierEgalité(5,-101,$loConnexion);
$this->vérifierEgalité(6,-101,$loConnexion);
$this->vérifierEgalité(7,-101,$loConnexion);
$this->vérifierEgalité(1,-102,$loConnexion);
$this->vérifierEgalité(2,-102,$loConnexion);
$this->vérifierEgalité(3,-102,$loConnexion);
$this->vérifierEgalité(4,-102,$loConnexion);
$this->vérifierEgalité(5,-102,$loConnexion);
$this->vérifierEgalité(6,-102,$loConnexion);
$this->vérifierEgalité(7,-102,$loConnexion);
$response = new Response('');
return $response;
}
public function vérifierEgalité($jour,$semaine,$loConnexion){
echo "<div id='$semaine$jour'>Pour la semaine ".$semaine." et le jour ".$jour." :";
// Fonction PhP
$rep = GetDateAvecJour($jour,$semaine);
$repPHP = str_replace("/", "-", $rep);
echo "<span id='textphp$semaine$jour'>$repPHP</span>";
echo " || ";
// Fonction BDD
$sql ="SELECT paa.getdateavecjour($jour,$semaine);";
$repBDD = $loConnexion->query($sql, \PDO::FETCH_ASSOC);
foreach ($repBDD as $value) {
echo "<span id='textbdd$semaine$jour'>".$value['getdateavecjour'] . "</span>";
}
echo " || ";
// Fonction JS
echo "<span id='textjs$semaine$jour'></span></div>";
echo "<script>
date = window.oPaa.getDateAvecJour(". $jour .",". $semaine .");
$('#textjs$semaine$jour').text(date);
";
echo "if($('#textphp$semaine$jour').text() == $('#textjs$semaine$jour').text() && $('#textphp$semaine$jour').text() == $('#textbdd$semaine$jour').text() && $('#textbdd$semaine$jour').text() == $('#textjs$semaine$jour').text()){
";
echo "$('#$semaine$jour').css('background-color','green');
}
";
echo "else{
";
echo "$('#$semaine$jour').css('background-color','red');
}
";
echo "</script>";
}
// Afficher la page de test d'un client REST sécurisé
// LG 20211013
public function ClientRESTsécuriséAction(Request $request) {
// if ($this->RedirectIfNotGranted($request, $this->isGranted(PaaVoter::VOIR . "Intervenants"), $response))
// return $response;
$RESTdata = array(
'login' => 'elAdmin',
'password' => '123'
);
$token = "leToken" ;
$token = $this->file_post_contents("http://local.paa.ort.net/index.php/auth-tokens", $RESTdata);
// $token = $this->file_post_contents("http://127.0.0.1/paa/public/index.php/auth-tokens", $RESTdata);
// $token = $this->file_post_contents("http://demo.paa-planning.net/paa/public/index.php/auth-tokens", $RESTdata);
echo $token ;
$lsTwig = '@Paa/Tests/ClientRESTsécurisé.html.twig' ;
return $this->render($lsTwig) ;
}
private function file_post_contents($url, $data, $token = null) {
$header = "Content-type: application/x-www-form-urlencoded\r\n";
if($token != null) {
$header = "X-Auth-Token: " . $token ."\r\n";
}
$postdata = http_build_query($data);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => $header,
'content' => $postdata
)
);
$context = stream_context_create($opts);
return file_get_contents($url, false, $context);
}
// LG 20220118
function teste_SendMailAction(Request $request, \Swift_Mailer $mailer) {
$lsDestinataire = ["luc.gilot@wanadoo.fr", "luc.gilot@sfr.fr", "luc.gilot@limoog.net"] ;
$lsSujet = "eMail de test envoyé par PAA à " . date('Y-m-d H:i:s') ;
$lsTextMail = "Mail de test\r\n<br>\r\n<br>"
. "Date/Heure = " . date('Y-m-d H:i:s') . "\r\n<br>"
. "Destinataires = " . implode(",", $lsDestinataire) . "\r\n<br>"
. "MAILER_SMTP_NOUV = " . lg_getenv("MAILER_SMTP_NOUV") . "\r\n<br>"
. "MAILER_HOST_NOUV = " . lg_getenv("MAILER_HOST_NOUV") . "\r\n<br>"
// LG 20241028 old . "MAILER_USERNAME_NOUV = " . lg_getenv("MAILER_USERNAME_NOUV") . "\r\n<br>"
. "MAILER_HOST_NOUV = ..." . substr(lg_getenv("MAILER_HOST_NOUV"), -4) . "\r\n<br>"
// LG 20230330 déac . "MAILER_PASSWORD_NOUV = " . lg_getenv("MAILER_PASSWORD_NOUV") . "\r\n<br>"
. "MAILER_PORT_NOUV = " . lg_getenv("MAILER_PORT_NOUV") . "\r\n<br>"
. "MAILER_ENCRYPTION = " . lg_getenv("MAILER_ENCRYPTION") . "\r\n<br>"
. "MAILER_SENDER_ADDRESS = " . lg_getenv("MAILER_SENDER_ADDRESS") . "\r\n<br>"
. "MAILER_SENDER_NAME = " . lg_getenv("MAILER_SENDER_NAME") . "\r\n<br>" ;
$lbOK = MailController::EnvoieMail($mailer, $lsDestinataire, $lsSujet, $lsTextMail);
if ($lbOK) {
// succès
$lsResponse = "Envoi réussi : \r\n<br>" . $lsTextMail ;
} else {
// echec
$lsResponse = "Echec de l'envoi : \r\n<br>" . $lsTextMail ;
}
return new Response($lsResponse, Response::HTTP_OK) ;
}
function test_checkWPUserAction() {
$cnom = 'silverhand';
$em = $this->getDoctrineManager();
$intervRepo = $em->getRepository("PaaBundle:" . 'intervenants');
$res = $intervRepo->checkWPIntervenants($cnom);
$path = __DIR__;
file_put_contents($path . '/testSync.txt', $res . " ", FILE_APPEND);
}
function test_rtvNomCourtValideAction() {
$cnom = 'silverhand';
$cprenom = 'johnny';
$em = $this->getDoctrineManager();
$intervRepo = $em->getRepository("PaaBundle:" . 'intervenants');
$res = $intervRepo->rtvNomCourtValide($cnom, $cprenom);
$path = __DIR__;
file_put_contents($path . '/testSync.txt', $res . " ", FILE_APPEND);
}
function test_rtvInitialesValideAction() {
$cnom = 'silverhand';
$cprenom = 'johnny';
$em = $this->getDoctrineManager();
$intervRepo = $em->getRepository("PaaBundle:" . 'intervenants');
$res = $intervRepo->rtvInitialesValide($cnom, $cprenom);
$path = __DIR__;
file_put_contents($path . '/testSync.txt', $res . " ", FILE_APPEND);
}
// Changer le mdp d'un user
// $psUser : le name du user dont on veut changer le mdp
// $psMDP : le nouveau mdp à donner
// $psToken : obligatoirement celui contenu dans le fichier /var/www/html/TokenChangeMDPUserSymfony.txt
function changeMDPAction($psUser, $psMDP, $psToken) {
$lsToken = file_get_contents("/var/www/html/TokenChangeMDPUserSymfony.txt") ;
$lsToken = substr($lsToken, 0, 18) ;
if ($psToken != $lsToken) return new Response("KO") ;
$em = $this->getDoctrineManager();
$intervRepo = $em->getRepository("PaaBundle:users");
$loUser = $intervRepo->findOneBy(['username' => $psUser]);
$encoder = $this->get("security.password_encoder");
$lsMDPEndodé = $encoder->encodePassword($loUser, $psMDP);
$loUser->setPassword($lsMDPEndodé) ;
$em->persist($loUser);
$em->flush();
return new Response("OK") ;
}
public function testListeIntervenantsAction(request $request) {
$m = $this->getDoctrineManager();
$psTypeRes = 'I';
$piIdRes = 1000125;
$piSemDebut = getNoSemaine($this->getEntitéAnnéeCourante()->getDdebut());
$piSemFin = getNoSemaine($this->getEntitéAnnéeCourante()->getDfin());
$pbIncSemType = "true";
$loListeIntervenantsSemaine = $m->getRepository("PaaBundle:intervenants")->getIntervenantsSemainePourListe($psTypeRes, $piIdRes, $piSemDebut, $piSemFin, $pbIncSemType);
$laOptions = array(
'paListeIntervenantsSemaine' => $loListeIntervenantsSemaine,
'psNomTable' => 'intervenants',
);
$this->fillOptionsPourRenderEnTeteMenu($laOptions, $request);
return $this->render('@Paa/Essais/testListeIntervenants.html.twig', $laOptions);
}
public function testEvolutionsAction(request $request) {
$m = $this->getDoctrineManager();
$laListeEntites = '';
$laListeVersion = '';
// LG 20211117 old $laListeEntites = $m->getRepository("PaaBundle:changelog")->getAllHierarchique(false);
$loListeIntervenantsSemaine = $m->getRepository("PaaBundle:intervenants")->getIntervenantsSemainePourListe();
$laOptions = array(
'paListeIntervenantsSemaine' => $loListeIntervenantsSemaine,
'psNomTable' => 'intervenants',
);
$this->fillOptionsPourRenderEnTeteMenu($laOptions, $request);
return $this->render('@Paa/Default/evolutions.html.twig', $laOptions);
}
// CB 20221017
// Dessiner toutes les icones disponibles
public function listeIconesAction() {
//1. recupérer contenu
$urlFAW = $_ENV['baseURLJS'] . '/vendor/FontAwesome/fontawesome-free-5.14.0-web/css/all.css' ;
$urlGlyph = $_ENV['baseURLJS'] . '/vendor/bootstrap/3.3.7/css/bootstrap.css' ;
echo <<<HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>icons</title>
<link rel="stylesheet" type="text/css" href="$urlFAW">
<link rel="stylesheet" type="text/css" href="$urlGlyph">
</head>
<body>
HTML ;
// LG 20221102 début
// $lsListeIcones = file_get_contents('C:\wamp64\www\paa\public\vendor\FontAwesome\fontawesome-free-5.14.0-web\css\all.css');
// $lsListeGlyphIcones = file_get_contents('C:\wamp64\www\paa\public\vendor\bootstrap\3.3.7\css\bootstrap.css');
$lsFile = __FILE__ ;
$laDirs = explode(DIRECTORY_SEPARATOR, $lsFile) ;
$lsPath = "" ;
foreach($laDirs As $lsDir) {
if ($lsDir == "src") {
break ;
}
$lsPath .= $lsDir . DIRECTORY_SEPARATOR ;
}
$lsFontAwesome = $lsPath . "public/vendor/FontAwesome/fontawesome-free-5.14.0-web/css/all.css" ;
$lsGlyphIcon = $lsPath . "public/vendor/bootstrap/3.3.7/css/bootstrap.css" ;
$lsListeIcones = file_get_contents($lsFontAwesome);
$lsListeGlyphIcones = file_get_contents($lsGlyphIcon);
// LG 20221102 fin
//2. convertir en tab -> explode ($skuList = explode(PHP_EOL, $_POST['skuList']);) (+ ajouter un saut de ligne php (/n))
$iconList = explode(PHP_EOL, $lsListeIcones);
$GlyphiconList = explode(PHP_EOL, $lsListeGlyphIcones);
//3. foreach (équivalent l13/14/15 icon.html -> inclure si ça commence par /./fa
echo '<center><h1>GlyphIcone</h1></center>';
echo '<center><h3><table style="width: 50%">';
echo '<tr><th>Nom</th><th>xs</th><th>small</th><th>large</th></tr>';
foreach($GlyphiconList as $lsRow) {
if (substr($lsRow, 0, 10) == '.glyphicon') {
$classeGlyph = explode(':', $lsRow) [0];
$classeGlyph = substr($classeGlyph, 1);
echo'<tr>'
. '<td style="border: 1px solid black;">glyphicon ' . $classeGlyph . '</td>'
. '<td style="border: 1px solid black; font-size:15px;"><span class="glyphicon ' . $classeGlyph .'"></span></td>'
. '<td style="border: 1px solid black; font-size:20px;"><span class="glyphicon ' . $classeGlyph . '"></span></td>'
. '<td style="border: 1px solid black; font-size:25px;"><span class="glyphicon ' . $classeGlyph . '"></span></td>'
. '</tr>';
}
// $loGlyphIcon = new \stdClass();
}
echo '</table></h3></center>';
echo '<center><h1>FontAwesome</h1></center>';
echo '<center><h3><table style="width: 50%">';
echo '<tr><th>Nom</th><th>xs</th><th>small</th><th>large</th></tr>';
foreach($iconList as $lsRow) {
if (substr($lsRow, 0, 3) == '.fa') {
$classe = explode(':', $lsRow) [0];
$classe = substr($classe, 1);
echo'<tr>'
. '<td style="border: 1px solid black;">far ' . $classe . '</td>'
. '<td style="border: 1px solid black;"><span class="far ' . $classe .' fa-xs "></span></td>'
. '<td style="border: 1px solid black;"><span class="far ' . $classe . ' fa-sm"></span></td>'
. '<td style="border: 1px solid black;"><span class="far ' . $classe . ' fa-lg"></span></td>'
. '</tr>';
}
}
echo '</table></h3></center>';
return new response("") ;
}
//CB 20221017 fin
// Lancer une exception
// LG 20230330
function teste_GénèreErreurAction(Request $request) {
throw new \Exception("Exception lancée dans le cadre d'un test.") ;
return new Response("Exception lancée dans le cadre d'un test.", Response::HTTP_OK) ;
}
// // LG 20230905 déac : inutilisé
// // AV 20230412 : test d'une fonction qui récupère le temps de session restant avant la fin de la session sans interférer avec le temps de session
// public function getTempsSessionRestantAction(Request $request) {
// $session = $request->getSession();
// // $sessionLifetime = $session->getMetadataBag()->getLifetime();
// $sessionLifetime = $_ENV['session_max_idle_time'];
// $lastActivity = $session->getMetadataBag()->getLastUsed();
// $expirationTime = $lastActivity + $sessionLifetime;
// $tempsRestant = $expirationTime - time();
// //return new Response($tempsRestant);
// return new JsonResponse(['temps_restant' => $tempsRestant]);
// }
public function pageTestGetTempsSessionRestantAction() {
return $this->render('@Paa/Essais/pageTestGetTempsSessionRestant.html.twig');
}
// LG 20230905 déac passé dans defaultController
// public function checkSecondsToExpireAction(): JsonResponse {
// return new JsonResponse(['secToExp' => 0]);
// //throw new \Exception("On ne devrait jamais passer dans cette action puisqu'elle est gérée dans la function onKernelRequest de la classe SessionIdleHandler") ;
// }
// CB 20230531 début
public function essaiMenuAction() {
echo <<<HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>essaiMenu</title>
<style>
.row {
display: flex;
gap: 10%;
height: 100vh;
align-items: center;
justify-content: center;
}
.col {
flex: 1;
padding: 1em;
border-radius: 45px;
max-width: 500px;
height: 400px;
}
.btn2 {
background-color: white;
color: black;
border: 2px solid #008CBA;
width: 50%;
height: 10%;
justify-content: center;
}
.btn3 {
background-color: white;
color: black;
border: 2px solid #00ff18;
width: 50%;
height: 10%;
justify-content: center;
}
</style>
</head>
<body>
HTML;
echo '<center><h1>Essai menu</h1></center>';
echo'<div class="row">'
. '<div class="col justify-content-start" style="background-color: lightblue;">
<center><h2>essai</h2></center>
<button class="btn2">Blue</button> <br>
<br><button class="btn3">Green</button>
</div>'
. '<div class="col justify-content-end" style="background-color: lightcoral;">
<center><h2>essai2</h2></center>
<button class="btn2">Blue</button>
</div>'
. '</div>'
;
$entity = new fichierTest();
$entity->creationFichier('intervenants');
return new response("") ;
}
// CB 20230531 fin
public function TestManyToManyAction() {
$liActivité = 1433;
$em = $this->getDoctrineManager();
$activites = $em->getRepository(activites::class)->find($liActivité);
echo("Activité N° " . $liActivité . "<br>");
$seances = $activites->getSéances();
echo("nb séances " . count($seances) . "<br>");
$groupes = $activites->getgroupes();
echo("nb groupes " . count($groupes) . "<br>");
$intervenants = $activites->getintervenants();
echo("nb intervenants " . count($intervenants) . "<br>");
$usagers = $activites->getusagers();
echo("nb usagers " . count($usagers) . "<br>");
$salles = $activites->getsalles();
echo("nb salles " . count($salles) . "<br>");
return $this->render('@Paa/Essais/zZoneDeTestYc.html.twig');
}
public function Teste_GetIDActivitesAction(Request $request) {
// info Obligatoir menu
$psNomTable = "annees";
$piId = 3;
// Manager Symfony
$em = $this->getDoctrineManager();
// info Obligatoir Menu
$loEntité = $em->getRepository("PaaBundle:annees")->find(3);
$activiter = $em->getRepository("PaaBundle:activites");
// Mon Formulaire
$pLstRes = ['USAGER 1' => 'U1', 'USAGER2' => 'U2'];
$pNomResActive = 'U2';
$loForm = $this->createForm('App\PaaBundle\Form\IDActivitesType', null, ['LstRes' => $pLstRes, 'PnomResActiv' => $pNomResActive]);
// CE CODE EST DUPLIQUE!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Cette requête est à déplacer dans le repository de Activites : méthode "rtvCurActivitesRessource" avec les mêmes paramètres
// libellé court : 2174 = eiFormatLibelléStdRéduit
// libellé long : 1151 + 2^12
$function = $em->getConnection()->prepare("SELECT * FROM paa.rtvCurActivitesRessource('I1','-1',null,null,null,null,null,null,true,2174::integer,(1151+2^12)::integer)");
$function->execute();
$curActivitesRessource = $function->fetchall();
$laOptions = array(
'poEntité' => $loEntité,
'poForm' => $loForm->createView(),
'paActivitésRessource' => $curActivitesRessource,
'psOngletActif' => "",
'psSSOngletActif' => "",
'pddate' => '2018-01-01',
'piHeureDeb' => '00:00',
'piHeureFin' => '00:00'
);
$this->fillOptionsPourRenderEnTeteMenu($laOptions, $request);
$render = $this->render('@Paa/Essais/pageTest_GetIDActivites.html.twig', $laOptions);
return $render;
}
public function TestePopup_getIDActivitesAction(Request $request) {
$psNomTable = "annees";
$piId = 3;
// Manager Symfony
$em = $this->getDoctrineManager();
// info Obligatoir Menu
$loEntité = $em->getRepository("PaaBundle:annees")->find(3);
// Mon Formulaire
$loForm = $this->createForm('App\PaaBundle\Form\IDActivitesType');
// CE CODE EST DUPLIQUE!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Cette requête est à déplacer dans le repository de Activites : méthode "rtvCurActivitesRessource" avec les mêmes paramètres
// libellé court : 2174 = eiFormatLibelléStdRéduit
// libellé long : 1151 + 2^12
$activiter = $em->getRepository("PaaBundle:activites");
$curActivitesRessource = $activiter->rtvCurActivitesRessource('I1', '-1', 'null', 'null', 'null', 'null', 'null', 'null', 'true', 2174, 9343);
$poform = $this->createForm('App\PaaBundle\Form\IDActiviteTestTempPopUpType');
$laOptions = array(
'poEntité' => $loEntité,
'poForm' => $loForm->createView(),
'paActivitésRessource' => $curActivitesRessource,
'psOngletActif' => "",
'psSSOngletActif' => "",
'LoForm' => $poform->createView()
);
// Tentative de recuperation ;
$loHandleRequest = $loForm->handleRequest($request);
if ($loHandleRequest->isSubmitted()) {
$data = $loForm->getData();
return $this->redirectToRoute('getIDActivites');
}
// fin de tentative
$this->fillOptionsPourRenderEnTeteMenu($laOptions, $request);
return $this->render('@Paa/Essais/pageTestPopup_getIDActivites.html.twig', $laOptions);
}
// LG 20240220 début
// Inspiré de https://medium.com/@cn007b/super-simple-php-websocket-example-ea2cd5893575
// Au préalable, le serveur websocket doit être lancé
// Serveur wenSockets : /home/luc/partage_win10/Luc/Dev/DevWeb/Symfony/applicationPAA_S4/src/Limoog/PartageBundle/Component/serveurWebsocket.php
// Commande : "php -q /home/luc/partage_win10/Luc/Dev/DevWeb/Symfony/applicationPAA_S4/src/Limoog/PartageBundle/Component/serveurWebsocket.php"
function websocketClientAction() {
$html = "<html>
<head>
<script type='text/javascript' src='http://local.paa.ort.net//vendor/jQuery-3.3.1/jquery-3.3.1.min.js?v=64'></script>
</head>
<body>
<h1>Exemple de websocket</h1>
<div id='root'></div>
<script>
// Faire appel au serveur websockets
const host = 'ws://127.0.0.1:8088';
const socket = new WebSocket(host);
socket.onerror = function(event) {
console.log('WebSocket error: ', event);
document.getElementById('root').innerHTML = 'Erreur de connexion';
} ;
socket.onopen = function(e) {
// La connexion est confirmée : envoyer maintenant la demande
const lsURL = 'http://local.paa.ort.net/index.php';
const loDemande = {URLApplication: lsURL, data: {msg: 'salut'}} ;
const lsDemande = JSON.stringify(loDemande) ;
socket.send(lsDemande) ;
};
socket.onclose = function(e) {
// La connexion est terminée
document.getElementById('root').innerHTML = document.getElementById('root').innerHTML + '<hr>Connexion terminée';
};
socket.onmessage = function(e) {
// Un message est reçu du serveur
document.getElementById('root').innerHTML = document.getElementById('root').innerHTML + '<br>' + e.data;
};
</script>
</body>
</html>
" ;
return new Response($html) ;
}
function websocketServerAction(Request $request) {
$data = $request->request->All() ;
$content = $data["msg"] . ', Il est ' . time() ;
return new response($content) ;
}
// LG 20240220 fin
// LG 20240605
function phpinfoAction(Request $request) {
phpinfo() ;
return new response() ;
}
}