This commit is contained in:
MatteoPistorello 2021-09-17 17:01:03 +02:00
commit 11919440cf
15 changed files with 124 additions and 30 deletions

View File

@ -20,8 +20,6 @@
namespace Modules\Aggiornamenti\Controlli; namespace Modules\Aggiornamenti\Controlli;
use Models\Module; use Models\Module;
use Modules\Fatture\Fattura;
use Util\XML;
class ColonneDuplicateViste extends Controllo class ColonneDuplicateViste extends Controllo
{ {

View File

@ -55,11 +55,17 @@ switch (filter('op')) {
break; break;
case 'backup': case 'backup':
if (Backup::create()) { try {
$result = Backup::create();
if ($result) {
flash()->info(tr('Nuovo backup creato correttamente!')); flash()->info(tr('Nuovo backup creato correttamente!'));
} else { } else {
flash()->error(tr('Errore durante la creazione del backup!').' '.str_replace('_DIR_', '"'.$backup_dir.'"', tr('Verifica che la cartella _DIR_ abbia i permessi di scrittura!'))); flash()->error(tr('Errore durante la creazione del backup!').' '.str_replace('_DIR_', '"'.$backup_dir.'"', tr('Verifica che la cartella _DIR_ abbia i permessi di scrittura!')));
} }
} catch (\Exception $e) {
flash()->error(tr('Errore durante la creazione del backup!').' '.$e->getMessage());
}
break; break;

View File

@ -80,7 +80,7 @@ function restore() {
} }
// Creazione backup // Creazione backup
function backup(){ function creaBackup(button){
swal({ swal({
title: "'.tr('Nuovo backup').'", title: "'.tr('Nuovo backup').'",
text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'", text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'",
@ -88,10 +88,32 @@ function backup(){
showCancelButton: true, showCancelButton: true,
confirmButtonClass: "btn btn-lg btn-success", confirmButtonClass: "btn btn-lg btn-success",
confirmButtonText: "'.tr('Crea').'", confirmButtonText: "'.tr('Crea').'",
}).then( }).then(function() {
function() { let restore = buttonLoading(button);
location.href = globals.rootdir + "/editor.php?id_module='.$id_module.'&op=backup"; $("#main_loading").show();
}, function() {});
$.ajax({
url: globals.rootdir + "/actions.php",
type: "GET",
data: {
id_module: globals.id_module,
op: "backup",
},
success: function(data) {
$("#main_loading").fadeOut();
buttonRestore(button, restore);
// Ricaricamento della pagina corrente
window.location.reload();
},
error: function() {
swal("'.tr('Errore').'", "'.tr('Errore durante la creazione del backup').'", "error");
renderMessages();
buttonRestore(button, restore);
}
});
}).catch(swal.noop);
} }
// Caricamento // Caricamento
@ -100,7 +122,7 @@ function loadSize(number, id){
$.ajax({ $.ajax({
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
type: "get", type: "GET",
data: { data: {
id_module: globals.id_module, id_module: globals.id_module,
op: "size", op: "size",
@ -294,7 +316,9 @@ if (file_exists($backup_dir)) {
// Creazione backup // Creazione backup
if (!empty($backup_dir)) { if (!empty($backup_dir)) {
echo ' echo '
<button type="button" class="btn btn-primary pull-right" onclick="backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button> <button type="button" class="btn btn-primary pull-right" onclick="creaBackup(this)">
<i class="fa fa-database"></i> '.tr('Crea backup').'...
</button>
<div class="clearfix"></div>'; <div class="clearfix"></div>';
} }

View File

@ -127,7 +127,7 @@ if (!empty($variables)) {
foreach ($variables as $variable => $value) { foreach ($variables as $variable => $value) {
echo ' echo '
<li><code>{'.$variable.'}</code></li>'; <li><code>'.$variable.'</code></li>';
} }
echo ' echo '

View File

@ -21,7 +21,6 @@ include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\DDT\DDT;
use Modules\Fatture\Components\Articolo; use Modules\Fatture\Components\Articolo;
use Modules\Fatture\Components\Descrizione; use Modules\Fatture\Components\Descrizione;
use Modules\Fatture\Components\Riga; use Modules\Fatture\Components\Riga;

View File

@ -464,7 +464,7 @@ class Fattura extends Document
$file = $this->uploads()->where('name', '=', 'Fattura Elettronica')->first(); $file = $this->uploads()->where('name', '=', 'Fattura Elettronica')->first();
if (empty($file)) { if (empty($file)) {
throw new InvalidArgumentException("Fattura Elettronica non trovata"); throw new InvalidArgumentException('Fattura Elettronica non trovata');
} }
return $file->getContent(); return $file->getContent();

View File

@ -110,7 +110,7 @@ if (!empty($variables)) {
foreach ($variables as $variable => $value) { foreach ($variables as $variable => $value) {
echo ' echo '
<li><code>{'.$variable.'}</code></li>'; <li><code>'.$variable.'</code></li>';
} }
echo ' echo '

View File

@ -95,7 +95,7 @@ class Intervento extends Resource implements UpdateInterface
$this->importaRecords($key, $records); $this->importaRecords($key, $records);
} }
return $this->response; return $this->forceToString($this->response);
} }
/** /**
@ -136,8 +136,10 @@ class Intervento extends Resource implements UpdateInterface
foreach ($records as $id => $record) { foreach ($records as $id => $record) {
// Fix id_cliente per Intervento in caso di generazione da zero // Fix id_cliente per Intervento in caso di generazione da zero
if ($risorsa instanceof Interventi && !empty($this->response['cliente'][$id])) { if ($risorsa instanceof Interventi && !empty($this->response['cliente'][$id]) && !empty($this->response['cliente'][$id]['id'])) {
$record['id_cliente'] = $this->response['cliente'][$id]['id']; $record['id_cliente'] = $this->response['cliente'][$id]['id'];
} elseif (!($risorsa instanceof Clienti) && !empty($this->response['intervento'][0]) && !empty($this->response['intervento'][0]['id'])){
$record['id_intervento'] = $this->response['intervento'][0]['id'];
} }
$response = null; $response = null;
@ -174,4 +176,28 @@ class Intervento extends Resource implements UpdateInterface
return true; return true;
} }
/**
* Converte i valori numerici in stringhe.
*
* @param $list
*
* @return array
*/
protected function forceToString($list)
{
$result = [];
// Fix per la gestione dei contenuti numerici
foreach ($list as $key => $value) {
if (is_numeric($value)) {
$result[$key] = (string) $value;
} elseif (is_array($value)) {
$result[$key] = $this->forceToString($value);
} else {
$result[$key] = $value;
}
}
return $result;
}
} }

View File

@ -24,7 +24,7 @@ use API\Resource;
class Revisione extends Resource implements RetrieveInterface class Revisione extends Resource implements RetrieveInterface
{ {
const REVISION = '1.3'; const REVISION = '5';
public function retrieve($request) public function retrieve($request)
{ {

View File

@ -18,6 +18,7 @@
*/ */
use Ifsnop\Mysqldump\Mysqldump; use Ifsnop\Mysqldump\Mysqldump;
use Util\FileSystem;
use Util\Generator; use Util\Generator;
use Util\Zip; use Util\Zip;
@ -148,6 +149,8 @@ class Backup
*/ */
public static function create() public static function create()
{ {
self::checkSpace();
$backup_dir = self::getDirectory(); $backup_dir = self::getDirectory();
$backup_name = self::getNextName(); $backup_name = self::getNextName();
@ -276,6 +279,40 @@ class Backup
delete(base_dir().'/database.sql'); delete(base_dir().'/database.sql');
} }
/**
* Effettua i controlli relativi allo spazio disponibile per l'esecuzione del backup;.
*/
public static function checkSpace()
{
$scarto = 1.1;
// Informazioni di base sui limiti di spazio
$spazio_libero = disk_free_space('.');
if (!empty(setting('Soft quota'))) {
$soft_quota = (float) setting('Soft quota'); // Impostazione in GB
$soft_quota = $soft_quota * (1024 ** 3); // Trasformazione in GB
}
// Informazioni sullo spazio occupato
$spazio_occupato = $spazio_necessario = FileSystem::folderSize(base_dir(), ['htaccess']);
$cartelle_ignorate = [
self::getDirectory(),
'node_modules',
'tests',
'tmp',
];
foreach ($cartelle_ignorate as $path) {
$spazio_necessario -= FileSystem::folderSize($path);
}
// Errori visualizzati
if (isset($soft_quota) && $soft_quota < ($spazio_necessario + $spazio_occupato) * $scarto) {
throw new InvalidArgumentException('Spazio disponibile in esaurimento');
} elseif ($spazio_libero < ($spazio_necessario) * $scarto) {
throw new InvalidArgumentException('Spazio del server in esaurimento');
}
}
/** /**
* Restituisce il percorso su cui salvare temporaneamente il dump del database. * Restituisce il percorso su cui salvare temporaneamente il dump del database.
* *

View File

@ -78,6 +78,7 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
/** /**
* Restituisce tutte le righe collegate al documento. * Restituisce tutte le righe collegate al documento.
*
* @return \Illuminate\Support\Collection|iterable * @return \Illuminate\Support\Collection|iterable
*/ */
public function getRighe() public function getRighe()
@ -91,8 +92,10 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
/** /**
* Restituisce la riga con tipo e identificativo corrispondente. * Restituisce la riga con tipo e identificativo corrispondente.
*
* @param $type * @param $type
* @param $id * @param $id
*
* @return mixed * @return mixed
*/ */
public function getRiga($type, $id) public function getRiga($type, $id)
@ -106,6 +109,7 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
/** /**
* Restituisce le righe del documento raggruppate per documento di origine. * Restituisce le righe del documento raggruppate per documento di origine.
*
* @return \Illuminate\Support\Collection|iterable * @return \Illuminate\Support\Collection|iterable
*/ */
public function getRigheRaggruppate() public function getRigheRaggruppate()