src/PaaBundle/Controller/ChangelogController.php line 117

Open in your IDE?
  1. <?php
  2. namespace App\PaaBundle\Controller;
  3. use App\PaaBundle\Controller\PAABaseController;
  4. use Doctrine\ORM\EntityRepository;
  5. use Doctrine\ORM\Query\ResultSetMapping;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. class ChangelogController extends PAABaseController {
  9.     
  10.     /*
  11.      * Mise à jour du changelog
  12.      */
  13. // LG 20230208 old    public function genChangelogScriptAction() {
  14.     public function genChangelogScriptAction($pbSetVersionDesLogsSansVersion) {
  15.         
  16.         $em $this->getDoctrineManager();
  17.         $repo $em->getRepository("PaaBundle:" 'changelog');
  18. // LG 20230208 début
  19.         if ($pbSetVersionDesLogsSansVersion) {
  20.             // Attribuer le N° de version à tous les logs qui n'ont pas encore de version
  21.             $lsNomVersion lg_getenv("paa_version") ;
  22.             $lsDateVersion lg_getenv("paa_version_date") ;
  23.             $repo->setVersionDesLogsSansVersion($lsNomVersion$lsDateVersion) ;
  24.         }
  25. // LG 20230208 fin
  26.         // Récupérer la liste des mises à jour
  27.         $laLogDatasObj $repo->getMaJ();
  28.         $laLogDatas = (array)$laLogDatasObj;
  29.         $lsValues "";
  30.         foreach($laLogDatas as $key => $value) {
  31.             (array)$laLogDatas[$key] = (array)$laLogDatas[$key];
  32.         }
  33.         
  34.         // Construire la liste des valeurs pour le Insert Into
  35.         $i 0;
  36.         $liNbLogsTraités ;
  37.         $lsFields "" ;
  38.         foreach($laLogDatas as $log) {
  39.             if ($liNbLogsTraités == 0) {
  40.                 // Première ligne : il faut générer la liste des champs du Insert Into pour que les champs soient dans le bon ordre
  41.                 foreach ($log as $key => $value) {
  42.                     if ($lsFields)  {
  43.                         $lsFields .= ", " ;
  44.                     }
  45.                     $lsFields .= $key ;
  46.                 }
  47.             }
  48.             // Générer les valeurs pour cette ligne
  49.             if ($lsValues)  {
  50.                 $lsValues .= ", \r\n" ;
  51.             }
  52.             $lsValues .= "(" ;
  53.             foreach ($log as $key => $value) {
  54.                 if($laLogDatas[$i][$key] === null) {
  55.                     $lsValues $lsValues.'null';
  56.                     if ($key != array_key_last($laLogDatas[$i])) {
  57.                         $lsValues $lsValues.',';
  58.                     }
  59.                         
  60.                 } else if (gettype($laLogDatas[$i][$key]) === 'string') {
  61.                     $lsValues $lsValues."'".pg_escape_string(trim($laLogDatas[$i][$key]))."',";
  62.                     
  63.                 } else if (gettype($laLogDatas[$i][$key]) == 'boolean') {
  64.                     if ($laLogDatas[$i][$key] === true) {
  65.                         $lsValues $lsValues.'true,';
  66.                     } else if ($laLogDatas[$i][$key] === false) {
  67.                         $lsValues $lsValues.'false,';
  68.                     } else {
  69.                         throw new \Exception("Anomalie") ;
  70.                     }
  71.                 } else {
  72.                      $lsValues $lsValues.$laLogDatas[$i][$key].',';
  73.                 }
  74.             }
  75.             $lsValues .= ")" ;
  76.             $i++;
  77.             $liNbLogsTraités++ ;
  78.         }
  79. // LG 20230208 début
  80. //         $lsQuery = "DELETE FROM paa.changelog ;\r\n" ;
  81.         $lsQuery "ALTER TABLE paa.changelog DISABLE Trigger ALL ;\r\n" ;
  82.         $lsQuery .= "DELETE FROM paa.changelog ;\r\n" ;
  83. // LG 20230208 fin
  84.         if ($lsValues) {
  85.             $lsQuery .= "INSERT INTO paa.changelog ($lsFields)"
  86.                 " VALUES \r\n"
  87.                 "$lsValues ;" ;
  88.         }
  89. // LG 20230208 début
  90. //         $lsQuery = "DELETE FROM paa.changelog ;\r\n" ;
  91.         $lsQuery .= "ALTER TABLE paa.changelog ENABLE Trigger ALL ;\r\n" ;
  92. // LG 20230208 fin
  93.         
  94.         //Génération du fichier .sql
  95.         $lsFichier $this->get('kernel')->getProjectDir() . "\src\PaaBundle\ScriptsSQL\Changelog.sql" ;           
  96.         $lsFichier str_replace("\\"DIRECTORY_SEPARATOR$lsFichier) ;
  97.         file_put_contents($lsFichier$lsQuery);
  98.         
  99.         $loMessage = new \stdClass;
  100.         $loMessage->status "ok";
  101.         $loMessage->nbLogs $liNbLogsTraités ;      // LG 20220312
  102.         $lsMessage json_encode($loMessageJSON_UNESCAPED_UNICODE);
  103.         $response = new Response($lsMessageResponse::HTTP_OK, array('content-type' => 'text/json'));
  104.         
  105.         return $response;
  106.     }
  107.     
  108.     // Mettre à jour les données de la table ChangeLog avec le contenu du script src/PaaBundle/ScriptsSQL/Changelog.sql
  109.     public function majChangelogAction() {
  110.         
  111.         $loConnexion $this->getDoctrineConnection();
  112.         $loMessage = new \stdClass;
  113.         $lsFichier $this->get('kernel')->getProjectDir() . "\src\PaaBundle\ScriptsSQL\Changelog.sql" ;           
  114.         $lsFichier str_replace("\\"DIRECTORY_SEPARATOR$lsFichier) ;
  115.         if (file_exists($lsFichier)) {
  116.             $lsSQL file_get_contents($lsFichier);
  117.             $lvResult $loConnexion->exec($lsSQL);
  118.             $loMessage->status "OK";
  119.         } else {
  120.             $loMessage->status "KO";
  121.             $loMessage->msg "Le fichier " $lsFichier " n'existe pas" ;
  122.         }
  123.         
  124.         $lsMessage json_encode($loMessageJSON_UNESCAPED_UNICODE);
  125.         $response = new Response($lsMessageResponse::HTTP_OK, array('content-type' => 'text/json'));
  126.         
  127.         return $response;
  128.     }
  129. }