From 6ca9666bb1c62b65942696fa3fbc23d132037055 Mon Sep 17 00:00:00 2001
From: Patrick Barroca <pbarroca@afi-sa.fr>
Date: Fri, 24 Mar 2023 15:58:01 +0000
Subject: [PATCH] select db no longer depends on valid current db

---
 library/Class/Migration/UpdateConfig.php      | 17 ++++----
 .../Migration/UpdateDatabaseAfterSelectDb.php | 42 ++++++++++---------
 scripts/select_db.php                         |  7 ++--
 scripts/upgrade_db.php                        |  1 -
 4 files changed, 34 insertions(+), 33 deletions(-)

diff --git a/library/Class/Migration/UpdateConfig.php b/library/Class/Migration/UpdateConfig.php
index 1ea30637d82..477bd5d7a9d 100644
--- a/library/Class/Migration/UpdateConfig.php
+++ b/library/Class/Migration/UpdateConfig.php
@@ -24,19 +24,18 @@ class Class_Migration_UpdateConfig {
 
   use
     Trait_StaticFileSystem,
-    Trait_Translator,
     Trait_EchoError;
 
 
   public function run($database_name) {
     Bokeh_Engine::getInstance()->warmUpFiles();
 
-    $this->echoStartTitle($this->_('Début de l\'étape de mise à jour des fichiers de configuration'));
+    $this->echoStartTitle('Début de l\'étape de mise à jour des fichiers de configuration');
     $this
       ->_setInBokehConfig('sgbd.config.dbname', $database_name)
       ->_setInCosmoConfig('integration_base', $database_name);
 
-    $this->echoEndTitle($this->_('Fin de l\'étape de mise à jour des fichiers de configuration'));
+    $this->echoEndTitle('Fin de l\'étape de mise à jour des fichiers de configuration');
     return $this;
   }
 
@@ -59,16 +58,16 @@ class Class_Migration_UpdateConfig {
 
 
   protected function _writeNewDataInFile($file_path, $key, $value, $preg_search, $preg_replace) {
-    $this->echoError($this->_('Mise à jour de %s dans le fichier de configartion %s',
-                              $key,
-                              $file_path) . "\n");
+    $this->echoError(sprintf('Mise à jour de %s dans le fichier de configuration %s',
+                             $key,
+                             $file_path) . "\n");
 
     $content = $this->getFileSystem()->file_get_contents($file_path);
 
     if (false === $content) {
-      $this->echoError($this->_('Mise à jour de %s dans le fichier de configartion %s impossible',
-                                $key,
-                                $file_path)
+      $this->echoError(sprintf('Mise à jour de %s dans le fichier de configuration %s impossible',
+                               $key,
+                               $file_path)
                        . "\n"
                        . $this->_('Le fichier n\'existe pas')
                        . "\n");
diff --git a/library/Class/Migration/UpdateDatabaseAfterSelectDb.php b/library/Class/Migration/UpdateDatabaseAfterSelectDb.php
index a38e6858b86..8c91da1def8 100644
--- a/library/Class/Migration/UpdateDatabaseAfterSelectDb.php
+++ b/library/Class/Migration/UpdateDatabaseAfterSelectDb.php
@@ -22,10 +22,9 @@
 
 class Class_Migration_UpdateDatabaseAfterSelectDb {
 
-  use
-    Trait_EchoError,
-    Trait_Translator;
+  use Trait_EchoError;
 
+  protected $_adapter;
 
   public function run() {
     //reload config files
@@ -33,11 +32,12 @@ class Class_Migration_UpdateDatabaseAfterSelectDb {
       ->warmUpFiles()
       ->warmUpDB();
 
-    $this->echoStartTitle($this->_('Début de l\'étape de mise à jour des variables dans la base de donnée : %s',
-                                   array_at('dbname',
-                                            Zend_Db_Table::getDefaultAdapter()->getConfig())));
+    $this->_adapter = Zend_Db_Table::getDefaultAdapter();
 
-    $this->echoError($this->_('Mise à jour des variables de Cosmogramme') . "\n");
+    $this->echoStartTitle(sprintf('Début de l\'étape de mise à jour des variables dans la base de donnée : %s',
+                                  array_at('dbname', $this->_adapter->getConfig())));
+
+    $this->echoError('Mise à jour des variables de Cosmogramme' . "\n");
 
     Class_CosmoVar::setValueOf('cache_path', './cosmogramme/fichiers/cache/');
     Class_CosmoVar::setValueOf('log_path', './cosmogramme/fichiers/log/');
@@ -49,20 +49,19 @@ class Class_Migration_UpdateDatabaseAfterSelectDb {
 
     $this->echoOK();
 
-    $this->echoError($this->_('Mise à jour des variables d\'administration') . "\n");
+    $this->echoError('Mise à jour des variables d\'administration' . "\n");
 
-    Class_AdminVar::set('ENABLE_COLLABORATIVE_BROWSING', '0');
-    Class_AdminVar::set('STATUS_REPORT_PUSH_URL', 'no');
-    Class_AdminVar::set('FORCE_HTTPS', '0');
+    $this->adminVar('ENABLE_COLLABORATIVE_BROWSING', '0')
+         ->adminVar('STATUS_REPORT_PUSH_URL', 'no')
+         ->adminVar('FORCE_HTTPS', '0');
 
     $this->echoOK();
 
     try {
-      $this->echoError($this->_('Mise à jour du mysql.proc.') . "\n");
-      Zend_Db_Table::getDefaultAdapter()
-        ->query("update mysql.proc set definer='root@localhost'");
+      $this->echoError('Mise à jour du mysql.proc.' . "\n");
+      $this->_adapter->query("update mysql.proc set definer='root@localhost'");
     } catch (Exception $e) {
-      $this->echoError($this->_('Échec de la mise à jour du mysql.proc') . "\n"
+      $this->echoError('Échec de la mise à jour du mysql.proc' . "\n"
                        . $e->getMessage()
                        . "/n");
     }
@@ -70,17 +69,22 @@ class Class_Migration_UpdateDatabaseAfterSelectDb {
     $this->echoOK();
 
     try {
-      $this->echoError($this->_('Suppression du trigger datemaj_notices_update') . "\n");
-      Zend_Db_Table::getDefaultAdapter()
-        ->query("drop trigger datemaj_notices_update;");
+      $this->echoError('Suppression du trigger datemaj_notices_update' . "\n");
+      $this->_adapter->query("drop trigger datemaj_notices_update;");
     } catch (Exception $e) {
       $this->echoError($e->getMessage() . "\n");
     }
 
     $this->echoOK();
 
-    $this->echoEndTitle($this->_('Fin de l\'étape de mise à jour des variables'));
+    $this->echoEndTitle('Fin de l\'étape de mise à jour des variables');
+
+    return $this;
+  }
+
 
+  protected function adminVar(string $key, string $value) : self {
+    $this->_adapter->query('replace into bib_admin_var (clef, valeur) values ("' . $key . '", "' . $value . '")');
     return $this;
   }
 }
diff --git a/scripts/select_db.php b/scripts/select_db.php
index c576cfc081a..612e4b1982d 100644
--- a/scripts/select_db.php
+++ b/scripts/select_db.php
@@ -4,11 +4,10 @@ if ( ! isset($argv[1]))
 
 $database_name = $argv[1];
 
-require('includes.php');
-
-Bokeh_Engine::getInstance()->warmUp();
+require 'includes.php';
 
+Bokeh_Engine::getInstance()->warmUpFiles();
 (new Class_Migration_UpdateConfig)->run($database_name);
 (new Class_Migration_UpdateDatabaseAfterSelectDb)->run();
 
-include('./scripts/upgrade_db.php');
+include './scripts/upgrade_db.php';
diff --git a/scripts/upgrade_db.php b/scripts/upgrade_db.php
index e6822cde512..d62fac21bac 100644
--- a/scripts/upgrade_db.php
+++ b/scripts/upgrade_db.php
@@ -15,4 +15,3 @@ $force = $argc>1 && $argv[1]=='--force';
 
 (new Class_Migration_ScriptPatchs())->run($force);
 (new Class_Template_Update)->run();
-?>
\ No newline at end of file
-- 
GitLab