.
*/
include_once __DIR__.'/../../core.php';
echo '
'.tr('Nome').'
'.tr('Versione').'
'.tr('Stato').'
#
';
$moduli = Modules::getHierarchy();
echo renderElencoModuli($moduli);
echo '
';
function renderElencoModuli($elenco, $depth = 0)
{
$versione_gestionale = Update::getVersion();
$moduli_sempre_attivi = ['Utenti e permessi', 'Stato dei servizi'];
$result = '';
foreach ($elenco as $record) {
$record_bloccato = in_array($record['name'], $moduli_sempre_attivi);
$is_plugin = !empty($record['idmodule_to']);
$nome_tipo = string_lowercase($is_plugin ? tr('Plugin') : tr('Modulo'));
// Render per sotto-moduli
$sotto_moduli = renderElencoModuli($record['all_children'], $depth + 1);
$elenco_plugin = null;
if (empty($record['idmodule_to'])) {
$plugins = database()->table('zz_plugins')
->selectRaw('zz_plugins.*, zz_plugins_lang.title as title')
->join('zz_plugins_lang', function ($join) {
$join->on('zz_plugins.id', '=', 'zz_plugins_lang.id_record')
->where('zz_plugins_lang.id_lang', '=', Models\Locale::getDefault()->id);
})
->where('idmodule_to', '=', $record['id'])
->get()->map(fn ($i) => (array) $i)->toArray();
$elenco_plugin = renderElencoModuli($plugins, $depth + 1);
}
// COMPATIBILITA'
// Controllo per ogni versione se la regexp combacia per dire che è compatibile o meno
$compatibile = false;
$versioni_compatibili = explode(',', (string) $record['compatibility']);
foreach ($versioni_compatibili as $versione) {
$compatibile = (preg_match('/'.$versione.'/', $versione_gestionale)) ? true : $compatibile;
}
if ($compatibile) {
$class = ($record['enabled']) ? 'success' : 'warning';
} else {
$class = 'danger';
}
$result .= '
'.str_repeat(' ', $depth * 4).'- '.$record['title'].'
'.($compatibile ? '' :
'
'
).'
'.($is_plugin ? ''.tr('Plugin').' ' : '').'
'.$record['version'].'
';
// Possibilità di disabilitare o abilitare il moduli/plugin
if (!$record_bloccato) {
if ($record['enabled']) {
$result .= '
';
// Possibilità di abilitare tutti i sottomoduli
$sotto_moduli_disabilitato = str_contains((string) $sotto_moduli, 'fa fa-plug');
if ($sotto_moduli_disabilitato) {
$result .= '
';
}
} else {
$result .= '
';
}
} else {
$result .= '
';
}
$result .= '
';
// Possibilità di disinstallare solo se il modulo/plugin non è tra quelli predefiniti
if (empty($record['default'])) {
$result .= '
';
} else {
$result .= '
';
}
$result .= '
';
$result .= $elenco_plugin;
$result .= $sotto_moduli;
}
return $result;
}