Skip to content

Commit 94e8c52

Browse files
committed
feat: aggiunta gestione controlli file e database per moduli aggiuntivi
1 parent 6d45a68 commit 94e8c52

3 files changed

Lines changed: 154 additions & 5 deletions

File tree

modules/aggiornamenti/checksum.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,23 @@
5555
}
5656

5757
$contents = file_get_contents(base_dir().'/checksum.json');
58-
$checksum = json_decode($contents);
58+
$checksum = json_decode($contents, true);
59+
60+
// Carica e accoda i checksum dei moduli premium
61+
$modules_dir = base_dir().'/modules/';
62+
$module_checksum_files = glob($modules_dir.'*/checksum.json');
63+
64+
if (!empty($module_checksum_files)) {
65+
foreach ($module_checksum_files as $module_checksum_file) {
66+
$module_contents = file_get_contents($module_checksum_file);
67+
$module_checksum = json_decode($module_contents, true);
68+
69+
if (!empty($module_checksum)) {
70+
// Accoda i checksum del modulo a quello principale
71+
$checksum = array_merge($checksum, $module_checksum);
72+
}
73+
}
74+
}
5975

6076
if (empty($checksum)) {
6177
echo '

modules/aggiornamenti/database.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,22 @@ function settings_diff($expected, $current)
116116
$contents = file_get_contents(base_dir().'/settings.json');
117117
$data_settings = json_decode($contents, true);
118118

119+
// Carica e accoda le impostazioni dai file settings.json presenti nelle sottocartelle di modules/
120+
$modules_dir = base_dir().'/modules/';
121+
$settings_json_files = glob($modules_dir.'*/settings.json');
122+
123+
if (!empty($settings_json_files)) {
124+
foreach ($settings_json_files as $settings_json_file) {
125+
$settings_contents = file_get_contents($settings_json_file);
126+
$settings_data = json_decode($settings_contents, true);
127+
128+
if (!empty($settings_data) && is_array($settings_data)) {
129+
// Accoda le impostazioni del modulo a quelle principali
130+
$data_settings = array_merge($data_settings, $settings_data);
131+
}
132+
}
133+
}
134+
119135
$settings = Update::getSettings();
120136
$results_settings = settings_diff($data_settings, $settings);
121137
$results_settings_added = settings_diff($settings, $data_settings);

modules/aggiornamenti/modutil.php

Lines changed: 121 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,21 @@ function customTables()
8181
{
8282
$tables = include base_dir().'/update/tables.php';
8383

84+
// Carica e accoda le tabelle dai file tables.php presenti nelle cartelle update dei moduli
85+
$modules_dir = base_dir().'/modules/';
86+
$module_tables_files = glob($modules_dir.'*/update/tables.php');
87+
88+
if (!empty($module_tables_files)) {
89+
foreach ($module_tables_files as $module_tables_file) {
90+
$module_tables = include $module_tables_file;
91+
92+
if (!empty($module_tables) && is_array($module_tables)) {
93+
// Accoda le tabelle del modulo a quelle principali
94+
$tables = array_merge($tables, $module_tables);
95+
}
96+
}
97+
}
98+
8499
$names = [];
85100
foreach ($tables as $table) {
86101
$names[] = prepare($table);
@@ -327,6 +342,64 @@ function customViewsNotStandard()
327342
}
328343
}
329344

345+
// Carica e accoda le viste dai file views.json presenti nelle sottocartelle di modules/
346+
$modules_dir = base_dir().'/modules/';
347+
$views_json_files = glob($modules_dir.'*/views.json');
348+
349+
// Traccia i moduli che provengono dai file modules.json nelle sottocartelle (moduli premium)
350+
$premium_modules = [];
351+
352+
// Prima carica i moduli dai file modules.json per identificare quelli premium
353+
$module_json_files = glob($modules_dir.'*/modules.json');
354+
if (!empty($module_json_files)) {
355+
foreach ($module_json_files as $module_json_file) {
356+
$module_contents = file_get_contents($module_json_file);
357+
$module_data = json_decode($module_contents, true);
358+
359+
if (!empty($module_data) && is_array($module_data)) {
360+
foreach ($module_data as $module_name => $data) {
361+
if (is_array($data)) {
362+
$premium_modules[$module_name] = true;
363+
}
364+
}
365+
}
366+
}
367+
}
368+
369+
if (!empty($views_json_files)) {
370+
foreach ($views_json_files as $views_json_file) {
371+
$views_contents = file_get_contents($views_json_file);
372+
$views_data = json_decode($views_contents, true);
373+
374+
if (!empty($views_data) && is_array($views_data)) {
375+
// Accoda le viste del modulo a quelle principali
376+
foreach ($views_data as $module_name => $module_views) {
377+
$module_key = trim((string) $module_name);
378+
379+
if ($module_key === '' || !is_array($module_views)) {
380+
continue;
381+
}
382+
383+
foreach ($module_views as $view_name => $view_query) {
384+
$view_key = trim((string) $view_name);
385+
386+
if ($view_key === '') {
387+
continue;
388+
}
389+
390+
// Se view_query è un array (struttura estesa), estrai il campo 'id'
391+
if (is_array($view_query) && isset($view_query['id'])) {
392+
$standard_views[$module_key][$view_key] = $view_query['id'];
393+
} elseif (is_string($view_query)) {
394+
// Se è una stringa (struttura semplice), usala direttamente
395+
$standard_views[$module_key][$view_key] = $view_query;
396+
}
397+
}
398+
}
399+
}
400+
}
401+
}
402+
330403
// Ottieni tutte le viste presenti nel database
331404
$query = "SELECT
332405
zv.id,
@@ -378,7 +451,12 @@ function customViewsNotStandard()
378451

379452
if (!isset($standard_views[$module_name])) {
380453
$is_custom = true;
381-
$reason = 'Modulo non previsto';
454+
// Verifica se il modulo proviene da un file modules.json in una sottocartella (modulo premium)
455+
if (isset($premium_modules[$module_name])) {
456+
$reason = 'Modulo premium';
457+
} else {
458+
$reason = 'Modulo non previsto';
459+
}
382460
} elseif (!isset($standard_views[$module_name][$view_name])) {
383461
$is_custom = true;
384462
$reason = 'Vista aggiuntiva';
@@ -519,6 +597,34 @@ function customModulesNotStandard()
519597
}
520598
}
521599

600+
// Carica i moduli dai file modules.json presenti nelle sottocartelle di modules/ (moduli premium)
601+
// NOTA: Non li aggiungiamo a $standard_modules per poterli mostrare nella lista come premium
602+
$modules_dir = base_dir().'/modules/';
603+
$module_json_files = glob($modules_dir.'*/modules.json');
604+
605+
// Traccia i moduli che provengono dai file modules.json nelle sottocartelle (moduli premium)
606+
$premium_modules = [];
607+
608+
if (!empty($module_json_files)) {
609+
foreach ($module_json_files as $module_json_file) {
610+
$module_contents = file_get_contents($module_json_file);
611+
$module_data = json_decode($module_contents, true);
612+
613+
if (!empty($module_data) && is_array($module_data)) {
614+
// Traccia i moduli premium senza aggiungerli a $standard_modules
615+
foreach ($module_data as $module_name => $data) {
616+
if (is_array($data)) {
617+
// Traccia questo modulo come premium
618+
$premium_modules[$module_name] = [
619+
'options' => $data['options'] ?? '',
620+
'options2' => $data['options2'] ?? '',
621+
];
622+
}
623+
}
624+
}
625+
}
626+
}
627+
522628
// Ottieni tutti i moduli presenti nel database
523629
$query = "SELECT
524630
zm.id,
@@ -538,6 +644,8 @@ function customModulesNotStandard()
538644
$module_name = $module['name'];
539645
$is_custom = false;
540646
$reason = '';
647+
$expected_options = '';
648+
$expected_options2 = '';
541649

542650
// Normalizza le options del modulo corrente
543651
$current_options = normalizeModuleOptions($module['options']);
@@ -550,10 +658,19 @@ function customModulesNotStandard()
550658
// Controlla se il modulo non è previsto nel file standard
551659
if (!isset($standard_modules[$module_name])) {
552660
$is_custom = true;
553-
$reason = 'Modulo non previsto';
661+
// Verifica se il modulo proviene da un file modules.json in una sottocartella (modulo premium)
662+
if (isset($premium_modules[$module_name])) {
663+
$reason = 'Modulo premium';
664+
// Per i moduli premium, usa le options definite nel file premium
665+
$expected_options = $premium_modules[$module_name]['options'] ?? '';
666+
$expected_options2 = $premium_modules[$module_name]['options2'] ?? '';
667+
} else {
668+
$reason = 'Modulo non previsto';
669+
}
554670
} else {
555671
// Normalizza le options standard
556672
$expected_options = normalizeModuleOptions($standard_modules[$module_name]['options']);
673+
$expected_options2 = $standard_modules[$module_name]['options2'] ?? '';
557674

558675
// Controlla se options2 è valorizzato (modulo personalizzato)
559676
if (!empty($current_options2)) {
@@ -575,8 +692,8 @@ function customModulesNotStandard()
575692
'reason' => $reason,
576693
'current_options' => $module['options'],
577694
'current_options2' => $module['options2'],
578-
'expected_options' => $standard_modules[$module_name]['options'] ?? '',
579-
'expected_options2' => $standard_modules[$module_name]['options2'] ?? '',
695+
'expected_options' => $expected_options,
696+
'expected_options2' => $expected_options2,
580697
];
581698
}
582699
}

0 commit comments

Comments
 (0)