1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-23 05:54:03 +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.'">
<i class="fa fa-check"></i> '.tr('Continua').'
</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 '
<div class="row">';
// Aggiornamento
echo '
<div class="col-md-6">
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Carica un aggiornamento').'</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="update">
<input type="hidden" name="op" value="upload">
<input type="hidden" name="type" value="update">
<div class="box box-success">
<div class="box-header with-border">
<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 class="box-body">
<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">
<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(); }">
<i class="fa fa-upload"></i> '.tr('Carica').'...
</button>
</form>
</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>';
<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').'...
</button>
</form>
</div>
</div>';
}
// Elenco moduli installati

View File

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