. */ include_once __DIR__.'/../../core.php'; $valid_config = isset($db_host) && isset($db_name) && isset($db_username) && isset($db_password); // Gestione del file di configurazione if (file_exists('config.inc.php') && $valid_config && $dbo->isConnected()) { return; } $pageTitle = tr('Configurazione'); include_once App::filepath('include|custom|', 'top.php'); // Controllo sull'esistenza di nuovi parametri di configurazione if (post('db_host') !== null) { $db_host = $_POST['db_host']; // Fix per evitare la conversione in numero $db_name = post('db_name'); $db_username = post('db_username'); $db_password = post('db_password'); $valid_config = isset($db_host) && isset($db_name) && isset($db_username) && isset($db_password); // Generazione di una nuova connessione al database try { $dbo = Database::getConnection(true, [ 'db_host' => $db_host, 'db_name' => $db_name, 'db_username' => $db_username, 'db_password' => $db_password, ]); } catch (Exception $e) { } // Test della configurazione if (post('test') !== null) { ob_end_clean(); if ($dbo->isConnected()) { $requirements = [ 'SELECT', 'INSERT', 'UPDATE', 'CREATE', 'ALTER', 'DROP', ]; $db_host = str_replace('_', '\_', $db_name); $db_name = str_replace('_', '\_', $db_name); $db_username = str_replace('_', '\_', $db_name); $results = $dbo->fetchArray('SHOW GRANTS FOR CURRENT_USER'); foreach ($results as $result) { $privileges = current($result); if ( str_contains($privileges, ' ON `'.$db_name.'`.*') || str_contains($privileges, ' ON *.*') ) { $pieces = explode(', ', explode(' ON ', str_replace('GRANT ', '', $privileges))[0]); // Permessi generici sul database if (in_array('ALL', $pieces) || in_array('ALL PRIVILEGES', $pieces)) { $requirements = []; break; } // Permessi specifici sul database foreach ($requirements as $key => $value) { if (in_array($value, $pieces)) { unset($requirements[$key]); } } } } // Permessi insufficienti if (!empty($requirements)) { $state = 1; } // Permessi completi else { $state = 2; } } // Connessione fallita else { $state = 0; } echo $state; exit(); } // Creazione della configurazione if ($dbo->isConnected()) { $new_config = file_get_contents(DOCROOT.'/config.example.php'); $decimals = post('decimal_separator'); $thousands = post('thousand_separator'); $decimals = $decimals == 'dot' ? '.' : ','; $thousands = $thousands == 'dot' ? '.' : $thousands; $thousands = $thousands == 'comma' ? ',' : $thousands; $values = [ '|host|' => $db_host, '|username|' => $db_username, '|password|' => $db_password, '|database|' => $db_name, '|lang|' => post('lang'), '|timestamp|' => post('timestamp_format'), '|date|' => post('date_format'), '|time|' => post('time_format'), '|decimals|' => $decimals, '|thousands|' => $thousands, ]; $new_config = str_replace(array_keys($values), $values, $new_config); // Controlla che la scrittura del file di configurazione sia andata a buon fine $creation = file_put_contents('config.inc.php', $new_config); if (!$creation) { echo '
'.tr('Sembra che non ci siano i permessi di scrittura sul file _FILE_', [ '_FILE_' => 'config.inc.php', ]).'
'.tr('Inserire il seguente testo nel file _FILE_', [ '_FILE_' => 'config.inc.php', ]).'
'.htmlentities($new_config).'
'.tr("Si è verificato un'errore durante la connessione al database").'.
'.tr('Controllare di aver inserito correttamente i dati di accesso, e che il database atto ad ospitare i dati del gestionale sia esistente').'.
'.tr('Riprova').''.tr("L'avvio del software è fallito a causa dell'assenza di alcuni paramentri nella configurazione di base").'.
'.tr("Si prega di controllare che il file _FILE_ contenga tutti i dati inseriti durante la configurazione iniziale (con l'eccezione di password e indirizzo email amministrativi)", [ '_FILE_' => 'config.inc.php', ]).'.
'.tr("Nel caso il problema persista, rivolgersi all'assistenza ufficiale").'.
'.tr('Riprova').''.tr('Benvenuto in _NAME_!', [ '_NAME_' => 'OpenSTAManager', ]).'
'.tr("Prima di procedere alla configurazione e all'installazione del software, sono necessari alcuni accorgimenti per garantire il corretto funzionamento del gestionale").'.
'.tr('Le estensioni e impostazioni PHP possono essere personalizzate nel file di configurazione _FILE_', [ '_FILE_' => 'php.ini', ]).'.
'.tr('OpenSTAManager è tutelato dalla licenza _LICENSE_!', [ '_LICENSE_' => 'GPL 3.0', ]).'