isConnected()) { return; } $pageTitle = tr('Configurazione'); if (file_exists($docroot.'/include/custom/top.php')) { include_once $docroot.'/include/custom/top.php'; } else { include_once $docroot.'/include/top.php'; } // Controllo sull'esistenza di nuovi parametri di configurazione if (post('db_host') !== null) { $db_host = post('db_host'); $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 $dbo = Database::getConnection(true); // 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(); } // Salvataggio dei valori da salvare successivamente $_SESSION['osm_password'] = post('osm_password'); $_SESSION['osm_email'] = post('osm_email'); // Creazione della configurazione if ($dbo->isConnected()) { // Impostazioni di configurazione strettamente necessarie al funzionamento del progetto $backup_config = ' $db_host, '|username|' => $db_username, '|password|' => $db_password, '|database|' => $db_name, ]; $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 OpenSTAManager!').'
'.tr("Prima di procedere alla configurazione e all'installazione del software, sono necessari alcuni accorgimenti per garantire il corretto funzionamento del gestionale. Stai utilizzando la versione PHP ".phpversion()."").'.
'.tr('Le seguenti estensioni PHP devono essere abilitate dal file di configurazione _FILE_', [ '_FILE_' => 'php.ini', ]).':
'.$value.'
'.tr('Le seguenti impostazioni PHP devono essere modificate nel file di configurazione _FILE_', [ '_FILE_' => 'php.ini', ]).':
'.tr('Valore consigliato').': '.$value.'
'.tr('Le seguenti cartelle devono risultare scrivibili da parte del gestionale').':
'.$value.'
'.tr('OpenSTAManager è tutelato dalla licenza _LICENSE_!', [ '_LICENSE_' => 'GPL 3.0', ]).'