src/PaaBundle/Controller/TestController.php line 633

Open in your IDE?
  1. <?php
  2. namespace App\PaaBundle\Controller;
  3. //use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  4. use App\PaaBundle\Controller\PAABaseController;
  5. use App\PaaBundle\Entity\intervenants;
  6. use App\PaaBundle\Entity\usagers;
  7. use App\Tests\test_chloe\fichierTest;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;  // LG 20180622
  10. use Symfony\Component\HttpFoundation\JsonResponse// AV 20230412 add
  11. use Symfony\Component\HttpFoundation\Session\SessionInterface;  // AV 20230413 add
  12. use App\PaaBundle\Controller\MailController ;
  13. class TestController extends PAABaseController {
  14.     
  15.     public function TestGetDateAvecJourAction(){
  16.         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>';
  17.         echo '<script type="text/javascript" src="http://127.0.0.1/paa/public//Limoog/Paa/src/Paa.js?v=6"></script>';
  18.         echo '<script type="text/javascript" src="http://127.0.0.1/paa/public//vendor/moment/moment.min.js?v=6"></script>';
  19.         $loConnexion $this->getDoctrineConnection();
  20.         echo "<div>Pour la semaine ...... et le jour .. : ..... PHP ..... | | ..... BDD ..... | | .....JS.....";
  21.         $this->vérifierEgalité(1,3638,$loConnexion);
  22.         $this->vérifierEgalité(2,3638,$loConnexion);
  23.         $this->vérifierEgalité(3,3638,$loConnexion);
  24.         $this->vérifierEgalité(4,3638,$loConnexion);
  25.         $this->vérifierEgalité(5,3638,$loConnexion);
  26.         $this->vérifierEgalité(6,3638,$loConnexion);
  27.         $this->vérifierEgalité(7,3638,$loConnexion);
  28.         $this->vérifierEgalité(1,-3,$loConnexion);
  29.         $this->vérifierEgalité(2,-3,$loConnexion);
  30.         $this->vérifierEgalité(3,-3,$loConnexion);
  31.         $this->vérifierEgalité(4,-3,$loConnexion);
  32.         $this->vérifierEgalité(5,-3,$loConnexion);
  33.         $this->vérifierEgalité(6,-3,$loConnexion);
  34.         $this->vérifierEgalité(7,-3,$loConnexion);
  35.         
  36.         $this->vérifierEgalité(1,-2,$loConnexion);
  37.         $this->vérifierEgalité(2,-2,$loConnexion);
  38.         $this->vérifierEgalité(3,-2,$loConnexion);
  39.         $this->vérifierEgalité(4,-2,$loConnexion);
  40.         $this->vérifierEgalité(5,-2,$loConnexion);
  41.         $this->vérifierEgalité(6,-2,$loConnexion);
  42.         $this->vérifierEgalité(7,-2,$loConnexion);
  43.         $this->vérifierEgalité(1,-1,$loConnexion);
  44.         $this->vérifierEgalité(2,-1,$loConnexion);
  45.         $this->vérifierEgalité(3,-1,$loConnexion);
  46.         $this->vérifierEgalité(4,-1,$loConnexion);
  47.         $this->vérifierEgalité(5,-1,$loConnexion);
  48.         $this->vérifierEgalité(6,-1,$loConnexion);
  49.         $this->vérifierEgalité(7,-1,$loConnexion);
  50.         $this->vérifierEgalité(1,0,$loConnexion);
  51.         $this->vérifierEgalité(2,0,$loConnexion);
  52.         $this->vérifierEgalité(3,0,$loConnexion);
  53.         $this->vérifierEgalité(4,0,$loConnexion);
  54.         $this->vérifierEgalité(5,0,$loConnexion);
  55.         $this->vérifierEgalité(6,0,$loConnexion);
  56.         $this->vérifierEgalité(7,0,$loConnexion);
  57.         $this->vérifierEgalité(1,-100,$loConnexion);
  58.         $this->vérifierEgalité(2,-100,$loConnexion);
  59.         $this->vérifierEgalité(3,-100,$loConnexion);
  60.         $this->vérifierEgalité(4,-100,$loConnexion);
  61.         $this->vérifierEgalité(5,-100,$loConnexion);
  62.         $this->vérifierEgalité(6,-100,$loConnexion);
  63.         $this->vérifierEgalité(7,-100,$loConnexion);
  64.         $this->vérifierEgalité(1,-101,$loConnexion);
  65.         $this->vérifierEgalité(2,-101,$loConnexion);
  66.         $this->vérifierEgalité(3,-101,$loConnexion);
  67.         $this->vérifierEgalité(4,-101,$loConnexion);
  68.         $this->vérifierEgalité(5,-101,$loConnexion);
  69.         $this->vérifierEgalité(6,-101,$loConnexion);
  70.         $this->vérifierEgalité(7,-101,$loConnexion);
  71.         $this->vérifierEgalité(1,-102,$loConnexion);
  72.         $this->vérifierEgalité(2,-102,$loConnexion);
  73.         $this->vérifierEgalité(3,-102,$loConnexion);
  74.         $this->vérifierEgalité(4,-102,$loConnexion);
  75.         $this->vérifierEgalité(5,-102,$loConnexion);
  76.         $this->vérifierEgalité(6,-102,$loConnexion);
  77.         $this->vérifierEgalité(7,-102,$loConnexion);
  78.         
  79.         $response = new Response('');
  80.         return $response;
  81.     }
  82.     public function vérifierEgalité($jour,$semaine,$loConnexion){
  83.         echo "<div id='$semaine$jour'>Pour la semaine ".$semaine." et le jour ".$jour." :";
  84.         // Fonction PhP
  85.         $rep =  GetDateAvecJour($jour,$semaine);
  86.         $repPHP str_replace("/""-"$rep);
  87.         echo "<span id='textphp$semaine$jour'>$repPHP</span>";
  88.         echo " || ";
  89.         
  90.         // Fonction BDD
  91.         $sql ="SELECT paa.getdateavecjour($jour,$semaine);";
  92.         $repBDD $loConnexion->query($sql, \PDO::FETCH_ASSOC);
  93.         foreach ($repBDD as $value) {
  94.             echo "<span id='textbdd$semaine$jour'>".$value['getdateavecjour'] . "</span>";
  95.         }
  96.         echo " || ";
  97.         // Fonction JS
  98.         echo "<span id='textjs$semaine$jour'></span></div>";
  99.         echo "<script> 
  100.             date = window.oPaa.getDateAvecJour("$jour .","$semaine .");
  101.             $('#textjs$semaine$jour').text(date);
  102.             "
  103.         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()){
  104.             ";       
  105.         echo "$('#$semaine$jour').css('background-color','green');
  106.     }
  107.     ";       
  108.         echo "else{
  109.             ";       
  110.         echo "$('#$semaine$jour').css('background-color','red');
  111.     }
  112.     ";       
  113.         echo "</script>";        
  114.     }
  115.     // Afficher la page de test d'un client REST sécurisé
  116.     // LG 20211013
  117.     public function ClientRESTsécuriséAction(Request $request) {
  118. //        if ($this->RedirectIfNotGranted($request, $this->isGranted(PaaVoter::VOIR . "Intervenants"), $response))
  119. //            return $response;
  120.         
  121.         $RESTdata = array(
  122.             'login' => 'elAdmin',
  123.             'password' => '123'
  124.         );
  125.         $token "leToken" ;
  126.         $token $this->file_post_contents("http://local.paa.ort.net/index.php/auth-tokens"$RESTdata);
  127.  //       $token = $this->file_post_contents("http://127.0.0.1/paa/public/index.php/auth-tokens", $RESTdata);
  128.  //        $token = $this->file_post_contents("http://demo.paa-planning.net/paa/public/index.php/auth-tokens", $RESTdata);
  129.         
  130.         echo $token ;
  131.         
  132.         $lsTwig '@Paa/Tests/ClientRESTsécurisé.html.twig' ;
  133.         return $this->render($lsTwig) ;
  134.     }
  135.     
  136.     private function file_post_contents($url$data$token null) {
  137.             $header "Content-type: application/x-www-form-urlencoded\r\n";
  138.             if($token != null) {
  139.                 $header "X-Auth-Token: " $token ."\r\n";
  140.             }
  141.             $postdata http_build_query($data);
  142.             $opts = array('http' =>
  143.                 array(
  144.                     'method' => 'POST',
  145.                     'header' => $header,
  146.                     'content' => $postdata
  147.                 )
  148.             );
  149.             $context stream_context_create($opts);
  150.             return file_get_contents($urlfalse$context);
  151.     }
  152.     // LG 20220118
  153.     function teste_SendMailAction(Request $request, \Swift_Mailer $mailer) {
  154.         $lsDestinataire = ["luc.gilot@wanadoo.fr""luc.gilot@sfr.fr""luc.gilot@limoog.net"] ;
  155.         $lsSujet "eMail de test envoyé par PAA à " date('Y-m-d H:i:s') ;
  156.         $lsTextMail "Mail de test\r\n<br>\r\n<br>"
  157.                     "Date/Heure = " date('Y-m-d H:i:s') . "\r\n<br>"
  158.                     "Destinataires = " implode(","$lsDestinataire) . "\r\n<br>"
  159.                     "MAILER_SMTP_NOUV = " lg_getenv("MAILER_SMTP_NOUV") . "\r\n<br>"
  160.                     "MAILER_HOST_NOUV = " lg_getenv("MAILER_HOST_NOUV") . "\r\n<br>"
  161. // LG 20241028 old                    . "MAILER_USERNAME_NOUV = " . lg_getenv("MAILER_USERNAME_NOUV") . "\r\n<br>"
  162.                     "MAILER_HOST_NOUV = ..." substr(lg_getenv("MAILER_HOST_NOUV"), -4) . "\r\n<br>"
  163. // LG 20230330 déac                    . "MAILER_PASSWORD_NOUV = " . lg_getenv("MAILER_PASSWORD_NOUV") . "\r\n<br>"
  164.                     "MAILER_PORT_NOUV = " lg_getenv("MAILER_PORT_NOUV") . "\r\n<br>"
  165.                     "MAILER_ENCRYPTION = " lg_getenv("MAILER_ENCRYPTION") . "\r\n<br>" 
  166.                     "MAILER_SENDER_ADDRESS = " lg_getenv("MAILER_SENDER_ADDRESS") . "\r\n<br>" 
  167.                     "MAILER_SENDER_NAME = " lg_getenv("MAILER_SENDER_NAME") . "\r\n<br>" ;
  168.         $lbOK MailController::EnvoieMail($mailer$lsDestinataire$lsSujet$lsTextMail);
  169.         if ($lbOK) {
  170.             // succès
  171.             $lsResponse "Envoi réussi : \r\n<br>" $lsTextMail ;
  172.         } else {
  173.             // echec
  174.             $lsResponse "Echec de l'envoi : \r\n<br>" $lsTextMail ;
  175.         }
  176.         return new Response($lsResponseResponse::HTTP_OK) ;
  177.     }
  178.     
  179.     function test_checkWPUserAction() {
  180.         $cnom 'silverhand';
  181.         $em $this->getDoctrineManager();
  182.         $intervRepo $em->getRepository("PaaBundle:" 'intervenants');
  183.         $res $intervRepo->checkWPIntervenants($cnom);
  184.         $path __DIR__;
  185.         file_put_contents($path '/testSync.txt'$res " "FILE_APPEND);
  186.     }
  187.     
  188.     function test_rtvNomCourtValideAction() {
  189.         $cnom 'silverhand';
  190.         $cprenom 'johnny';
  191.         $em $this->getDoctrineManager();
  192.         $intervRepo $em->getRepository("PaaBundle:" 'intervenants');
  193.         $res $intervRepo->rtvNomCourtValide($cnom$cprenom);
  194.         $path __DIR__;
  195.         file_put_contents($path '/testSync.txt'$res " "FILE_APPEND);
  196.     }
  197.     
  198.     function test_rtvInitialesValideAction() {
  199.         $cnom 'silverhand';
  200.         $cprenom 'johnny';
  201.         $em $this->getDoctrineManager();
  202.         $intervRepo $em->getRepository("PaaBundle:" 'intervenants');
  203.         $res $intervRepo->rtvInitialesValide($cnom$cprenom);
  204.         $path __DIR__;
  205.         file_put_contents($path '/testSync.txt'$res " "FILE_APPEND);
  206.     }
  207.     
  208.     // Changer le mdp d'un user
  209.     // $psUser  : le name du user dont on veut changer le mdp
  210.     // $psMDP   : le nouveau mdp à donner
  211.     // $psToken : obligatoirement celui contenu dans le fichier /var/www/html/TokenChangeMDPUserSymfony.txt
  212.     function changeMDPAction($psUser$psMDP$psToken)  {
  213.         $lsToken file_get_contents("/var/www/html/TokenChangeMDPUserSymfony.txt") ;
  214.         $lsToken substr($lsToken018) ;
  215.         if ($psToken != $lsToken) return new Response("KO") ;
  216.         $em $this->getDoctrineManager();
  217.         $intervRepo $em->getRepository("PaaBundle:users");
  218.         $loUser $intervRepo->findOneBy(['username' => $psUser]);
  219.         $encoder $this->get("security.password_encoder");
  220.         $lsMDPEndodé $encoder->encodePassword($loUser$psMDP);
  221.         $loUser->setPassword($lsMDPEndodé) ;
  222.         $em->persist($loUser);
  223.         $em->flush();
  224.         return new Response("OK") ;
  225.     }
  226.     public function testListeIntervenantsAction(request $request) {
  227.         $m $this->getDoctrineManager();
  228.         $psTypeRes 'I';
  229.         $piIdRes 1000125;
  230.         $piSemDebut getNoSemaine($this->getEntitéAnnéeCourante()->getDdebut());
  231.         $piSemFin getNoSemaine($this->getEntitéAnnéeCourante()->getDfin());
  232.         $pbIncSemType "true";
  233.         $loListeIntervenantsSemaine $m->getRepository("PaaBundle:intervenants")->getIntervenantsSemainePourListe($psTypeRes$piIdRes$piSemDebut$piSemFin$pbIncSemType);
  234.         $laOptions = array(
  235.             'paListeIntervenantsSemaine' => $loListeIntervenantsSemaine,
  236.             'psNomTable' => 'intervenants',
  237.         );
  238.         $this->fillOptionsPourRenderEnTeteMenu($laOptions$request);
  239.         return $this->render('@Paa/Essais/testListeIntervenants.html.twig'$laOptions);
  240.     }
  241.     public function testEvolutionsAction(request $request) {
  242.         $m $this->getDoctrineManager();
  243.         $laListeEntites '';
  244.         $laListeVersion '';
  245. // LG 20211117 old            $laListeEntites = $m->getRepository("PaaBundle:changelog")->getAllHierarchique(false);
  246.         $loListeIntervenantsSemaine $m->getRepository("PaaBundle:intervenants")->getIntervenantsSemainePourListe();
  247.         $laOptions = array(
  248.             'paListeIntervenantsSemaine' => $loListeIntervenantsSemaine,
  249.             'psNomTable' => 'intervenants',
  250.         );
  251.         $this->fillOptionsPourRenderEnTeteMenu($laOptions$request);
  252.         return $this->render('@Paa/Default/evolutions.html.twig'$laOptions);
  253.     }
  254.     // CB 20221017
  255.     // Dessiner toutes les icones disponibles
  256.     public function listeIconesAction() {
  257.         //1. recupérer contenu
  258.         $urlFAW $_ENV['baseURLJS'] . '/vendor/FontAwesome/fontawesome-free-5.14.0-web/css/all.css' ;
  259.         $urlGlyph $_ENV['baseURLJS'] . '/vendor/bootstrap/3.3.7/css/bootstrap.css' ;
  260.         echo <<<HTML
  261. <!DOCTYPE html>
  262. <html>
  263. <head>
  264.     <meta charset="utf-8">
  265.     <title>icons</title>
  266.     <link rel="stylesheet" type="text/css" href="$urlFAW">
  267.     <link rel="stylesheet" type="text/css" href="$urlGlyph">
  268. </head>
  269. <body>
  270. HTML ;
  271. // LG 20221102 début
  272. //         $lsListeIcones = file_get_contents('C:\wamp64\www\paa\public\vendor\FontAwesome\fontawesome-free-5.14.0-web\css\all.css');
  273. //         $lsListeGlyphIcones = file_get_contents('C:\wamp64\www\paa\public\vendor\bootstrap\3.3.7\css\bootstrap.css');
  274.         $lsFile __FILE__ ;
  275.         $laDirs explode(DIRECTORY_SEPARATOR$lsFile) ;
  276.         $lsPath "" ;
  277.         foreach($laDirs As $lsDir) {
  278.             if ($lsDir == "src") {
  279.                 break ;
  280.             }
  281.             $lsPath .= $lsDir DIRECTORY_SEPARATOR ;
  282.         }
  283.         $lsFontAwesome $lsPath "public/vendor/FontAwesome/fontawesome-free-5.14.0-web/css/all.css" ;
  284.         $lsGlyphIcon $lsPath "public/vendor/bootstrap/3.3.7/css/bootstrap.css" ;
  285.         $lsListeIcones file_get_contents($lsFontAwesome);
  286.         $lsListeGlyphIcones file_get_contents($lsGlyphIcon);
  287. // LG 20221102 fin
  288.         //2. convertir en tab -> explode ($skuList = explode(PHP_EOL, $_POST['skuList']);) (+ ajouter un saut de ligne php (/n))
  289.         $iconList explode(PHP_EOL$lsListeIcones);
  290.         $GlyphiconList explode(PHP_EOL$lsListeGlyphIcones);
  291.         //3. foreach (équivalent l13/14/15 icon.html -> inclure si ça commence par /./fa
  292.         echo '<center><h1>GlyphIcone</h1></center>';
  293.         echo '<center><h3><table style="width: 50%">';
  294.         echo '<tr><th>Nom</th><th>xs</th><th>small</th><th>large</th></tr>';
  295.         foreach($GlyphiconList as $lsRow) {
  296.             if (substr($lsRow010) == '.glyphicon') {
  297.                 $classeGlyph explode(':'$lsRow) [0];
  298.                 $classeGlyph substr($classeGlyph1);
  299.                 echo'<tr>'
  300.                     '<td style="border: 1px solid black;">glyphicon ' $classeGlyph '</td>'
  301.                     '<td style="border: 1px solid black; font-size:15px;"><span class="glyphicon ' $classeGlyph .'"></span></td>'
  302.                     '<td style="border: 1px solid black; font-size:20px;"><span class="glyphicon ' $classeGlyph '"></span></td>'
  303.                     '<td style="border: 1px solid black; font-size:25px;"><span class="glyphicon ' $classeGlyph '"></span></td>'
  304.                     '</tr>';
  305.             }
  306. //            $loGlyphIcon = new  \stdClass();
  307.         }
  308.         echo '</table></h3></center>';
  309.         echo '<center><h1>FontAwesome</h1></center>';
  310.         echo '<center><h3><table style="width: 50%">';
  311.         echo '<tr><th>Nom</th><th>xs</th><th>small</th><th>large</th></tr>';
  312.         foreach($iconList as $lsRow) {
  313.             if (substr($lsRow03) == '.fa') {
  314.                 $classe explode(':'$lsRow) [0];
  315.                 $classe substr($classe1);
  316.                 echo'<tr>'
  317.                     '<td style="border: 1px solid black;">far ' $classe '</td>'
  318.                     '<td style="border: 1px solid black;"><span class="far ' $classe .' fa-xs "></span></td>'
  319.                     '<td style="border: 1px solid black;"><span class="far ' $classe ' fa-sm"></span></td>'
  320.                     '<td style="border: 1px solid black;"><span class="far ' $classe ' fa-lg"></span></td>'
  321.                     '</tr>';
  322.             }
  323.         }
  324.         echo '</table></h3></center>';
  325.         return new response("") ;
  326.     }
  327. //CB 20221017 fin
  328.     // Lancer une exception
  329.     // LG 20230330
  330.     function teste_GénèreErreurAction(Request $request) {
  331.         throw new \Exception("Exception lancée dans le cadre d'un test.") ;
  332.         return new Response("Exception lancée dans le cadre d'un test."Response::HTTP_OK) ;
  333.     }
  334. // // LG 20230905 déac : inutilisé
  335. //     // 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
  336. //     public function getTempsSessionRestantAction(Request $request) {
  337. //         $session = $request->getSession();
  338. //         // $sessionLifetime = $session->getMetadataBag()->getLifetime();
  339. //         $sessionLifetime = $_ENV['session_max_idle_time'];
  340. //         $lastActivity = $session->getMetadataBag()->getLastUsed();
  341. //         $expirationTime = $lastActivity + $sessionLifetime;
  342. //         $tempsRestant = $expirationTime - time();
  343. //         //return new Response($tempsRestant);
  344. //         return new JsonResponse(['temps_restant' => $tempsRestant]);
  345. //     }
  346.     public function pageTestGetTempsSessionRestantAction() {
  347.         return $this->render('@Paa/Essais/pageTestGetTempsSessionRestant.html.twig');
  348.     }
  349. // LG 20230905 déac passé dans defaultController
  350. //     public function checkSecondsToExpireAction(): JsonResponse {
  351. //         return new JsonResponse(['secToExp' => 0]);
  352. //         //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") ;
  353. //     }
  354. // CB 20230531 début
  355.     public function essaiMenuAction() {
  356.         echo <<<HTML
  357.             <!DOCTYPE html>
  358.             <html>
  359.             <head>
  360.                 <meta charset="utf-8">
  361.                 <title>essaiMenu</title>
  362.                 
  363.                 <style>
  364.                   .row {
  365.                     display: flex;
  366.                     gap: 10%; 
  367.                     height: 100vh; 
  368.                     align-items: center; 
  369.                     justify-content: center;
  370.                   }
  371.                   
  372.                   .col {
  373.                     flex: 1; 
  374.                     padding: 1em;
  375.                     border-radius: 45px;
  376.                     max-width: 500px; 
  377.                     height: 400px;
  378.                   }
  379.                   
  380.                   .btn2 {
  381.                     background-color: white; 
  382.                     color: black; 
  383.                     border: 2px solid #008CBA;
  384.                     width: 50%;
  385.                     height: 10%;
  386.                     justify-content: center;
  387.                   }
  388.                   
  389.                   .btn3 {
  390.                     background-color: white; 
  391.                     color: black; 
  392.                     border: 2px solid #00ff18;
  393.                     width: 50%;
  394.                     height: 10%;
  395.                     justify-content: center;
  396.                   }
  397.                 </style>
  398.             </head>
  399.             <body>
  400.         HTML;
  401.         echo '<center><h1>Essai menu</h1></center>';
  402.         echo'<div class="row">'
  403.         '<div class="col justify-content-start" style="background-color: lightblue;"> 
  404.                <center><h2>essai</h2></center>
  405.                <button class="btn2">Blue</button> <br>
  406.                <br><button class="btn3">Green</button>
  407.            </div>'
  408.         '<div class="col justify-content-end" style="background-color: lightcoral;"> 
  409.                <center><h2>essai2</h2></center>
  410.                <button class="btn2">Blue</button>
  411.            </div>'
  412.         '</div>'
  413.         ;
  414.         $entity = new fichierTest();
  415.         $entity->creationFichier('intervenants');
  416.         return new response("") ;
  417.     }
  418. // CB 20230531 fin
  419.     public function TestManyToManyAction() {
  420.         $liActivité 1433;
  421.         $em $this->getDoctrineManager();
  422.         $activites $em->getRepository(activites::class)->find($liActivité);
  423.         echo("Activité N° " $liActivité "<br>");
  424.         $seances $activites->getSéances();
  425.         echo("nb séances " count($seances) . "<br>");
  426.         $groupes $activites->getgroupes();
  427.         echo("nb groupes " count($groupes) . "<br>");
  428.         $intervenants $activites->getintervenants();
  429.         echo("nb intervenants " count($intervenants) . "<br>");
  430.         $usagers $activites->getusagers();
  431.         echo("nb usagers " count($usagers) . "<br>");
  432.         $salles $activites->getsalles();
  433.         echo("nb salles " count($salles) . "<br>");
  434.         return $this->render('@Paa/Essais/zZoneDeTestYc.html.twig');
  435.     }
  436.     public function Teste_GetIDActivitesAction(Request $request) {
  437.         // info Obligatoir menu 
  438.         $psNomTable "annees";
  439.         $piId 3;
  440.         // Manager Symfony
  441.         $em $this->getDoctrineManager();
  442.         // info Obligatoir Menu
  443.         $loEntité $em->getRepository("PaaBundle:annees")->find(3);
  444.         $activiter $em->getRepository("PaaBundle:activites");
  445.         // Mon Formulaire 
  446.         $pLstRes = ['USAGER 1' => 'U1''USAGER2' => 'U2'];
  447.         $pNomResActive 'U2';
  448.         $loForm $this->createForm('App\PaaBundle\Form\IDActivitesType'null, ['LstRes' => $pLstRes'PnomResActiv' => $pNomResActive]);
  449.         // CE CODE EST DUPLIQUE!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  450.         // Cette requête est à déplacer dans le repository de Activites : méthode "rtvCurActivitesRessource" avec les mêmes paramètres
  451.         // libellé court : 2174 = eiFormatLibelléStdRéduit
  452.         // libellé long : 1151 + 2^12
  453.         $function $em->getConnection()->prepare("SELECT * FROM paa.rtvCurActivitesRessource('I1','-1',null,null,null,null,null,null,true,2174::integer,(1151+2^12)::integer)");
  454.         $function->execute();
  455.         $curActivitesRessource $function->fetchall();
  456.         $laOptions = array(
  457.             'poEntité' => $loEntité,
  458.             'poForm' => $loForm->createView(),
  459.             'paActivitésRessource' => $curActivitesRessource,
  460.             'psOngletActif' => "",
  461.             'psSSOngletActif' => "",
  462.             'pddate' => '2018-01-01',
  463.             'piHeureDeb' => '00:00',
  464.             'piHeureFin' => '00:00'
  465.         );
  466.         $this->fillOptionsPourRenderEnTeteMenu($laOptions$request);
  467.         $render $this->render('@Paa/Essais/pageTest_GetIDActivites.html.twig'$laOptions);
  468.         return $render;
  469.     }
  470.     public function TestePopup_getIDActivitesAction(Request $request) {
  471.         $psNomTable "annees";
  472.         $piId 3;
  473.         // Manager Symfony
  474.         $em $this->getDoctrineManager();
  475.         // info Obligatoir Menu
  476.         $loEntité $em->getRepository("PaaBundle:annees")->find(3);
  477.         // Mon Formulaire 
  478.         $loForm $this->createForm('App\PaaBundle\Form\IDActivitesType');
  479.         // CE CODE EST DUPLIQUE!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  480.         // Cette requête est à déplacer dans le repository de Activites : méthode "rtvCurActivitesRessource" avec les mêmes paramètres
  481.         // libellé court : 2174 = eiFormatLibelléStdRéduit
  482.         // libellé long : 1151 + 2^12
  483.         $activiter $em->getRepository("PaaBundle:activites");
  484.         $curActivitesRessource $activiter->rtvCurActivitesRessource('I1''-1''null''null''null''null''null''null''true'21749343);
  485.         $poform $this->createForm('App\PaaBundle\Form\IDActiviteTestTempPopUpType');
  486.         $laOptions = array(
  487.             'poEntité' => $loEntité,
  488.             'poForm' => $loForm->createView(),
  489.             'paActivitésRessource' => $curActivitesRessource,
  490.             'psOngletActif' => "",
  491.             'psSSOngletActif' => "",
  492.             'LoForm' => $poform->createView()
  493.         );
  494.         // Tentative de recuperation ;
  495.         $loHandleRequest $loForm->handleRequest($request);
  496.         if ($loHandleRequest->isSubmitted()) {
  497.             $data $loForm->getData();
  498.             return $this->redirectToRoute('getIDActivites');
  499.         }
  500.         //  fin de tentative
  501.         $this->fillOptionsPourRenderEnTeteMenu($laOptions$request);
  502.         return $this->render('@Paa/Essais/pageTestPopup_getIDActivites.html.twig'$laOptions);
  503.     }
  504. // LG 20240220 début
  505.     // Inspiré de https://medium.com/@cn007b/super-simple-php-websocket-example-ea2cd5893575
  506.     // Au préalable, le serveur websocket doit être lancé
  507.     // Serveur wenSockets : /home/luc/partage_win10/Luc/Dev/DevWeb/Symfony/applicationPAA_S4/src/Limoog/PartageBundle/Component/serveurWebsocket.php
  508.     // Commande : "php -q /home/luc/partage_win10/Luc/Dev/DevWeb/Symfony/applicationPAA_S4/src/Limoog/PartageBundle/Component/serveurWebsocket.php"
  509.     function websocketClientAction() {
  510.         $html "<html>
  511. <head>
  512.     <script type='text/javascript' src='http://local.paa.ort.net//vendor/jQuery-3.3.1/jquery-3.3.1.min.js?v=64'></script>
  513. </head>
  514. <body>
  515.     <h1>Exemple de websocket</h1>
  516.     <div id='root'></div>
  517.     <script>
  518.         // Faire appel au serveur websockets
  519.         const host = 'ws://127.0.0.1:8088';
  520.         const socket = new WebSocket(host);
  521.         socket.onerror = function(event) {
  522.             console.log('WebSocket error: ', event);
  523.             document.getElementById('root').innerHTML = 'Erreur de connexion';
  524.             } ;
  525.         socket.onopen = function(e) {
  526.             // La connexion est confirmée : envoyer maintenant la demande
  527.             const lsURL = 'http://local.paa.ort.net/index.php';
  528.             const loDemande = {URLApplication: lsURL, data: {msg: 'salut'}} ;
  529.             const lsDemande = JSON.stringify(loDemande) ;
  530.             socket.send(lsDemande) ;
  531.         };
  532.         socket.onclose = function(e) {
  533.             // La connexion est terminée
  534.             document.getElementById('root').innerHTML = document.getElementById('root').innerHTML + '<hr>Connexion terminée';
  535.         };
  536.         socket.onmessage = function(e) {
  537.             // Un message est reçu du serveur
  538.             document.getElementById('root').innerHTML = document.getElementById('root').innerHTML + '<br>' + e.data;
  539.         };
  540.     </script>
  541. </body>
  542. </html>
  543. ;
  544.         return new Response($html) ;
  545.     }
  546.     function websocketServerAction(Request $request) {
  547.         $data $request->request->All() ;
  548.         $content =  $data["msg"] . ', Il est ' time() ;
  549.         return new response($content) ;
  550.     }
  551. // LG 20240220 fin
  552.     // LG 20240605
  553.     function phpinfoAction(Request $request) {
  554.         phpinfo() ;
  555.         return new response() ;
  556.     }
  557. }