From 8bf2739b12e82325d2f8b71562f2427d7f4d1f92 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Sat, 19 Sep 2020 11:08:13 +0200 Subject: [PATCH] Miglioramento script di recupero date Prima Nota Aggiunto controllo sulla versione del backup, con limitazione dell'aggiornamento per le righe di co_movimenti con flag primanota a 1. --- update/v2_4_17/recupero_date_movimenti.php | 65 +++++++++++++++------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/update/v2_4_17/recupero_date_movimenti.php b/update/v2_4_17/recupero_date_movimenti.php index 81c09b875..4f9024d7a 100644 --- a/update/v2_4_17/recupero_date_movimenti.php +++ b/update/v2_4_17/recupero_date_movimenti.php @@ -24,39 +24,59 @@ ignore_user_abort(true); $skip_permissions = true; include_once __DIR__.'/../../core.php'; -$last_backup = null; // Cartella di backup specifica +$backup = null; // Cartella di backup specifica $file = null; // File di backup del database // Ricerca dell'ultimo backup (idealmente versione 2.4.16) -if (empty($file) && empty($last_backup)) { +if (empty($file) && empty($backup)) { $backups = Backup::getList(); - $last_backup = end($backups); } if (empty($file)) { - // Individuazione del database nel backup - if (ends_with($last_backup, '.zip')) { - $zip = new ZipArchive(); - $zip->open($last_backup); + $count = count($backups); + for ($i = 0; $i < $count; ++$i) { + $backup = $backups[$i]; - $contents = $zip->getFromName('database.sql'); + // Individuazione del database nel backup + if (ends_with($backup, '.zip')) { + $zip = new ZipArchive(); + $zip->open($backup); - // File temporaneo - $file = DIRECTORY_SEPARATOR. - trim(sys_get_temp_dir(), DIRECTORY_SEPARATOR). - DIRECTORY_SEPARATOR. - ltrim('database.sql', DIRECTORY_SEPARATOR); + $version = $zip->getFromName('VERSION'); + if ($version == '2.4.17') { + continue; + } - file_put_contents($file, $contents); + $contents = $zip->getFromName('database.sql'); - register_shutdown_function(function () use ($file) { - unlink($file); - }); - } else { - $file = $last_backup.'/database.sql'; + // File temporaneo + $file = DIRECTORY_SEPARATOR. + trim(sys_get_temp_dir(), DIRECTORY_SEPARATOR). + DIRECTORY_SEPARATOR. + ltrim('database.sql', DIRECTORY_SEPARATOR); + + file_put_contents($file, $contents); + + register_shutdown_function(function () use ($file) { + unlink($file); + }); + } else { + $version = file_get_contents($backup.'/VERSION'); + if ($version == '2.4.17') { + continue; + } + + $file = $backup.'/database.sql'; + } } } +if (empty($file)) { + echo 'Impossibile procedere'; + + return; +} + // Lettura delle query $queries = readSQLFile($file, ';'); $count = count($queries); @@ -79,7 +99,7 @@ if (empty($query)) { $values = explode('VALUES', $query, 2)[1]; $values = explode('),', $values); -// Generazione delle query per il recupero delle date +// Generazione delle query per il recupero delle date per la Prima Nota $results = []; foreach ($values as $row) { $row = substr(trim($row), 1); @@ -87,8 +107,11 @@ foreach ($values as $row) { $campi = explode(',', $row); $id = $campi[0]; $data = $campi[2]; + $is_primanota = $campi[12]; - $results[] = 'UPDATE `co_movimenti` SET `data` = '.$data.' WHERE `id` = '.prepare($id).";"; + if (!empty($is_primanota)) { + $results[] = 'UPDATE `co_movimenti` SET `data` = '.$data.' WHERE `id` = '.prepare($id).';'; + } } echo implode("\n", $results);