maj.class.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. class maj {
  3. private static $colorLineGrey = "#6c757d";
  4. private static $colorLineRed = "red";
  5. private static $colorLineOrange = "orange";
  6. public static function query(string $query = NULL){
  7. if($query != NULL){
  8. db::query($query);
  9. try {
  10. db::execute();
  11. maj::print("SUCCESS : " . $query, self::$colorLineGrey);
  12. return TRUE;
  13. } catch (Exception $ex) {
  14. maj::print("ERREUR TECHNIQUE : " . $query, self::$colorLineRed);
  15. return FALSE;
  16. }
  17. } else {
  18. maj::print("ERREUR TECHNIQUE : Query not found", self::$colorLineRed);
  19. return FALSE;
  20. }
  21. }
  22. public static function compareHash(){
  23. if(git::getCommitHash() == git::getCommitHash(MAJ_TARGET)){
  24. return TRUE;
  25. } else {
  26. return FALSE;
  27. }
  28. }
  29. public static function print(string $_string, string $_color = NULL){
  30. if($_color == NULL){
  31. echo "<div>" . $_string . "</div>";
  32. } else {
  33. echo '<div style="color:' . $_color . '">' . $_string . '</div>';
  34. }
  35. }
  36. public static function printSeparateur(){
  37. self::print("**********************");
  38. }
  39. public static function start(){
  40. self::printSeparateur();
  41. self::print(">> Démarrage de la mise à jour de " . DOMAIN_CMS, self::$colorLineGrey);
  42. historique::recRef("/parametres.html");
  43. historique::add(array(
  44. "idType" => historique::getIdRef("ACTION"),
  45. "idUser" => session::getId(),
  46. "idPage" => historique::getIdRef("/parametres.html"),
  47. "log" => "Lancement de la mise à jour [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "]"
  48. ));
  49. // Activation du mode maintenance
  50. self::printSeparateur();
  51. self::print(">> Mode maintenance activé", self::$colorLineGrey);
  52. core::addFileMaintenance();
  53. // Création d'un backUp
  54. self::printSeparateur();
  55. self::print(">> Création du backup", self::$colorLineGrey);
  56. backup::create();
  57. file::cleanFilesByOrder(DIR_BACKUP, BACKUP_LIMIT);
  58. // Git
  59. $gitReturn = self::bashMaj();
  60. if($gitReturn == FALSE){
  61. self::printSeparateur();
  62. self::print("ERROR : Repo GIT [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "]", self::$colorLineRed);
  63. self::printSeparateur();
  64. self::print(">> ROLLBACK : Restauration des données", self::$colorLineOrange);
  65. backup::restore(DIR_BACKUP . backup::last());
  66. alert::recError("Mise à jour en erreur de [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "]");
  67. historique::recRef("/parametres.html");
  68. historique::add(array(
  69. "idType" => historique::getIdRef("ERROR"),
  70. "idUser" => session::getId(),
  71. "idPage" => historique::getIdRef("/parametres.html"),
  72. "log" => "Erreur lors de la mise à jour [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "]"
  73. ));
  74. } else {
  75. self::printSeparateur();
  76. self::print("Mise à jour du repo GIT [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "] effectué", self::$colorLineGrey);
  77. }
  78. if($gitReturn == TRUE){
  79. include_once(DIR_MAJ . "sql/maj.php");
  80. $sqlReturn = goSql();
  81. if($sqlReturn == FALSE){
  82. self::printSeparateur();
  83. self::print("ERROR : Maj SQL", self::$colorLineRed);
  84. self::printSeparateur();
  85. self::print(">> ROLLBACK : Restauration des données", self::$colorLineOrange);
  86. backup::restore(DIR_BACKUP . backup::last());
  87. alert::recError("ERROR : Maj SQL");
  88. historique::recRef("/parametres.html");
  89. historique::add(array(
  90. "idType" => historique::getIdRef("ERROR"),
  91. "idUser" => session::getId(),
  92. "idPage" => historique::getIdRef("/parametres.html"),
  93. "log" => "ERROR : Maj SQL"
  94. ));
  95. } else {
  96. self::printSeparateur();
  97. self::print("Maj SQL réalisée", self::$colorLineGrey);
  98. }
  99. self::printSeparateur();
  100. self::print(">> Réinitialisation des JSON", self::$colorLineGrey);
  101. json::create("salaries");
  102. json::create("excel");
  103. json::create("excel-proweb");
  104. json::create("events");
  105. json::create("users");
  106. json::create("salaries-proweb");
  107. json::create("lotterys");
  108. }
  109. self::printSeparateur();
  110. self::print(">> Mode maintenance désactivé", self::$colorLineGrey);
  111. core::removeFileMaintenance();
  112. self::printSeparateur();
  113. self::print(">> Fin de la mise à jour de " . DOMAIN_CMS, self::$colorLineGrey);
  114. self::printSeparateur();
  115. if($gitReturn == TRUE AND $sqlReturn == TRUE){
  116. historique::recRef("/parametres.html");
  117. historique::add(array(
  118. "idType" => historique::getIdRef("ACTION"),
  119. "idUser" => session::getId(),
  120. "idPage" => historique::getIdRef("/parametres.html"),
  121. "log" => "Mise à jour [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "] terminée"
  122. ));
  123. self::print("MAJ EN SUCCES [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "]", self::$colorLineGrey);
  124. self::printSeparateur();
  125. } else {
  126. self::print("MAJ EN ERREUR [" . MAJ_TARGET . " - " . git::getCommitHash(MAJ_TARGET) . "]", self::$colorLineRed);
  127. self::printSeparateur();
  128. }
  129. }
  130. public static function bashMaj(){
  131. $output = NULL;
  132. $retval = NULL;
  133. $bash = DIR_MAJ . MAJ . ".sh";
  134. $error = 0;
  135. if(is_file($bash)){
  136. try {
  137. exec("bash " .$bash, $output, $retval);
  138. foreach ($output as $value) {
  139. self::print($value, self::$colorLineGrey);
  140. if(git::checkError($value) == TRUE){
  141. $error = 1;
  142. }
  143. }
  144. } catch (\Throwable $th) {
  145. self::print("ERROR : " . $bash, self::$colorLineRed);
  146. return FALSE;
  147. }
  148. return ($error == 0)? TRUE : FALSE;
  149. } else {
  150. self::print("ERROR : " . $bash . " not found", self::$colorLineRed);
  151. return FALSE;
  152. }
  153. }
  154. public static function bashFetch(){
  155. $output = NULL;
  156. $retval = NULL;
  157. $bash = DIR_MAJ . "get-origin.sh";
  158. $error = 0;
  159. if(is_file($bash)){
  160. try {
  161. exec("bash " .$bash, $output, $retval);
  162. } catch (\Throwable $th) {
  163. alert::recError("ERROR : " . $bash);
  164. return FALSE;
  165. }
  166. return ($error == 0)? TRUE : FALSE;
  167. } else {
  168. alert::recError("ERROR : " . $bash . " not found");
  169. return FALSE;
  170. }
  171. }
  172. }