'; // Se riesco a scrivere il file di configurazione e a connettermi al db avvio la procedura di aggiornamento db if (file_put_contents("config.inc.php", $new_config)) { $dbo = new Dbo(); $dbo_state = $dbo->connect(); // Se non ci si collega al db mostro l'errore... if ($dbo_state != true) { echo '

' . _("Impossibile connettersi al database") . '

' . _("Si è verificato un'errore durante la connessione al database.") . '

' . _("Controllare di aver inserito correttamente i dati di accesso, e che il database atto ad ospitare i dati del gestionale sia esistente.") . '

' . _("Riprova") . '
'; unlink("config.inc.php"); } else redirect("index.php"); } // Se il file config non è scrivibile mostro un errore else { echo '

' . _("Permessi di scrittura mancanti") . '

' . _("Sembra che non ci siano i permessi di scrittura sul file config.inc.php") . '

;
' . _("Torna indietro") . '

' . _("Inserire il seguente testo nel file config.inc.php") . '

' . htmlentities($new_config) . '
'; } } else if (! file_exists("config.inc.php") || (! isset($db_name) || ! isset($db_username) || ! isset($db_password) || ! isset($db_engine))) { if (file_exists("config.inc.php")) { echo '

' . _("Parametri non sufficienti!") . '

' . _("L'avvio del software è fallito a causa dell'assenza di alcuni paramentri nella configurazione di base.") . '

' . _("Si prega di controllare che il file config.inc.php contenga tutti i dati inseriti durante la configurazione iniziale (con l'eccezione di password e indirizzo email amministrativi).") . '

' . _("Nel caso il problema persista, rivolgersi all'assistenza ufficiale.") . '

' . _("Riprova") . '
'; } ?>
'._(
'; // LICENZA echo '

' . _("Licenza") . '


[ '._("Versione italiana") .' ]

'._("Per proseguire, leggi e accetta la licenza") .'*
'; // PARAMETRI echo '

' ._("Configurazione") . '

' ._("Non hai ancora configurato GEST366") . '.
' ._("Configura correttamente il software con i seguenti parametri (modificabili successivamente dal file config.inc.php)") . '
'; // Form dei parametri echo '
'; // db_host echo '
' ._("Database host") . '*:
' ._("Es:") . ' localhost

'; // db_username echo '
' ._("Database username") . '*:
' ._("Es:") . ' root

'; // db_password echo '
' ._("Database password") . ':
' ._("Es:") . ' mysql

'; // db_name echo '
' ._("Nome database") . '*:
' ._("Es:") . ' gest366

'; // Password utente admin echo '
' ._("Password dell'amministratore") . ': ' ._("Valore di default") .': admin

'; // Email utente admin echo '
' ._("Email dell'utente principale") . ':
'; /* *
*
* *"._("Campi obbligatori")."

*


*
*
*/ echo '
'; } else { $is_db_installed = 'no'; $osm_installed = '0'; // Se non ci si collega al db mostro l'errore... if ($dbo_state != true) { echo '

' . _("Impossibile connettersi al database") . '

' . _("Si è verificato un'errore durante la connessione al database.") . '

' . _("Controllare di aver inserito correttamente i dati di accesso, e che il database atto ad ospitare i dati del gestionale sia esistente.") . '

' . _("Riprova") . '
'; exit(); } else { // Verifico se il database è già installato $is_db_installed = $dbo->fetchNum("SHOW TABLES LIKE 'zz_modules'"); // Verifico se il database è già stato marcato come installato se c'è la tabella `zz_impostazioni` // if( $dbo->fetchNum("DESCRIBE zz_impostazioni", 1)==true ){ if ($dbo->fetchNum("SHOW TABLES LIKE 'zz_impostazioni'") > 0) { $osm_installed = get_var("osm_installed"); } } /* * Script per l'aggiornamento del database dopo gli aggiornamenti del programma */ $file_to_search_old = ''; $file_to_search = ''; $module_to_update = ''; // prima installazione: forzo gli aggiornamenti dalla prima release a quella attuale se ho configurato il db if ($is_db_installed == 'no' && $db_name != "" && $action != 'do_update') { if ($osm_installed == '0') { // Forzo gli aggiornamenti dalla prima release file_put_contents("VERSION.old", "base"); $frase_button = _("Installa"); } } else { $frase_button = _("Aggiorna"); } // Leggo se ci sono dei file di aggiornamento dei moduli $modules = array(); $handle = opendir($docroot); while ( false !== ($file = readdir($handle)) ) { if (is_file($docroot . "/" . $file) && preg_match("/VERSION_([a-zA-Z0-9_]+)/", $docroot . "/" . $file, $m)) { array_push($modules, $m[1]); } } closedir($handle); // Cerco se ci sono aggiornamenti di moduli da eseguire e li aggiungo alla lista dei moduli da aggiornare if (sizeof($modules) > 0) { if (file_exists($docroot . "/VERSION_" . $modules[0])) { $file_to_search_old = "VERSION_" . $modules[0] . ".old"; // Se il file contenente la versione precedente del modulo non c'è, lo creo per installare il modulo da zero if (! file_exists($file_to_search_old)) { file_put_contents($file_to_search_old, 'base'); } $file_to_search = "VERSION_" . $modules[0]; $module_to_update = $modules[0]; } } // Se c'è il VERSION.old devo aggiornare prima il "core" if (file_exists($docroot . "/VERSION.old")) { $file_to_search_old = 'VERSION.old'; $file_to_search = 'VERSION'; $module_to_update = 'core'; } // Procedo all'aggiornamento solo se selezionato un db if ($db_name != '') { // Se c'è un aggiornamento da eseguire creo la tabella `updates` con i relativi aggiornamenti if ($action != 'do_update' && file_exists($file_to_search) && file_exists($file_to_search_old)) { // Creo la tabella degli aggiornamenti $dbo->query("DROP TABLE IF EXISTS updates"); if ($module_to_update == 'core') $sql = $docroot . "/update/create_updates.sql"; else $sql = $docroot . "/modules/" . $module_to_update . "/update/create_updates.sql"; $dbo->multiQuery($sql); // Leggo qual è l'ultimo aggiornamento fatto e imposto a `done` tutti gli aggiornamenti già eseguiti if ($module_to_update == 'core') { $qv = "SELECT idupdate FROM updates WHERE `version`='" . getVersion($file_to_search_old) . "'"; $rsv = $dbo->fetchArray($qv); $first_idupdate = $rsv[0]['idupdate']; } else { $qv = "SELECT `idupdate`, (SELECT `new` FROM `zz_modules` AS m WHERE name='" . $module_to_update . "') AS `new` FROM updates WHERE `version`=(SELECT `version` FROM zz_modules AS m WHERE name='" . $module_to_update . "') ORDER BY `idupdate` ASC LIMIT 0,1"; $rsv = $dbo->fetchArray($qv); if ($rsv[0]['new'] == '0') $first_idupdate = $rsv[0]['idupdate']; else $first_idupdate = '-1'; } $dbo->query("UPDATE `updates` SET `done`=1 WHERE `idupdate` <= \"" . $first_idupdate . "\""); if ($frase_button == _("Installa")) { $firstuse = "true"; } else { $firstuse = "false"; } echo '

'; if ($osm_installed == '0') echo _('Installazione'); else echo _('Aggiornamento'); echo '

'; if ($osm_installed == '0') { echo '

' . _("È la prima volta che avvii GEST366 e non hai ancora inizializzato il database.") . '

'; } echo '

' . str_replace(array("_VERSIONOLD_", "_VERSION_", "_MODULE_"), array(getVersion($file_to_search_old), getVersion($file_to_search), $module_to_update), _("È necessario eseguire l'aggiornamento del database dalla versione _VERSIONOLD_ alla _VERSION_ del modulo _MODULE_")) . '.

' . _('Premi il tasto') . ' "' . $frase_button . '" ' . _("per procedere con l'aggiornamento") . ':

'; } /* * Aggiornamento tramite ajax */ if ($action == 'do_update') { // Logout se non eseguito dall'utente logout(); // Seleziono tutti gli aggiornamenti successivi all'attuale e nel ciclo for() eseguo gli script ad uno ad uno $qm = "SELECT * FROM updates WHERE `done`=0 ORDER BY idupdate ASC"; $rsm = $dbo->fetchArray($qm); $nm = sizeof($rsm); // Nessun aggiornamento database disponibile if ($nm == 0 && ! isset($_GET['continue'])) { echo '

' . str_replace("_VERSION_", getVersion(), _("GEST366 è aggiornato alla versione _VERSION_")) . '

'; // Rimostro la finestra di login echo ""; } // Aggiornamento appena terminato else if ($nm == 0 && isset($_GET['continue'])) { echo "

" . str_replace(array("_VERSIONOLD_", "_VERSION_"), array(getVersion($file_to_search_old), getVersion($file_to_search)), _("Aggiornamento del modulo _VERSIONOLD_ alla versione _VERSION_ completato")) . "

"; // Imposto la versione corrente nella tabella `zz_modules` $dbo->query("UPDATE zz_modules SET `version`='" . getVersion($file_to_search) . "', `new`=0 WHERE name=\"" . $module_to_update . "\" OR parent=( SELECT id FROM (SELECT id FROM `zz_modules` WHERE name=\"" . $module_to_update . "\") AS tmp )"); // Rimuovo file .old dopo l'aggiornamento @unlink($file_to_search_old); // Rimuovo file VERSION_nomemodulo dopo aggiornamento if ($module_to_update != 'core') @unlink($file_to_search); // Rimostro la finestra di login echo "\n"; // Istruzioni per la prima installazione if ($_GET['firstuse'] == 'true') { echo '

' . _("Puoi procedere al login con i seguenti dati:") . '

' . _("Username") . ': admin

' . _("Password") . ': ' . $_SESSION['osm_password'] . '

' . _("È fortemente consigliato rimuovere i permessi di scrittura dal file config.inc.php") . '.

'; } // Aggiornamento all'ultima release della versione e compatibilità moduli $dbo->query("UPDATE `zz_modules` SET `compatibility`='" . getVersion() . "', `version`='" . getVersion() . "' WHERE `default`='1';"); // Rimuovo il flag `new` a tutti i moduli $dbo->query("UPDATE `zz_modules` SET `new`=0"); // Imposto che il db di GEST366 è già stato installato $dbo->query("UPDATE `zz_impostazioni` SET `valore`='1' WHERE nome='osm_installed'"); // Imposto la password di admin che l'utente ha selezionato all'inizio if (isset($_SESSION['osm_password'])) { if($_SESSION['osm_password'] != ""){ $dbo->query("UPDATE `zz_utenti` SET `password`=MD5(\"" . $_SESSION['osm_password'] . "\") WHERE `username`='admin' "); } unset($_SESSION["osm_password"]); } if (isset($_SESSION['osm_email'])) { $dbo->query("UPDATE `zz_utenti` SET `email`=\"" . $_SESSION['osm_email'] . "\" WHERE `username`='admin' "); unset($_SESSION['osm_email']); } unset($_SESSION['errors']); } // Aggiornamento in progresso else { // Esecuzione query release if ($rsm[0]['filename'] != '') { if ($module_to_update == 'core') $sql = $docroot . "/update/" . $rsm[0]['filename']; else $sql = $docroot . "/modules/" . $module_to_update . "/update/" . $rsm[0]['filename']; // Leggo quanti aggiornamenti totali ci sono da fare // $rsc = $dbo->fetchArray("SELECT COUNT(idupdate) AS da_fare FROM `updates` WHERE `idupdate` > (SELECT `idupdate` FROM updates WHERE `version`='" . getVersion($file_to_search_old) . "') AND `idupdate`<=(SELECT `idupdate` FROM updates WHERE `version`='" . getVersion() . "')"); $rsc = $dbo->fetchArray("SELECT COUNT(idupdate) AS da_fare FROM `updates` WHERE done='0'"); $da_fare = $rsc[0]['da_fare']; // Leggo quanti aggiornamenti sono stati fatti // $rsc = $dbo->fetchArray("SELECT COUNT(idupdate) AS fatti FROM `updates` WHERE `idupdate` > (SELECT `idupdate` FROM updates WHERE `version`='" . getVersion($file_to_search_old) . "') AND `idupdate`< '" . $rsm[0]['idupdate'] . "'"); $rsc = $dbo->fetchArray("SELECT COUNT(idupdate) AS fatti FROM `updates` WHERE done='1'"); // $fatti=$fatti - $da_fare ; $fatti = $rsc[0]['fatti'] + 1; $totali = ($fatti + $da_fare) -1; $percent = intval($fatti / $totali * 100); $dbo->multiQuery($sql); echo ' '; } // Esecuzione script release if ($rsm[0]['script'] != '') { if ($module_to_update == 'core') $script = $docroot . "/update/" . $rsm[0]['script']; else $script = $docroot . "/modules/" . $module_to_update . "/update/" . $rsm[0]['script']; if (file_exists($script)) { echo '\n"; include_once ($script); } } // Imposto questo aggiornamento come eseguito e ricarico il div per fare il successivo $dbo->query("UPDATE `updates` SET `done`=1 WHERE idupdate=\"" . $rsm[0]['idupdate'] . "\""); echo "\n"; } exit(); } } } ?>