mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-22 21:28:08 +01:00
Aggiunto ripristino da backup
This commit is contained in:
parent
1e3c4bf5ae
commit
d8c6f731ce
2
.gitignore
vendored
2
.gitignore
vendored
@ -81,7 +81,9 @@ files/*
|
||||
!files/my_impianti/
|
||||
files/my_impianti/*
|
||||
!files/my_impianti/componente.ini
|
||||
tmp/
|
||||
config.inc.php
|
||||
database.sql
|
||||
REVISION
|
||||
.php_cs.cache
|
||||
|
||||
|
@ -32,6 +32,7 @@ directory($extraction_dir);
|
||||
|
||||
// Estrazione dell'archivio
|
||||
$zip->extractTo($extraction_dir);
|
||||
$zip->close();
|
||||
|
||||
// Aggiornamento del progetto
|
||||
if (file_exists($extraction_dir.'/VERSION')) {
|
||||
@ -105,7 +106,6 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
|
||||
// Rimozione delle risorse inutilizzate
|
||||
delete($extraction_dir);
|
||||
$zip->close();
|
||||
|
||||
// Redirect
|
||||
redirect(ROOTDIR.'/editor.php?id_module='.$id_module);
|
||||
|
@ -36,3 +36,64 @@ switch (filter('op')) {
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (filter('op') == 'restore') {
|
||||
if (!extension_loaded('zip')) {
|
||||
flash()->error(tr('Estensione zip non supportata!').'<br>'.tr('Verifica e attivala sul tuo file _FILE_', [
|
||||
'_FILE_' => '<b>php.ini</b>',
|
||||
]));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (post('folder') == null) {
|
||||
$file = $_FILES['blob']['tmp_name'] ?: post('zip');
|
||||
|
||||
// Lettura dell'archivio
|
||||
$zip = new ZipArchive();
|
||||
if (!$zip->open($file)) {
|
||||
flash()->error(tr('File di installazione non valido!'));
|
||||
flash()->error(checkZip($file));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Percorso di estrazione
|
||||
$extraction_dir = $docroot.'/tmp';
|
||||
directory($extraction_dir);
|
||||
|
||||
// Estrazione dell'archivio
|
||||
$zip->extractTo($extraction_dir);
|
||||
$zip->close();
|
||||
} else {
|
||||
$extraction_dir = $backup_dir.'/'.post('folder');
|
||||
}
|
||||
|
||||
// Rimozione del database
|
||||
$tables = include $docroot.'/update/tables.php';
|
||||
|
||||
$database->query('SET foreign_key_checks = 0');
|
||||
foreach ($tables as $tables) {
|
||||
$database->query('DROP TABLE `'.$tables.'`');
|
||||
}
|
||||
$database->query('DROP TABLE `updates`');
|
||||
|
||||
// Ripristino del database
|
||||
$database->multiQuery($extraction_dir.'/database.sql');
|
||||
$database->query('SET foreign_key_checks = 1');
|
||||
|
||||
// Salva il file di configurazione
|
||||
$config = file_get_contents($docroot.'/config.inc.php');
|
||||
|
||||
// Copia i file dalla cartella temporanea alla root
|
||||
copyr($extraction_dir, $docroot);
|
||||
|
||||
// Ripristina il file di configurazione dell'installazione
|
||||
file_put_contents($docroot.'/config.inc.php', $config);
|
||||
|
||||
// Pulizia
|
||||
if (post('folder') == null) {
|
||||
delete($extraction_dir);
|
||||
}
|
||||
delete($docroot.'/database.sql');
|
||||
}
|
||||
|
@ -27,33 +27,48 @@ if (!is_writable($backup_dir)) {
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<div class="callout callout-success">
|
||||
<p>';
|
||||
|
||||
if (!empty($backup_dir)) {
|
||||
echo tr('Il percorso di backup è attualmente in').': <b>'.slashes($backup_dir).'</b>';
|
||||
$message = tr('Il percorso di backup è attualmente in').': <b>'.slashes($backup_dir).'</b>';
|
||||
} else {
|
||||
echo tr('Sembra che tu non abbia ancora specificato un percorso per il backup').'.';
|
||||
$message = tr('Sembra che tu non abbia ancora specificato un percorso per il backup').'.';
|
||||
}
|
||||
|
||||
echo '
|
||||
</p>
|
||||
<p><small>'.tr('Puoi modificare il percorso di backup dal tuo file _FILE_', [
|
||||
'_FILE_' => '<b>config.inc.php</b>',
|
||||
]).'</small></p>';
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="callout callout-success">
|
||||
<p>'.$message.'</p>
|
||||
<p><small>'.tr('Puoi modificare il percorso di backup dal tuo file _FILE_', [
|
||||
'_FILE_' => '<b>config.inc.php</b>',
|
||||
]).'</small></p>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Ripristino backup
|
||||
echo '
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="box box-success">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">
|
||||
'.tr('Ripristina backup').'
|
||||
</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<form action="" method="post" enctype="multipart/form-data" id="restore">
|
||||
<input type="hidden" name="op" value="restore">
|
||||
|
||||
<!-- PULSANTI -->
|
||||
<!--div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="button" class="btn btn-primary pull-right" onclick="continue_backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button>
|
||||
<label><input type="file" name="blob"></label>
|
||||
|
||||
<button type="button" class="btn btn-primary pull-right" onclick="if( confirm(\''.tr('Avviare la procedura?').'\') ){ $(\'#restore\').submit(); }">
|
||||
<i class="fa fa-upload"></i> '.tr('Ripristina').'...
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div-->';
|
||||
</div>';
|
||||
|
||||
//Lettura file di backup
|
||||
// Lettura file di backup
|
||||
if (file_exists($backup_dir)) {
|
||||
$backups_zip = [];
|
||||
$backups_file = [];
|
||||
@ -100,9 +115,15 @@ if (file_exists($backup_dir)) {
|
||||
|
||||
<a class="btn btn-primary" href="'.$rootdir.'/modules/backup/actions.php?op=getfile&file='.$name.'" target="_blank"><i class="fa fa-download"></i> '.tr('Scarica').'</a>
|
||||
|
||||
<a class="btn btn-danger ask pull-right" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-warning ask" data-backto="record-edit" data-method="post" data-op="restore" data-zip="'.$name.'" data-msg="'.tr('Vuoi ripristinare questo backup?').'" data-button="Ripristina" data-class="btn btn-lg btn-warning">
|
||||
<i class="fa fa-upload"></i>
|
||||
</a>
|
||||
|
||||
<a class="btn btn-danger ask" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
} else {
|
||||
@ -140,9 +161,15 @@ if (file_exists($backup_dir)) {
|
||||
|
||||
<a class="btn btn-sm btn-warning disabled" href="javascript:;"><i class="fa fa-times"></i> '.tr('Non scaricabile').'</a>
|
||||
|
||||
<a class="btn btn-danger ask pull-right" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-warning ask" data-backto="record-edit" data-method="post" data-op="restore" data-folder="'.$name.'" data-msg="'.tr('Vuoi ripristinare questo backup?').'" data-button="Ripristina" data-class="btn btn-lg btn-warning">
|
||||
<i class="fa fa-upload"></i>
|
||||
</a>
|
||||
|
||||
<a class="btn btn-danger ask" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
} else {
|
||||
@ -162,8 +189,11 @@ if (file_exists($backup_dir)) {
|
||||
}
|
||||
|
||||
if (!empty($backup_dir)) {
|
||||
// Creazione backup
|
||||
echo '
|
||||
<button type="button" class="btn btn-primary pull-right" onclick="continue_backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button><div class="clearfix"></div>
|
||||
<button type="button" class="btn btn-primary pull-right" onclick="continue_backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<script>
|
||||
function continue_backup(){
|
||||
|
@ -295,7 +295,7 @@ $orario_fine = $data.' '.$orario_fine;
|
||||
}
|
||||
//Quando modifico orario inizio, allineo anche l'orario fine
|
||||
$("#orario_inizio").on("dp.change", function (e) {
|
||||
$("#orario_fine").data("DateTimePicker").minDate(e.date).format('HH:mm');
|
||||
$("#orario_fine").data("DateTimePicker").minDate(e.date).format(globals.timestampFormat);
|
||||
});
|
||||
|
||||
// Refresh modulo dopo la chiusura di una pianificazione attività derivante dalle attività
|
||||
|
Loading…
Reference in New Issue
Block a user