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.
This commit is contained in:
Dasc3er 2020-09-19 11:08:13 +02:00
parent 39988c7d35
commit 8bf2739b12
1 changed files with 44 additions and 21 deletions

View File

@ -24,39 +24,59 @@ ignore_user_abort(true);
$skip_permissions = true; $skip_permissions = true;
include_once __DIR__.'/../../core.php'; 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 $file = null; // File di backup del database
// Ricerca dell'ultimo backup (idealmente versione 2.4.16) // Ricerca dell'ultimo backup (idealmente versione 2.4.16)
if (empty($file) && empty($last_backup)) { if (empty($file) && empty($backup)) {
$backups = Backup::getList(); $backups = Backup::getList();
$last_backup = end($backups);
} }
if (empty($file)) { if (empty($file)) {
// Individuazione del database nel backup $count = count($backups);
if (ends_with($last_backup, '.zip')) { for ($i = 0; $i < $count; ++$i) {
$zip = new ZipArchive(); $backup = $backups[$i];
$zip->open($last_backup);
$contents = $zip->getFromName('database.sql'); // Individuazione del database nel backup
if (ends_with($backup, '.zip')) {
$zip = new ZipArchive();
$zip->open($backup);
// File temporaneo $version = $zip->getFromName('VERSION');
$file = DIRECTORY_SEPARATOR. if ($version == '2.4.17') {
trim(sys_get_temp_dir(), DIRECTORY_SEPARATOR). continue;
DIRECTORY_SEPARATOR. }
ltrim('database.sql', DIRECTORY_SEPARATOR);
file_put_contents($file, $contents); $contents = $zip->getFromName('database.sql');
register_shutdown_function(function () use ($file) { // File temporaneo
unlink($file); $file = DIRECTORY_SEPARATOR.
}); trim(sys_get_temp_dir(), DIRECTORY_SEPARATOR).
} else { DIRECTORY_SEPARATOR.
$file = $last_backup.'/database.sql'; 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 // Lettura delle query
$queries = readSQLFile($file, ';'); $queries = readSQLFile($file, ';');
$count = count($queries); $count = count($queries);
@ -79,7 +99,7 @@ if (empty($query)) {
$values = explode('VALUES', $query, 2)[1]; $values = explode('VALUES', $query, 2)[1];
$values = explode('),', $values); $values = explode('),', $values);
// Generazione delle query per il recupero delle date // Generazione delle query per il recupero delle date per la Prima Nota
$results = []; $results = [];
foreach ($values as $row) { foreach ($values as $row) {
$row = substr(trim($row), 1); $row = substr(trim($row), 1);
@ -87,8 +107,11 @@ foreach ($values as $row) {
$campi = explode(',', $row); $campi = explode(',', $row);
$id = $campi[0]; $id = $campi[0];
$data = $campi[2]; $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); echo implode("\n", $results);