From be313b347187df0812540026913d90708e8dc7e7 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Fri, 27 Nov 2020 16:49:10 +0100 Subject: [PATCH] Aggiunto sistema per la verifica dei servizi Services in scadenza --- include/top.php | 4 +- modules/stato_servizi/edit.php | 56 ++++++++++++++++ modules/stato_servizi/src/ServicesHook.php | 75 ++++++++++++++++++++++ modules/stato_servizi/src/SpaceHook.php | 5 +- update/2_4_20.sql | 9 ++- 5 files changed, 141 insertions(+), 8 deletions(-) create mode 100644 modules/stato_servizi/src/ServicesHook.php diff --git a/include/top.php b/include/top.php index 66e8f1bb2..f9715e3a4 100755 --- a/include/top.php +++ b/include/top.php @@ -575,8 +575,8 @@ if (!Auth::check() && (!empty($messages['info']) || !empty($messages['warning']) // Messaggio informativo per l'esaurimento dello spazio totale disponibile nel server $free_space = disk_free_space('.'); -$space_limit = 200; // MB -if ($free_space < ($space_limit * 1024 ^ 2)) { +$space_limit = 1; // GB +if ($free_space < ($space_limit * 1024 ^ 3)) { echo '

diff --git a/modules/stato_servizi/edit.php b/modules/stato_servizi/edit.php index 9dbcfadf1..ee5269266 100755 --- a/modules/stato_servizi/edit.php +++ b/modules/stato_servizi/edit.php @@ -18,6 +18,9 @@ */ // Elenco moduli installati +use Carbon\Carbon; +use Models\Cache; + echo '
@@ -41,6 +44,59 @@ echo '
'; +if (\API\Services::isEnabled()) { + // Informazioni su Services + $servizi = Cache::pool('Informazioni su Services')->content; + + // Elaborazione dei servizi in scadenza + $limite_scadenze = (new Carbon())->addDays(60); + $servizi_in_scadenza = []; + foreach ($servizi as $servizio) { + // Gestione per data di scadenza + $scadenza = new Carbon($servizio['expiration_at']); + if ( + (isset($servizio['expiration_at']) && $scadenza->lessThan($limite_scadenze)) + ) { + $servizi_in_scadenza[] = $servizio['name'].' ('.$scadenza->diffForHumans().')'; + } // Gestione per crediti + elseif ( + (isset($servizio['credits']) && $servizio['credits'] < 100) + ) { + $servizi_in_scadenza[] = $servizio['name'].' ('.$servizio['credits'].' crediti)'; + } + } + + echo ' +
+
+
+

+ '.tr('Informazioni su Services').' +

+
+
+ +
'; + + if (empty($servizi_in_scadenza)) { + echo ' +

'.tr('Nessun servizio in scadenza').'

'; + } else { + echo ' +

'.tr('I seguenti servizi sono in scadenza:').'

    '; + foreach ($servizi_in_scadenza as $servizio) { + echo ' +
  • '.$servizio.'
  • '; + } + echo ' +
'; + } + + echo ' +
+
'; +} + // Widgets echo '
diff --git a/modules/stato_servizi/src/ServicesHook.php b/modules/stato_servizi/src/ServicesHook.php new file mode 100644 index 000000000..0e48988ab --- /dev/null +++ b/modules/stato_servizi/src/ServicesHook.php @@ -0,0 +1,75 @@ +. + */ + +namespace Modules\StatoServizi; + +use API\Services; +use Carbon\Carbon; +use Hooks\CachedManager; + +class ServicesHook extends CachedManager +{ + public function getCacheName() + { + return 'Informazioni su Services'; + } + + public function cacheData() + { + $response = Services::request('POST', 'informazioni_servizi'); + $body = Services::responseBody($response); + + return $body['services']; + } + + public function response() + { + $servizi = $this->getCache()->content; + + // Elaborazione dei servizi in scadenza + $limite_scadenze = (new Carbon())->addDays(60); + $servizi_in_scadenza = []; + foreach ($servizi as $servizio) { + // Gestione per data di scadenza + $scadenza = new Carbon($servizio['expiration_at']); + if ( + (isset($servizio['expiration_at']) && $scadenza->lessThan($limite_scadenze)) + ) { + $servizi_in_scadenza[] = $servizio['name'].' ('.$scadenza->diffForHumans().')'; + } + + // Gestione per crediti + elseif ( + (isset($servizio['credits']) && $servizio['credits'] < 100) + ) { + $servizi_in_scadenza[] = $servizio['name'].' ('.$servizio['credits'].' crediti)'; + } + } + + $message = tr('I seguenti servizi sono in scadenza: _LIST_', [ + '_LIST_' => implode(', ', $servizi_in_scadenza), + ]); + + return [ + 'icon' => 'fa fa-refresh text-warning', + 'message' => $message, + 'show' => !empty($servizi_in_scadenza), + ]; + } +} diff --git a/modules/stato_servizi/src/SpaceHook.php b/modules/stato_servizi/src/SpaceHook.php index 0d863054b..ca85d06e9 100644 --- a/modules/stato_servizi/src/SpaceHook.php +++ b/modules/stato_servizi/src/SpaceHook.php @@ -22,9 +22,6 @@ namespace Modules\StatoServizi; use Hooks\CachedManager; use Util\FileSystem; -/** - * Hook dedicato all'individuazione di nuove versioni del gestionale, pubblicate sulla repository ufficiale di GitHub. - */ class SpaceHook extends CachedManager { public function getCacheName() @@ -46,7 +43,7 @@ class SpaceHook extends CachedManager $osm_size = $this->getCache()->content; $soft_quota = setting('Soft quota'); // Impostazione in MB - $space_limit = ($soft_quota / 100) * 95; // 95% dello spazion indicato + $space_limit = ($soft_quota / 100) * 95; // 95% dello spazio indicato $space_limit = $space_limit * 1024 ^ 2; // Trasformazione in B $message = tr('Attenzione: occupati _TOT_ dei _QUOTA_ previsti', [ diff --git a/update/2_4_20.sql b/update/2_4_20.sql index 41d2b3fa2..ef1fa09ea 100644 --- a/update/2_4_20.sql +++ b/update/2_4_20.sql @@ -51,9 +51,14 @@ ALTER TABLE `zz_widgets` CHANGE `text` `text` TEXT NULL; -- Impostazione soft quota -INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Soft quota', '', 'integer', '0', 'Generali', NULL, 'Soft quota in MB'); +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Soft quota', '', 'integer', '0', 'Generali', NULL, 'Soft quota in MB'); -- Relativo hook per il calcolo dello spazio utilizzato INSERT INTO `zz_hooks` (`id`, `name`, `class`, `enabled`, `id_module`, `processing_at`, `processing_token`) VALUES (NULL, 'Spazio', 'Modules\\StatoServizi\\SpaceHook', '1', (SELECT `id` FROM `zz_modules` WHERE `name`='Stato dei servizi'), NULL, NULL); -INSERT INTO `zz_cache` (`id`, `name`, `content`, `valid_time`, `expire_at`) VALUES (NULL, 'Spazio utilizzato', '', '15 minute', NOW()); \ No newline at end of file +INSERT INTO `zz_cache` (`id`, `name`, `content`, `valid_time`, `expire_at`) VALUES (NULL, 'Spazio utilizzato', '', '15 minute', NOW()); + +-- Introduzione hook per informazioni su Services +INSERT INTO `zz_hooks` (`id`, `name`, `class`, `enabled`, `id_module`, `processing_at`, `processing_token`) VALUES (NULL, 'Informazioni su Services', 'Modules\\StatoServizi\\ServicesHook', '1', (SELECT `id` FROM `zz_modules` WHERE `name`='Stato dei servizi'), NULL, NULL); + +INSERT INTO `zz_cache` (`id`, `name`, `content`, `valid_time`, `expire_at`) VALUES (NULL, 'Informazioni su Services', '', '7 days', NOW());