diff --git a/modules/backups/edit.php b/modules/backups/edit.php index 8c478a513..32f10da2b 100644 --- a/modules/backups/edit.php +++ b/modules/backups/edit.php @@ -115,6 +115,8 @@ echo ' $upload_max_filesize = ini_get('upload_max_filesize'); $max_execution_time = ini_get('max_execution_time'); + +if (setting('Permetti il ripristino di backup da file esterni')) { echo '
@@ -135,7 +137,10 @@ echo '
- + '; +} + +echo ' '; // Lettura file di backup diff --git a/modules/impostazioni/actions.php b/modules/impostazioni/actions.php index ea064bdd3..d772d620f 100644 --- a/modules/impostazioni/actions.php +++ b/modules/impostazioni/actions.php @@ -13,22 +13,26 @@ switch (filter('op')) { $value = implode(',', $value); } - $is_valid = Settings::setValue($id, $value); + //Se è un'impostazione editabile + if ($result->editable){ - if (!$is_valid) { - // integer - if ($result['tipo'] == 'integer') { - flash()->error(tr('Il valore inserito del parametro _NAME_ deve essere un numero intero!', [ - '_NAME_' => '"'.$result['nome'].'"', - ])); - } + $is_valid = Settings::setValue($id, $value); - // list - // verifico che il valore scelto sia nella lista enumerata nel db - elseif (preg_match("/list\[(.+?)\]/", $result['tipo'], $m)) { - flash()->error(tr('Il valore inserito del parametro _NAME_ deve essere un compreso tra i valori previsti!', [ - '_NAME_' => '"'.$result['nome'].'"', - ])); + if (!$is_valid) { + // integer + if ($result['tipo'] == 'integer') { + flash()->error(tr('Il valore inserito del parametro _NAME_ deve essere un numero intero!', [ + '_NAME_' => '"'.$result['nome'].'"', + ])); + } + + // list + // verifico che il valore scelto sia nella lista enumerata nel db + elseif (preg_match("/list\[(.+?)\]/", $result['tipo'], $m)) { + flash()->error(tr('Il valore inserito del parametro _NAME_ deve essere un compreso tra i valori previsti!', [ + '_NAME_' => '"'.$result['nome'].'"', + ])); + } } } diff --git a/modules/impostazioni/init.php b/modules/impostazioni/init.php index 9e21be1ae..0affd50ac 100644 --- a/modules/impostazioni/init.php +++ b/modules/impostazioni/init.php @@ -3,5 +3,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $records = $dbo->fetchArray('SELECT * FROM `zz_settings` WHERE `sezione` = (SELECT sezione FROM `zz_settings` WHERE `id` = '.prepare($id_record).') AND `editable` = 1 ORDER BY `order`'); + $records = $dbo->fetchArray('SELECT * FROM `zz_settings` WHERE `sezione` = (SELECT sezione FROM `zz_settings` WHERE `id` = '.prepare($id_record).') ORDER BY `order`'); } diff --git a/modules/viste/edit.php b/modules/viste/edit.php index 44dc0fa09..1293b73eb 100644 --- a/modules/viste/edit.php +++ b/modules/viste/edit.php @@ -4,8 +4,6 @@ include_once __DIR__.'/../../core.php'; use Models\Module; -$enable_readonly = !setting('Modifica Viste di default'); - echo '
diff --git a/src/Settings.php b/src/Settings.php index 48751e9c7..6df531878 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -153,7 +153,7 @@ class Settings } $result = ' - {[ "type": "select", "label": "'.$setting->nome.'", "name": "setting['.$setting->id.']", "values": '.json_encode($list).', "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; + {[ "type": "select", "label": "'.$setting->nome.'", "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "values": '.json_encode($list).', "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; } // Lista multipla @@ -169,25 +169,25 @@ class Settings } $result = ' - {[ "type": "select", "multiple": 1, "label": "'.$setting->nome.'", "name": "setting['.$setting->id.'][]", "values": '.json_encode($list).', "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; + {[ "type": "select", "multiple": 1, "label": "'.$setting->nome.'", "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.'][]", "values": '.json_encode($list).', "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; } // Lista da query elseif (preg_match('/^query=(.+?)$/', $setting->tipo, $m)) { $result = ' - {[ "type": "select", "label": "'.$setting->nome.'", "name": "setting['.$setting->id.']", "values": "'.str_replace('"', '\"', $setting->tipo).'", "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; + {[ "type": "select", "label": "'.$setting->nome.'", "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "values": "'.str_replace('"', '\"', $setting->tipo).'", "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; } // Boolean (checkbox) elseif ($setting->tipo == 'boolean') { $result = ' - {[ "type": "checkbox", "label": "'.$setting->nome.'", "name": "setting['.$setting->id.']", "placeholder": "'.tr('Attivo').'", "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; + {[ "type": "checkbox", "label": "'.$setting->nome.'", "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "placeholder": "'.tr('Attivo').'", "value": "'.$setting->valore.'", "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; } // Campi di default elseif (in_array($setting->tipo, ['textarea', 'ckeditor', 'timestamp', 'date', 'time'])) { $result = ' - {[ "type": "'.$setting->tipo.'", "label": "'.$setting->nome.'", "name": "setting['.$setting->id.']", "value": '.json_encode($setting->valore).', "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; + {[ "type": "'.$setting->tipo.'", "label": "'.$setting->nome.'", "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "value": '.json_encode($setting->valore).', "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; } // Campo di testo @@ -198,7 +198,7 @@ class Settings $tipo = $numerico ? 'number' : 'text'; $result = ' - {[ "type": "'.$tipo.'", "label": "'.$setting->nome.'", "name": "setting['.$setting->id.']", "value": "'.$setting->valore.'"'.($numerico && $setting->tipo == 'integer' ? ', "decimals": 0' : '').', "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; + {[ "type": "'.$tipo.'", "label": "'.$setting->nome.'", "readonly": "'.!$setting->editable.'", "name": "setting['.$setting->id.']", "value": "'.$setting->valore.'"'.($numerico && $setting->tipo == 'integer' ? ', "decimals": 0' : '').', "required": "'.intval($required).'", "help": "'.$setting->help.'" ]}'; } return $result; diff --git a/update/2_4_14.sql b/update/2_4_14.sql new file mode 100644 index 000000000..5fb20044c --- /dev/null +++ b/update/2_4_14.sql @@ -0,0 +1,15 @@ +-- Eliminazione impostazione non utilizzata +DELETE FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Modifica Viste di default'; + +UPDATE `zz_settings` SET `sezione` = 'Backup' WHERE `zz_settings`.`nome` = 'Numero di backup da mantenere'; +UPDATE `zz_settings` SET `sezione` = 'Backup' WHERE `zz_settings`.`nome` = 'Backup automatico'; + +UPDATE `zz_settings` SET `sezione` = 'Aggiornamenti' WHERE `zz_settings`.`nome` = 'Attiva aggiornamenti'; +UPDATE `zz_settings` SET `sezione` = 'API' WHERE `zz_settings`.`nome` = 'apilayer API key for VAT number'; +UPDATE `zz_settings` SET `sezione` = 'API' WHERE `zz_settings`.`nome` = 'Google Maps API key'; + +-- Abilita la possibilità di ripristinare backup da archivi esterni al gestionale +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `help`) VALUES (NULL, 'Permetti il ripristino di backup da file esterni', '1', 'boolean', '0', 'Backup', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, 'Abilita la possibilità di ripristinare backup da archivi esterni al gestionale.'); + + +UPDATE `zz_settings` SET `help` = 'Esegue automaticamente un backup completo del gestionale al primo accesso della giornata.' WHERE `zz_settings`.`nome` = 'Backup automatico'; \ No newline at end of file