From 453b3603ccaf59bd248e5633a4e52eee89040430 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Mon, 15 Jan 2024 14:52:26 +0100 Subject: [PATCH] Aggiunta controllo su impostazioni --- .gitignore | 1 + gulpfile.js | 9 ++++++ include/init/requirements.php | 1 + modules/aggiornamenti/database.php | 44 ++++++++++++++++++++++++++---- src/Update.php | 15 +++++++--- update/settings.php | 11 ++++++++ 6 files changed, 71 insertions(+), 10 deletions(-) create mode 100644 update/settings.php diff --git a/.gitignore b/.gitignore index df892f4d5..b334e6f6a 100755 --- a/.gitignore +++ b/.gitignore @@ -93,6 +93,7 @@ manifest.json checksum.json database.json database_5_7.json +settings.json /tests/_log/* /tests/_temp/* diff --git a/gulpfile.js b/gulpfile.js index 09d21826c..2ebbae335 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -473,6 +473,7 @@ function release(done) { '!checksum.json', '!database.json', '!database_5_7.json', + '!settings.json', '!manifest.json', '!.idea/**', '!.git/**', @@ -487,6 +488,7 @@ function release(done) { '!config.inc.php', '!psalm.xml', '!update/structure.php', + '!update/settings.php', '!**/*.(lock|phar|log|zip|bak|jar|txt)', '!**/~*', '!vendor/tecnickcom/tcpdf/examples/**', @@ -535,6 +537,13 @@ function release(done) { name: 'database.json' }); + // Aggiunta del file per il controllo delle impostazioni + archive.append(shell.exec('php update/settings.php', { + silent: true + }).stdout, { + name: 'settings.json' + }); + // Aggiunta del commit corrente nel file REVISION archive.append(shell.exec('git rev-parse --short HEAD', { silent: true diff --git a/include/init/requirements.php b/include/init/requirements.php index d7cc382bf..88ff728ee 100755 --- a/include/init/requirements.php +++ b/include/init/requirements.php @@ -304,6 +304,7 @@ $files_to_check = [ 'manifest.json' => tr('Necessario per l\'aggiunta a schermata home da terminale (creato al termine della configurazione)'), 'database_5_7.json' => tr('Necessario per il controllo integrità con database MySQL 5.7.x'), 'database.json' => tr('Necessario per il controllo integrità con database MySQL 8.0.x'), + 'settings.json' => tr('Necessario per il controllo integrità impostazioni del database'), 'checksum.json' => tr('Necessario per il controllo integrità dei files del gestionale'), ]; diff --git a/modules/aggiornamenti/database.php b/modules/aggiornamenti/database.php index 266efe096..89da0a2e4 100644 --- a/modules/aggiornamenti/database.php +++ b/modules/aggiornamenti/database.php @@ -94,8 +94,14 @@ if (empty($data)) { $info = Update::getDatabaseStructure(); $results = integrity_diff($data, $info); +$contents = file_get_contents(base_dir().'/settings.json'); +$data = json_decode($contents, true); + +$settings = Update::getSettings(); +$results_settings = array_diff($data, $settings); + // Schermata di visualizzazione degli errori -if (!empty($results)) { +if (!empty($results) || !empty($results_settings)) { echo '

'.tr("Segue l'elenco delle tabelle del database che presentano una struttura diversa rispetto a quella prevista nella versione ufficiale del gestionale").'.

@@ -185,11 +191,37 @@ if (!empty($results)) { echo ' '; - } + } } -} else { - echo ' + if (!empty($results_settings)) { + echo' + + +

Impostazioni mancanti

+ + + + + + '; + foreach ($results_settings as $key => $setting) { + echo' + + + + '; + } + echo ' + +
'.tr('Nome').''.tr('Tipo').'
+ '.$key.' + + '.$setting.' +
'; + } +} else{ +echo '
- '.tr('Il database non presenta problemi di integrità').'. + '.tr('Il database non presenta problemi di integrità').'.
'; -} +} \ No newline at end of file diff --git a/src/Update.php b/src/Update.php index 6545fa941..d8c6fde27 100755 --- a/src/Update.php +++ b/src/Update.php @@ -208,7 +208,7 @@ class Update self::normalizeDatabase($database->getDatabaseName()); if (class_exists('\Models\Cache')) { - \Models\Cache::pool('Ultima versione di OpenSTAManager disponibile')->set(null); + Models\Cache::pool('Ultima versione di OpenSTAManager disponibile')->set(null); } // Correzione permessi per le cartelle backup e files @@ -259,7 +259,7 @@ class Update for ($i = $start; $i < $end; ++$i) { try { $database->query($queries[$i]); - } catch (\Exception $e) { + } catch (Exception $e) { throw new PDOException(tr('Aggiornamento fallito').': '.$queries[$i]); } @@ -343,9 +343,9 @@ class Update self::normalizeDatabase($database->getDatabaseName()); return true; - } catch (\Exception $e) { + } catch (Exception $e) { $logger = logger(); - $logger->addRecord(\Monolog\Logger::EMERGENCY, $e->getMessage()); + $logger->addRecord(Monolog\Logger::EMERGENCY, $e->getMessage()); } return false; @@ -419,6 +419,13 @@ class Update return $info; } + public static function getSettings() + { + $settings = database()->table('zz_settings')->pluck('tipo', 'nome')->toArray(); + + return $settings; + } + /** * Controlla la presenza di aggiornamenti e prepara il database per la procedura. */ diff --git a/update/settings.php b/update/settings.php new file mode 100644 index 000000000..354ab7560 --- /dev/null +++ b/update/settings.php @@ -0,0 +1,11 @@ +