From dac2537ac09811d96dc5b01d872b0b0bae994d7a Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 6 Oct 2022 17:08:18 +0200 Subject: [PATCH 1/6] Introduzione Hooks disponibili in stato dei servizi --- modules/stato_servizi/actions.php | 49 ++++- modules/stato_servizi/edit.php | 28 ++- modules/stato_servizi/elenco-hooks.php | 195 ++++++++++++++++++ modules/stato_servizi/elenco-widget.php | 2 +- .../widgets/spazio_utilizzato.php | 2 +- src/Util/FileSystem.php | 5 +- 6 files changed, 274 insertions(+), 7 deletions(-) create mode 100644 modules/stato_servizi/elenco-hooks.php diff --git a/modules/stato_servizi/actions.php b/modules/stato_servizi/actions.php index 8259f6153..a2c38b2fd 100755 --- a/modules/stato_servizi/actions.php +++ b/modules/stato_servizi/actions.php @@ -267,6 +267,48 @@ switch (filter('op')) { break; + case 'disabilita-hook': + $id = filter('id'); + + // Abilitazione del widget indicato + $database->table('zz_hooks') + ->where('id', '=', $id) + ->update(['enabled' => 0]); + + // Messaggio informativo + $hook = $database->table('zz_hooks') + ->where('id', '=', $id) + ->first(); + flash()->info(tr('Hook "_NAME_" disabilitato!', [ + '_NAME_' => $hook->name, + ])); + + echo json_encode([]); + + break; + + case 'abilita-hook': + $id = filter('id'); + + // Abilitazione del widget indicato + $database->table('zz_hooks') + ->where('id', '=', $id) + ->update(['enabled' => 1]); + + // Messaggio informativo + $hook = $database->table('zz_hooks') + ->where('id', '=', $id) + ->first(); + flash()->info(tr('Hook "_NAME_" abilitato!', [ + '_NAME_' => $hook->name, + ])); + + echo json_encode([]); + + break; + + + case 'sizes': $results = []; @@ -279,13 +321,16 @@ switch (filter('op')) { ]; foreach ($dirs as $dir => $description) { - $size = FileSystem::folderSize($dir, ['htaccess','gitkeep','ini','xml']); + $excluded_extensions = ['htaccess','gitkeep']; + $excluded_dir = [DOCROOT.'\files\impianti', DOCROOT.'\files\importFE', DOCROOT.'\files\importFE']; + + $size = FileSystem::folderSize($dir, array_merge($excluded_extensions,$excluded_dir)); $results[] = [ 'description' => $description, 'size' => $size, 'formattedSize' => FileSystem::formatBytes($size), - 'count' => FileSystem::fileCount($dir, ['htaccess','gitkeep','ini','xml']) ?: 0, + 'count' => FileSystem::fileCount($dir, array_merge($excluded_extensions,$excluded_dir)) ?: 0, 'dbSize' => ($description == 'Allegati') ? $dbo->fetchOne('SELECT SUM(`size`) AS dbsize FROM zz_files')['dbsize'] : 0, 'dbCount' => ($description == 'Allegati') ? $dbo->fetchOne('SELECT COUNT(`id`) AS dbcount FROM zz_files')['dbcount'] : 0, 'dbExtensions' => ($description == 'Allegati') ? $dbo->fetchArray("SELECT SUBSTRING_INDEX(filename, '.', -1) AS extension, COUNT(*) AS num FROM zz_files GROUP BY extension ORDER BY num DESC LIMIT 10") : 0, diff --git a/modules/stato_servizi/edit.php b/modules/stato_servizi/edit.php index 234efed0f..fa9bd9b47 100755 --- a/modules/stato_servizi/edit.php +++ b/modules/stato_servizi/edit.php @@ -264,7 +264,7 @@ echo ' '; -// Widgets +// Widgets + Hooks echo '
@@ -277,6 +277,18 @@ echo '
+ +
+
+

+ '.tr('Hooks disponibili').' +

+
+ +
+
+
+
@@ -422,9 +434,23 @@ function caricaElencoWidget() { }); } +function caricaElencoHooks() { + let container = $("#hook"); + + localLoading(container, true); + return $.get("'.$structure->fileurl('elenco-hooks.php').'?id_module='.$id_module.'", function(data) { + container.html(data); + localLoading(container, false); + + init(); + }); +} + + $(document).ready(function() { caricaElencoModuli(); caricaElencoWidget(); + caricaElencoHooks(); init(); }); diff --git a/modules/stato_servizi/elenco-hooks.php b/modules/stato_servizi/elenco-hooks.php new file mode 100644 index 000000000..f48cfc079 --- /dev/null +++ b/modules/stato_servizi/elenco-hooks.php @@ -0,0 +1,195 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +echo ' + + + + + + + + '; + +$hooks = $dbo->fetchArray('SELECT zz_hooks.*, zz_modules.name AS modulo +FROM zz_hooks + INNER JOIN zz_modules ON zz_hooks.id_module = zz_modules.id +ORDER BY `id_module` ASC, `zz_hooks`.`id` ASC'); + +$gruppi = collect($hooks)->groupBy('modulo'); +foreach ($gruppi as $modulo => $hooks) { + echo ' + + + + + + + '; + + foreach ($hooks as $hook) { + + $class = $hook['enabled'] ? 'success' : 'warning'; + $nome_tipo = 'hook'; + + echo ' + + + + + + '; + } + + echo ' + '; +} + +echo ' +
'.tr('Nome').''.tr('Stato').''.tr('Ultima esecuzione').'
'.$modulo.'
+ '.$hook['name'].(!empty($hook['help']) ? ' + ' : '').' + '; + + // Possibilità di disabilitare o abilitare il hook + if ($hook['enabled']) { + echo ' +
+ +
'; + } else { + echo ' +
+ +
'; + } + + echo ' +
'; + + Translator::timestampToLocale($hook['processing_at']); + + echo ' +
+ +'; diff --git a/modules/stato_servizi/elenco-widget.php b/modules/stato_servizi/elenco-widget.php index 218c8d1db..8a4b499e3 100644 --- a/modules/stato_servizi/elenco-widget.php +++ b/modules/stato_servizi/elenco-widget.php @@ -24,7 +24,7 @@ echo ' '.tr('Nome').' - '.tr('Posizione').' + '.tr('Ubicazione').' '.tr('Stato').' '.tr('Posizione').' diff --git a/modules/stato_servizi/widgets/spazio_utilizzato.php b/modules/stato_servizi/widgets/spazio_utilizzato.php index f3b26b93c..08a6027e8 100755 --- a/modules/stato_servizi/widgets/spazio_utilizzato.php +++ b/modules/stato_servizi/widgets/spazio_utilizzato.php @@ -72,7 +72,7 @@ function crea_grafico(values){ if (element.count "+diff+" files non trovati sul disco per allegati.
"); + $("#message").append("
"+diff+" files non trovati per allegati.

"); } } diff --git a/src/Util/FileSystem.php b/src/Util/FileSystem.php index 72513dcd2..2eb2f8211 100755 --- a/src/Util/FileSystem.php +++ b/src/Util/FileSystem.php @@ -71,7 +71,7 @@ class FileSystem if ($path !== false && $path != '' && file_exists($path)) { foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object) { - if (!in_array($object->getExtension(), $exclusions)) { + if (!in_array($object->getExtension(), $exclusions) && (!in_array($object->getPath(), $exclusions)) ) { $total += $object->getSize(); } } @@ -94,7 +94,8 @@ class FileSystem if ($path !== false && $path != '' && file_exists($path)) { foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object) { - if (!in_array($object->getExtension(), $exclusions)) { + if (!in_array($object->getExtension(), $exclusions) && (!in_array($object->getPath(), $exclusions)) ) { + ++$total; } } From 022cdd5d74cc1ee482ea48fda95a462bf441fa62 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 6 Oct 2022 17:15:14 +0200 Subject: [PATCH 2/6] Migliorie minori elenco-hooks --- modules/stato_servizi/elenco-hooks.php | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/modules/stato_servizi/elenco-hooks.php b/modules/stato_servizi/elenco-hooks.php index f48cfc079..dc591100f 100644 --- a/modules/stato_servizi/elenco-hooks.php +++ b/modules/stato_servizi/elenco-hooks.php @@ -24,8 +24,8 @@ echo ' '.tr('Nome').' - '.tr('Stato').' - '.tr('Ultima esecuzione').' + '.tr('Ultima esecuzione').' + '.tr('Stato').' '; @@ -56,6 +56,11 @@ foreach ($gruppi as $modulo => $hooks) { '.$hook['name'].(!empty($hook['help']) ? ' ' : '').' + + + '.Translator::timestampToLocale($hook['processing_at']).' + + '; // Possibilità di disabilitare o abilitare il hook @@ -79,13 +84,6 @@ foreach ($gruppi as $modulo => $hooks) { '; } - echo ' - - - '; - - Translator::timestampToLocale($hook['processing_at']); - echo ' '; From 54fd0d02262f27a75bf02ed1064bf96c112e8787 Mon Sep 17 00:00:00 2001 From: Luca Date: Fri, 7 Oct 2022 12:01:13 +0200 Subject: [PATCH 3/6] Aggiunte excluded dir per verifica numero file e spazio --- modules/stato_servizi/actions.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/stato_servizi/actions.php b/modules/stato_servizi/actions.php index a2c38b2fd..27aa7a636 100755 --- a/modules/stato_servizi/actions.php +++ b/modules/stato_servizi/actions.php @@ -322,7 +322,8 @@ switch (filter('op')) { foreach ($dirs as $dir => $description) { $excluded_extensions = ['htaccess','gitkeep']; - $excluded_dir = [DOCROOT.'\files\impianti', DOCROOT.'\files\importFE', DOCROOT.'\files\importFE']; + //Tutte le cartelle che non prevedono log in zz_files + $excluded_dir = [DOCROOT.'\files\impianti', DOCROOT.'\files\importFE', DOCROOT.'\files\exportFE', DOCROOT.'\files\receiptFE', DOCROOT.'\files\temp']; $size = FileSystem::folderSize($dir, array_merge($excluded_extensions,$excluded_dir)); From 508ab0c7e90f0be201b15b857bd8d841fd1cbdd4 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 8 Oct 2022 17:05:14 +0200 Subject: [PATCH 4/6] Fix statistica 'Ore di lavoro per tecnico' se ancora nessuna sessione inserita Rimozione variabili inutilizzate --- modules/statistiche/edit.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/statistiche/edit.php b/modules/statistiche/edit.php index 57f990b5a..13a6a502b 100755 --- a/modules/statistiche/edit.php +++ b/modules/statistiche/edit.php @@ -446,7 +446,7 @@ $(document).ready(function() { data: { labels: months, datasets: [ - '.$dataset.' + '.($dataset? :'{ label: "", backgroundColor: "transparent", data: [ 0,0,0,0,0,0,0,0,0,0,0,0 ] }').' ] }, options: { @@ -521,7 +521,6 @@ INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipi INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica WHERE an_tipianagrafiche.descrizione = "Cliente" AND co_tipidocumento.dir = "entrata" AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC'); -$clienti = Stats::monthly($clienti, $start, $end); //Random color $background = '#'.dechex(rand(256, 16777215)); From 0bdadffd2aa831c05dfb87946d0f175edf8c9723 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 8 Oct 2022 17:28:43 +0200 Subject: [PATCH 5/6] Introdotto build per referenti --- modules/anagrafiche/src/Referente.php | 25 ++++++++++++++++++++++++ plugins/referenti/actions.php | 28 +++++++++++++++------------ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/modules/anagrafiche/src/Referente.php b/modules/anagrafiche/src/Referente.php index 5bb83c7b7..22fec8706 100644 --- a/modules/anagrafiche/src/Referente.php +++ b/modules/anagrafiche/src/Referente.php @@ -27,6 +27,31 @@ class Referente extends Model use SimpleModelTrait; protected $table = 'an_referenti'; + + /** + * Crea un nuovo referente. + * + * @param string $nome + * + * @return self + */ + public static function build($idanagrafica, $nome, $idmansione, $idsede) + { + $model = new static(); + + + $model->idanagrafica = $idanagrafica; + + $model->nome = $nome; + + $model->idmansione = $idmansione; + $model->idsede = $idsede; + + $model->save(); + + return $model; + } + /** * The attributes that aren't mass assignable. diff --git a/plugins/referenti/actions.php b/plugins/referenti/actions.php index 17befdf59..5736c9cf0 100755 --- a/plugins/referenti/actions.php +++ b/plugins/referenti/actions.php @@ -19,26 +19,30 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Referente; + $operazione = filter('op'); switch ($operazione) { case 'addreferente': if (!empty(post('nome'))) { - $opt_out_newsletter = post('disable_newsletter'); - $dbo->insert('an_referenti', [ - 'idanagrafica' => $id_parent, - 'nome' => post('nome'), - 'idmansione' => post('idmansione'), - 'telefono' => post('telefono'), - 'email' => post('email'), - 'idsede' => post('idsede'), - 'enable_newsletter' => empty($opt_out_newsletter), - ]); - $id_record = $dbo->lastInsertedID(); + $nome = post('nome'); + $idmansione = post('idmansione'); + $idsede = post('idsede'); + $opt_out_newsletter = post('disable_newsletter'); + + $referente = Referente::build($id_parent, $nome, $idmansione, $idsede); + $id_record = $referente->id; + + $referente->telefono = post('telefono'); + $referente->email = post('email'); + $referente->enable_newsletter = empty($opt_out_newsletter); + + $referente->save(); if (isAjaxRequest() && !empty($id_record)) { - echo json_encode(['id' => $id_record, 'text' => post('nome')]); + echo json_encode(['id' => $id_record, 'text' => $referente->nome]); } flash()->info(tr('Aggiunto nuovo referente!')); From 75c13d9ad86f050e13764b3df2b042e98a2b29d5 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 10 Oct 2022 09:32:21 +0200 Subject: [PATCH 6/6] Fix link note di credito --- modules/fatture/edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 5b5f0dbc3..6d21d9d19 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -135,7 +135,7 @@ if (!empty($note_accredito)) { ]); echo ' -
'.Modules::link('Fatture di vendita', $nota['id'], $text, $text); +
'.Modules::link( ($dir == 'entrata' ? 'Fatture di vendita' : 'Fatture di acquisto' ), $nota['id'], $text, $text); } echo ' ';