Procedura di aggiornamento
This commit is contained in:
parent
f533383a02
commit
475b3af96c
|
@ -221,13 +221,13 @@ $dbo->query("DROP TABLE `tabella`");
|
|||
Il file `MODULE` è infine il diretto responsabile dell'installazione del modulo poiché definisce tutti i valori caratteristici dello stesso; in caso di sua assenza la cartella compressa viene considerata non corretta.
|
||||
|
||||
```ini
|
||||
module_name = "Nome del modulo"
|
||||
module_version = "Versione del modulo"
|
||||
module_directory = "Cartella di installazione del modulo"
|
||||
module_options = "Operazione da eseguire all'apertura del modulo"
|
||||
module_icon = "Icona del modulo (Font-Awesome)"
|
||||
module_compatibility = "Compatibilità del modulo"
|
||||
module_parent = "Genitore del modulo"
|
||||
name = "Nome del modulo"
|
||||
version = "Versione del modulo"
|
||||
directory = "Cartella di installazione del modulo"
|
||||
options = "Operazione da eseguire all'apertura del modulo"
|
||||
icon = "Icona del modulo (Font-Awesome)"
|
||||
compatibility = "Compatibilità del modulo"
|
||||
parent = "Genitore del modulo"
|
||||
```
|
||||
|
||||
## Moduli di base
|
||||
|
|
|
@ -6,113 +6,106 @@ if (!get_var('Attiva aggiornamenti')) {
|
|||
die(tr('Accesso negato'));
|
||||
}
|
||||
|
||||
$tmp = $_FILES['blob']['tmp_name'];
|
||||
$filename = $_FILES['blob']['name'];
|
||||
$filetype = $_FILES['blob']['type'];
|
||||
$size = $_FILES['blob']['size'];
|
||||
$type = $_POST['type'];
|
||||
|
||||
if (!extension_loaded('zip')) {
|
||||
$_SESSION['errors'][] = tr('Estensione zip non supportata!').'<br>'.tr('Verifica e attivala sul tuo file _FILE_', [
|
||||
'_FILE_' => '<b>php.ini</b>',
|
||||
]);
|
||||
} elseif (!ends_with($filename, '.zip')) {
|
||||
$_SESSION['errors'][] = tr('Il file non è un archivio zip!');
|
||||
} elseif (!empty($tmp) && is_file($tmp)) {
|
||||
$zip = new ZipArchive();
|
||||
|
||||
if ($zip->open($tmp)) {
|
||||
$tmp_dir = $docroot.'/tmp';
|
||||
|
||||
// Controllo sulla cartella
|
||||
directory($tmp_dir);
|
||||
|
||||
$zip->extractTo($tmp_dir);
|
||||
|
||||
// AGGIORNAMENTO
|
||||
if ('update' == $type) {
|
||||
// Salvo i file di configurazione e versione attuale
|
||||
$old_config = file_get_contents($docroot.'/config.inc.php');
|
||||
|
||||
// Aggiornamento del CORE
|
||||
if (file_exists($tmp_dir.'/VERSION')) {
|
||||
//rename($docroot.'/VERSION', $docroot.'/VERSION.old');
|
||||
|
||||
// Copia i file dalla cartella temporanea alla root
|
||||
copyr($tmp_dir, $docroot);
|
||||
|
||||
// Scollego l'utente per eventuali aggiornamenti del db
|
||||
Auth::logout();
|
||||
}
|
||||
|
||||
// Aggiornamento di un MODULO
|
||||
elseif (file_exists($tmp_dir.'/MODULE')) {
|
||||
$module_info = parse_ini_file($tmp_dir.'/MODULE', true);
|
||||
$module_name = $module_info['module_name'];
|
||||
$module_dir = $module_info['module_directory'];
|
||||
|
||||
// Copio i file nella cartella "modules/<nomemodulo>/"
|
||||
copyr($tmp_dir, $docroot.'/modules/'.$module_dir.'/');
|
||||
|
||||
// Rinomino il file di versione per forzare l'aggiornamento
|
||||
//rename($docroot.'/VERSION_'.$module, $docroot.'/VERSION_'.$module.'.old');
|
||||
|
||||
// Scollego l'utente per eventuali aggiornamenti del db
|
||||
Auth::logout();
|
||||
} else {
|
||||
$_SESSION['errors'][] = tr('File di aggiornamento non riconosciuto!');
|
||||
}
|
||||
|
||||
// Ripristino il file di configurazione dell'utente
|
||||
file_put_contents($docroot.'/config.inc.php', $old_config);
|
||||
}
|
||||
|
||||
// NUOVO MODULO
|
||||
elseif ('new' == $type) {
|
||||
// Se non c'è il file MODULE non é un modulo
|
||||
if (is_file($tmp_dir.'/MODULE')) {
|
||||
// Leggo le info dal file di configurazione del modulo
|
||||
$module_info = parse_ini_file($tmp_dir.'/MODULE', true);
|
||||
$module_name = $module_info['module_name'];
|
||||
$module_version = $module_info['module_version'];
|
||||
$module_dir = $module_info['module_directory'];
|
||||
|
||||
// Copio i file nella cartella "modules/<nomemodulo>/"
|
||||
copyr($tmp_dir, $docroot.'/modules/'.$module_dir.'/');
|
||||
|
||||
// Scollego l'utente per eventuali aggiornamenti del db
|
||||
Auth::logout();
|
||||
|
||||
// Sposto i file della cartella "files/" nella root
|
||||
$files_dir = $docroot.'/modules/'.$module_dir.'/files/';
|
||||
if (is_dir($files_dir)) {
|
||||
copyr($files_dir, $docroot.'/files');
|
||||
delete($files_dir);
|
||||
}
|
||||
|
||||
// Inserimento delle voci del modulo nel db per ogni sezione [sezione]
|
||||
// Verifico che il modulo non esista già
|
||||
$n = $dbo->fetchNum('SELECT name FROM zz_modules WHERE name='.prepare($module_name));
|
||||
|
||||
if (0 == $n) {
|
||||
$module_info['module_parent'] = $dbo->fetchNum('SELECT name FROM zz_modules WHERE id='.prepare($module_info['module_parent'])) ? prepare($module_info['module_parent']) : 'NULL';
|
||||
|
||||
$query = 'INSERT INTO zz_modules(`name`, `title`, `directory`, `options`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES('.prepare($module_name).', '.prepare($module_name).', '.prepare($module_dir).', '.prepare($module_info['module_options']).', '.prepare($module_info['module_icon']).', '.prepare($module_version).', '.prepare($module_info['module_compatibility']).', "100", '.$module_info['module_parent'].', 0, 1)';
|
||||
$dbo->query($query);
|
||||
}
|
||||
}
|
||||
|
||||
// File zip non contiene il file MODULE
|
||||
else {
|
||||
$_SESSION['errors'][] = tr('File di installazione non valido!');
|
||||
}
|
||||
}
|
||||
|
||||
delete($tmp_dir);
|
||||
redirect($rootdir);
|
||||
} else {
|
||||
$_SESSION['errors'][] = checkZip($tmp);
|
||||
}
|
||||
|
||||
$zip->close();
|
||||
return;
|
||||
}
|
||||
|
||||
$file = $_FILES['blob'];
|
||||
$type = $_POST['type'];
|
||||
|
||||
// Lettura dell'archivio
|
||||
$zip = new ZipArchive();
|
||||
if (!$zip->open($file['tmp_name'])) {
|
||||
$_SESSION['errors'][] = checkZip($file['tmp_name']);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Percorso di estrazione
|
||||
$extraction_dir = $docroot.'/tmp';
|
||||
directory($extraction_dir);
|
||||
|
||||
// Estrazione dell'archivio
|
||||
$zip->extractTo($extraction_dir);
|
||||
|
||||
// Aggiornamento del progetto
|
||||
if (file_exists($extraction_dir.'/VERSION')) {
|
||||
// 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);
|
||||
}
|
||||
|
||||
// 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');
|
||||
|
||||
// Copio i file nella cartella "modules/<directory>/"
|
||||
copyr($extraction_dir, $docroot.'/modules/'.$info['directory']);
|
||||
|
||||
// Verifico se il modulo non esista già
|
||||
$installed = Modules::get($info['name']);
|
||||
if (empty($installed)) {
|
||||
$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
|
||||
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!');
|
||||
}
|
||||
|
||||
delete($extraction_dir);
|
||||
redirect($rootdir);
|
||||
|
||||
$zip->close();
|
||||
|
|
|
@ -16,14 +16,10 @@ $search_serial = get('search_serial');
|
|||
$search_altro = get('search_altro');
|
||||
|
||||
// Calcolo prossimo lotto e serial number
|
||||
$rs = $dbo->fetchArray('SELECT MAX(lotto) AS max_lotto, MAX(serial) AS max_serial, MAX(altro) AS max_altro FROM mg_prodotti WHERE id_articolo='.prepare($id_record));
|
||||
//$max_lotto = $rs[0]['max_lotto'];
|
||||
$max_serial = $rs[0]['max_serial'];
|
||||
//$max_altro = $rs[0]['max_altro'];
|
||||
$rs = $dbo->fetchArray('SELECT serial FROM mg_prodotti WHERE id_articolo='.prepare($id_record).' ORDER BY id DESC LIMIT 0,1');
|
||||
$max_serial = $rs[0]['serial'];
|
||||
|
||||
//$next_lotto = get_next_code($max_lotto);
|
||||
$next_serial = get_next_code($max_serial);
|
||||
//$next_altro = get_next_code($max_altro);
|
||||
|
||||
echo '
|
||||
<form action="" method="post" role="form">
|
||||
|
@ -38,90 +34,53 @@ echo '
|
|||
</div>
|
||||
</div>';
|
||||
|
||||
/*
|
||||
// Lotto
|
||||
echo '
|
||||
<div class="row form-group">
|
||||
<label class="col-md-2 control-label" for="lotto_start">'.tr('Lotto da').':</label>
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control input-md" name="lotto_start" onkeyup="$(\'input[name=lotto_end]\').val( $(\'input[name=lotto_start]\').val() ); $(\'#warn_lotto\').hide(); ricalcola_totale_prodotti();" value="'.$next_lotto.'">
|
||||
</div>
|
||||
|
||||
<label class="col-md-1 control-label text-center" for="lotto_end"> <i class="fa fa-arrow-circle-right fa-2x"></i> </label>
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control input-md" name="lotto_end" onkeyup="check_progressivo( $(\'input[name=lotto_start]\'), $(\'input[name=lotto_end]\'), $(\'#warn_lotto\'), $(\'#inserisci\') );" value="'.$next_lotto.'">
|
||||
</div>';
|
||||
if (!empty($max_lotto)) {
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
<p id="warn_lotto" class="text-danger"><b>'.tr('Ultimo lotto inserito').': </b> '.$max_lotto.'</p>
|
||||
</div>';
|
||||
}
|
||||
echo '
|
||||
</div>';
|
||||
*/
|
||||
// Serial
|
||||
echo '
|
||||
<div class="row form-group">
|
||||
<label class="col-md-2 control-label" for="serial_start">'.tr('Serial number da').':</label>
|
||||
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control input-md" name="serial_start" onkeyup="$(\'input[name=serial_end]\').val( $(\'input[name=serial_start]\').val() ); $(\'#warn_serial\').hide(); ricalcola_totale_prodotti();" value="'.$next_serial.'" />
|
||||
</div>
|
||||
|
||||
<label class="col-md-1 control-label text-center" for="serial_end"> <i class="fa fa-arrow-circle-right fa-2x"></i> </label>
|
||||
<label class="col-md-1 control-label text-center" for="serial_end">
|
||||
<i class="fa fa-arrow-circle-right fa-2x"></i>
|
||||
</label>
|
||||
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control input-md" name="serial_end" onkeyup="check_progressivo( $(\'input[name=serial_start]\'), $(\'input[name=serial_end]\'), $(\'#warn_serial\'), $(\'#inserisci\') );" value="'.$next_serial.'" />
|
||||
</div>';
|
||||
|
||||
if (!empty($max_serial)) {
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-5">
|
||||
<p id="warn_serial" class="text-danger"><b>'.tr('Ultimo serial number inserito').': </b> '.$max_serial.'</p>
|
||||
</div>';
|
||||
}
|
||||
echo '
|
||||
</div>';
|
||||
|
||||
/*
|
||||
// Altro
|
||||
echo '
|
||||
<div class="row form-group">
|
||||
<label class="col-md-2 control-label" for="altro_start">'.tr('Altro codice da').':</label>
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control input-md" name="altro_start" onkeyup="$(\'input[name=altro_end]\').val( $(\'input[name=altro_start]\').val() ); $(\'#warn_altro\').hide(); ricalcola_totale_prodotti();" value="'.$next_altro.'" />
|
||||
</div>
|
||||
|
||||
<label class="col-md-1 control-label text-center" for="altro_end"> <i class="fa fa-arrow-circle-right fa-2x"></i> </label>
|
||||
<div class="col-md-2">
|
||||
<input type="text" class="form-control input-md" name="altro_end" onkeyup="check_progressivo( $(\'input[name=altro_start]\'), $(\'input[name=altro_end]\'), $(\'#warn_altro\'), $(\'#inserisci\') );" value="'.$next_altro.'" />
|
||||
</div>';
|
||||
if (!empty($max_altro)) {
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
<p id="warn_altro" class="text-danger"><b>'.tr('Ultimo codice aggiuntivo inserito').': </b> '.$max_altro.'</p>
|
||||
</div>';
|
||||
}
|
||||
echo '
|
||||
</div>';
|
||||
*/
|
||||
|
||||
// Totale prodotti da inserire
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-danger text-center">'.tr('Totale prodotti da inserire').': <span id="totale_prodotti">0</span></p>
|
||||
<button type="submit" id="inserisci" class="btn btn-success" onclick="if( confirm(\'Confermi l\\\'inserimento di \' + globalsp.n_prodotti + \' prodotti?\') ){ $(\'#insert_form\').submit(); }"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>';
|
||||
<p class="text-danger">'.tr('Totale prodotti da inserire').': <span id="totale_prodotti">0</span></p>
|
||||
|
||||
<button type="submit" id="inserisci" class="btn btn-success pull-right" onclick="if( confirm(\'Confermi l\\\'inserimento di \' + globalsp.n_prodotti + \' prodotti?\') ){ $(\'#insert_form\').submit(); }"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>
|
||||
<div class="clearfix"></div>
|
||||
<div class="alert alert-info">';
|
||||
|
||||
// Visualizzo, in base alle impostazioni scelte, se il magazzino verrà movimentato
|
||||
if (get_var("Movimenta il magazzino durante l'inserimento o eliminazione dei lotti/serial number") == true) {
|
||||
if (get_var("Movimenta il magazzino durante l'inserimento o eliminazione dei lotti/serial number")) {
|
||||
echo '
|
||||
<small>'.tr("L'inserimento incrementerà la quantità dell'articolo!").'</small>';
|
||||
<small>'.tr("L'inserimento incrementerà la quantità dell'articolo!").'</small>';
|
||||
} else {
|
||||
echo '
|
||||
<small>'.tr("L'inserimento non movimenterà la quantità dell'articolo!").'</small>';
|
||||
<small>'.tr("L'inserimento non movimenterà la quantità dell'articolo!").'</small>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
Loading…
Reference in New Issue