'; } else { $stato = ''; $class = 'warning'; } // Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti if ($sub['id'] != $id_module) { if ($sub['enabled']) { $stato = "".$stato."\n"; } else { $stato = "".$stato."\n"; } } // COMPATIBILITA' // Controllo per ogni versione se la regexp combacia per dire che è compatibile o meno $compatibilities = explode(',', $sub['compatibility']); $comp = false; foreach ($compatibilities as $compatibility) { $comp = (preg_match('/'.$compatibility.'/', $osm_version)) ? true : $comp; } if ($comp) { $compatible = ''; ($sub['enabled']) ? $class = 'success' : $class = 'warning'; } else { $compatible = ''; $class = 'danger'; } $result .= ' '.str_repeat(' ', $depth * 4).'- '.$sub['title'].' '.$sub['version'].' '.$stato.' '.$compatible.''; $result .= ' '; // Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti if (empty($sub['default'])) { $result .= " "; } else { $result .= " "; } $result .= ' '; $result .= submodules($sub['all_children'], $depth + 1); } return $result; } /** * Controlla se il database presenta alcune sezioni personalizzate. * * @return array */ function customStructure() { $results = []; $dirs = [ 'modules', 'templates', 'plugins', ]; // Controlli di personalizzazione fisica foreach ($dirs as $dir) { $files = glob(DOCROOT.'/'.$dir.'/*/custom/*.{php,html}', GLOB_BRACE); foreach ($files as $file) { $file = str_replace(DOCROOT.'/', '', $file); $result = explode('/custom/', $file)[0]; if (!in_array($result, $results)) { $results[] = $result; } } } return $results; } /** * Controlla se il database presenta alcune sezioni personalizzate. * * @return array */ function customTables() { $tables = include DOCROOT.'/update/tables.php'; $names = []; foreach ($tables as $table) { $names[] = prepare($table); } $database = database(); $results = $database->fetchArray('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '.prepare($database->getDatabaseName()).' AND TABLE_NAME NOT IN ('.implode(',', $names).") AND TABLE_NAME != 'updates'"); return array_column($results, 'TABLE_NAME'); } /** * Controlla se il database presenta alcune sezioni personalizzate. * * @return array */ function customDatabase() { $database = database(); $modules = $database->fetchArray("SELECT name, CONCAT('modules/', directory) AS directory FROM zz_modules WHERE options2 != ''"); $plugins = $database->fetchArray("SELECT name, CONCAT('plugins/', directory) AS directory FROM zz_plugins WHERE options2 != ''"); $results = array_merge($modules, $plugins); return $results; } function custom() { $database_check = customDatabase(); $structure_check = customStructure(); $list = []; foreach ($database_check as $element) { $pos = array_search($element['directory'], $structure_check); $list[] = [ 'path' => $element['directory'], 'database' => true, 'directory' => $pos !== false, ]; if ($pos !== false) { unset($structure_check[$pos]); } } foreach ($structure_check as $element) { $list[] = [ 'path' => $element, 'database' => false, 'directory' => true, ]; } return $list; }