From 8dfee3d95299b898c5327a41d4ccbeb8ed6ea81d Mon Sep 17 00:00:00 2001 From: Luca Date: Tue, 24 Nov 2020 19:40:36 +0100 Subject: [PATCH] Introduzione SpaceHook per notifica spazio utilizzato in relazione ad un eventuale SoftQuota --- include/top.php | 5 +- modules/stato_servizi/src/SpaceHook.php | 89 +++++++++++++++++++++++++ update/2_4_20.sql | 7 +- 3 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 modules/stato_servizi/src/SpaceHook.php diff --git a/include/top.php b/include/top.php index 65234d3d5..7e33b12c3 100755 --- a/include/top.php +++ b/include/top.php @@ -574,10 +574,11 @@ if (!Auth::check() && (!empty($messages['info']) || !empty($messages['warning']) } //Se la mia installazione supera una data dimensione visualizzo un messaggio -if (!empty(setting('Soft quota'))){ +$osm_size = $dbo->fetchOne('SELECT content FROM zz_cache WHERE name = "Spazio utilizzato"')['content']; +if (!empty(setting('Soft quota')) && !empty($osm_size)){ // Controllo sullo spazio disponibile - $osm_size = disk_free_space('.'); + //$osm_size = disk_free_space('.'); //$osm_size = FileSystem::folderSize(base_dir(), ['htaccess']); $soft_quota = setting('Soft quota'); //MB diff --git a/modules/stato_servizi/src/SpaceHook.php b/modules/stato_servizi/src/SpaceHook.php new file mode 100644 index 000000000..67a3db983 --- /dev/null +++ b/modules/stato_servizi/src/SpaceHook.php @@ -0,0 +1,89 @@ +. + */ + +namespace Modules\StatoServizi; + +use Util\FileSystem; +use Hooks\CachedManager; +use Modules; + + +/** + * Hook dedicato all'individuazione di nuove versioni del gestionale, pubblicate sulla repository ufficiale di GitHub. + */ +class SpaceHook extends CachedManager +{ + + public function getCacheName() + { + return 'Spazio utilizzato'; + } + + public function cacheData() + { + return self::isAvailable(); + } + + public function response() + { + $osm_size = $this->getCache()->content; + + $osm_size = FileSystem::folderSize(base_dir(), ['htaccess']); + $soft_quota = setting('Soft quota'); //MB + $space_limit = ($soft_quota / 100)*95; //MB + + $message = tr("Attenzione: occupati _TOT_ dei _SOFTQUOTA_ previsti", [ + '_TOT_' => FileSystem::formatBytes($osm_size), + '_SOFTQUOTA_' => FileSystem::formatBytes($soft_quota * 1048576), + + ]); + + return [ + 'icon' => 'fa fa-database text-warning', + 'message' => $message, + 'show' => ($osm_size > $space_limit), + ]; + } + + + /** + * Controlla se รจ disponibile un aggiornamento nella repository GitHub. + * + * @return string|bool + */ + public static function isAvailable() + { + + if (!empty(setting('Soft quota'))){ + + $osm_size = FileSystem::folderSize(base_dir(), ['htaccess']); + + $soft_quota = setting('Soft quota'); //MB + $space_limit = ($soft_quota / 100)*95; //MB + + if ($osm_size > ($space_limit * 1048576)) { + return $osm_size; + } + } + + return false; + } + + +} diff --git a/update/2_4_20.sql b/update/2_4_20.sql index b29fa3e94..41d2b3fa2 100644 --- a/update/2_4_20.sql +++ b/update/2_4_20.sql @@ -50,5 +50,10 @@ ALTER TABLE `zz_widgets` CHANGE `query` `query` TEXT NULL; 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'); \ No newline at end of file +-- 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