1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-10 22:53:52 +01:00

Aggiornamento dell'aggiornamento

This commit is contained in:
Thomas Zilio 2018-07-04 17:15:14 +02:00
parent 475b3af96c
commit ebfa9a743b
4 changed files with 80 additions and 103 deletions

View File

@ -85,6 +85,12 @@ if (filter('action') == 'do_update') {
<a class="btn btn-success btn-block" href="'.ROOTDIR.'"> <a class="btn btn-success btn-block" href="'.ROOTDIR.'">
<i class="fa fa-check"></i> '.tr('Continua').' <i class="fa fa-check"></i> '.tr('Continua').'
</a>'; </a>';
} else {
// Rimostro la finestra di login
echo '
<script>
$(".login-box").fadeIn();
</script>';
} }
} }

View File

@ -39,51 +39,22 @@ if (get_var('Attiva aggiornamenti')) {
} }
echo ' echo '
<div class="row">'; <div class="box box-success">
// Aggiornamento
echo '
<div class="col-md-6">
<div class="box box-success">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title">'.tr('Carica un aggiornamento').'</h3> <h3 class="box-title">'.tr('Carica un aggiornamento').' <span class="tip" title="'.tr('Form di caricamento per aggiornamenti del gestionale e innesti di moduli e plugin').'"><i class="fa fa-question-circle-o"></i></span></h3>
</div> </div>
<div class="box-body"> <div class="box-body">
<form action="'.ROOTDIR.'/controller.php?id_module='.$id_module.'" method="post" enctype="multipart/form-data" class="form-inline" id="update"> <form action="'.ROOTDIR.'/controller.php?id_module='.$id_module.'" method="post" enctype="multipart/form-data" class="form-inline" id="update">
<input type="hidden" name="op" value="upload"> <input type="hidden" name="op" value="upload">
<input type="hidden" name="type" value="update">
<label><input type="file" name="blob"></label> <label><input type="file" name="blob"></label>
<button type="button" class="btn btn-primary" onclick="if( confirm(\''.tr('Avviare la procedura?').'\') ){ $(\'#update\').submit(); }"> <button type="button" class="btn btn-primary pull-right" onclick="if( confirm(\''.tr('Avviare la procedura?').'\') ){ $(\'#update\').submit(); }">
<i class="fa fa-upload"></i> '.tr('Carica').'... <i class="fa fa-upload"></i> '.tr('Carica').'...
</button> </button>
</form> </form>
</div> </div>
</div> </div>';
</div>';
// Nuovo modulo
echo '
<div class="col-md-6">
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Carica un nuovo modulo').'</h3>
</div>
<div class="box-body">
<form action="'.ROOTDIR.'/controller.php?id_module='.$id_module.'" method="post" enctype="multipart/form-data" class="form-inline" id="module">
<input type="hidden" name="op" value="upload">
<input type="hidden" name="type" value="new">
<label><input type="file" name="blob"></label>
<button type="button" class="btn btn-primary" onclick="if( confirm(\''.tr('Avviare la procedura?').'\') ){ $(\'#module\').submit(); }">
<i class="fa fa-upload"></i> '.tr('Carica').'...
</button>
</form>
</div>
</div>
</div>';
echo '
</div>';
} }
// Elenco moduli installati // Elenco moduli installati

View File

@ -20,6 +20,7 @@ $type = $_POST['type'];
// Lettura dell'archivio // Lettura dell'archivio
$zip = new ZipArchive(); $zip = new ZipArchive();
if (!$zip->open($file['tmp_name'])) { if (!$zip->open($file['tmp_name'])) {
$_SESSION['errors'][] = tr('File di installazione non valido!');
$_SESSION['errors'][] = checkZip($file['tmp_name']); $_SESSION['errors'][] = checkZip($file['tmp_name']);
return; return;
@ -42,50 +43,48 @@ if (file_exists($extraction_dir.'/VERSION')) {
// Ripristina il file di configurazione dell'installazione // Ripristina il file di configurazione dell'installazione
file_put_contents($docroot.'/config.inc.php', $config); file_put_contents($docroot.'/config.inc.php', $config);
} } else {
$finder = Symfony\Component\Finder\Finder::create()
->files()
->ignoreDotFiles(true)
->ignoreVCS(true)
->in($extraction_dir);
// Installazione/aggiornamento di un modulo $files = $finder->name('MODULE')->name('PLUGIN');
elseif (file_exists($extraction_dir.'/MODULE')) {
// Leggo le info dal file di configurazione del modulo
$info = Util\Ini::readFile($extraction_dir.'/MODULE');
// Copio i file nella cartella "modules/<directory>/" foreach ($files as $file) {
copyr($extraction_dir, $docroot.'/modules/'.$info['directory']); // Informazioni dal file di configurazione
$info = Util\Ini::readFile($file->getRealPath());
// Informazioni aggiuntive per il database
$insert = [];
// Modulo
if (basename($file->getRealPath()) == 'MODULE') {
$directory = 'modules';
$table = 'zz_modules';
// Verifico se il modulo non esista già
$installed = Modules::get($info['name']); $installed = Modules::get($info['name']);
if (empty($installed)) { $insert['parent'] = Modules::get($info['parent']);
$info['parent'] = Modules::get($info['parent']) ? $info['parent'] : null;
$dbo->insert('zz_modules', [
'name' => $info['name'],
'title' => !empty($info['title']) ? $info['title'] : $info['name'],
'directory' => $info['directory'],
'options' => $info['options'],
'version' => $info['version'],
'compatibility' => $info['compatibility'],
'order' => 100,
'parent' => $info['parent'],
'default' => 0,
'enabled' => 1,
]);
} }
}
// Installazione/aggiornamento di un plugin // Plugin
elseif (file_exists($extraction_dir.'/PLUGIN')) { elseif (basename($file->getRealPath()) == 'PLUGIN') {
// Leggo le info dal file di configurazione del modulo $directory = 'plugins';
$info = Util\Ini::readFile($extraction_dir.'/PLUGIN'); $table = 'zz_plugins';
// Copio i file nella cartella "modules/<directory>/"
copyr($extraction_dir, $docroot.'/plugins/'.$info['directory']);
// Verifico se il modulo non esista già
$installed = Plugins::get($info['name']); $installed = Plugins::get($info['name']);
if (empty($installed)) { $insert['idmodule_from'] = Modules::get($info['module_from'])['id'];
$info['parent'] = Plugins::get($info['parent']) ? $info['parent'] : null; $insert['idmodule_to'] = Modules::get($info['module_to'])['id'];
$insert['position'] = $info['position'];
}
$dbo->insert('zz_plugins', [ // Copia dei file nella cartella relativa
copyr(dirname($file->getRealPath()), $docroot.'/'.$directory.'/'.$info['directory']);
// Eventuale registrazione nel database
if (empty($installed)) {
$dbo->insert($table, array_merge($insert, [
'name' => $info['name'], 'name' => $info['name'],
'title' => !empty($info['title']) ? $info['title'] : $info['name'], 'title' => !empty($info['title']) ? $info['title'] : $info['name'],
'directory' => $info['directory'], 'directory' => $info['directory'],
@ -93,19 +92,20 @@ elseif (file_exists($extraction_dir.'/PLUGIN')) {
'version' => $info['version'], 'version' => $info['version'],
'compatibility' => $info['compatibility'], 'compatibility' => $info['compatibility'],
'order' => 100, 'order' => 100,
'parent' => $info['parent'],
'default' => 0, 'default' => 0,
'enabled' => 1, 'enabled' => 1,
]); ]));
$_SESSION['errors'][] = tr('Installazione completata!');
} else {
$_SESSION['errors'][] = tr('Aggiornamento completato!');
}
} }
} }
// File di installazione non valido // Rimozione delle risorse inutilizzate
else {
$_SESSION['errors'][] = tr('File di installazione non valido!');
}
delete($extraction_dir); delete($extraction_dir);
redirect($rootdir);
$zip->close(); $zip->close();
// Redirect
redirect(ROOTDIR.'/editor.php?id_module='.$id_module);