diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index f3a9d9d7b57..3a966b0f565 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -58,424 +58,462 @@ dolibarr_install_syslog("etape2: Entering etape2.php page"); /* -* View -*/ + * View + */ pHeader($langs->trans("CreateDatabaseObjects"),"etape4"); if ($_POST["action"] == "set") { - print '
| "; - print $langs->trans("ServerConnection")." : $dolibarr_main_db_host | ".$langs->trans("OK")." | |
| Erreur lors de la creation de : $dolibarr_main_db_name | ".$langs->trans("Error")." | |
| "; + print $langs->trans("ServerConnection")." : $dolibarr_main_db_host | ".$langs->trans("OK")." | |
| Erreur lors de la creation de : $dolibarr_main_db_name | ".$langs->trans("Error")." | |
| '.$langs->trans("DatabaseVersion").' | '; - print ''.$version.' | '.join('.',$versionarray).' | '; - } + // Affiche version + if ($ok) + { + $version=$db->getVersion(); + $versionarray=$db->getVersionArray(); + print '
| '.$langs->trans("DatabaseVersion").' | '; + print ''.$version.' | '.join('.',$versionarray).' | '; + } $requestnb=0; - /************************************************************************************** - * - * Chargement fichiers tables/*.sql (non *.key.sql) - * A faire avant les fichiers *.key.sql - * - ***************************************************************************************/ - if ($ok) - { - // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) - $dir = "mysql/tables/"; + // To disable some code + $createtables=1; + $createkeys=1; + $createfunctions=1; + $createdata=1; - $ok = 0; - $handle=opendir($dir); - dolibarr_install_syslog("Open tables directory ".$dir." handle=".$handle,LOG_DEBUG); - $tablefound = 0; - while (($file = readdir($handle))!==false) - { - if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && ! preg_match('/\.key\.sql$/i',$file)) - { - $tablefound++; + /************************************************************************************** + * + * Chargement fichiers tables/*.sql (non *.key.sql) + * A faire avant les fichiers *.key.sql + * + ***************************************************************************************/ + if ($ok && $createtables) + { + // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) + $dir = "mysql/tables/"; - $name = substr($file, 0, strlen($file) - 4); - $buffer = ''; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buf = fgets($fp, 4096); - if (substr($buf, 0, 2) <> '--') - { - if ($choix != 1) // All databases except Mysql - { - $buf=$db->convertSQLFromMysql($buf); - } + $ok = 0; + $handle=opendir($dir); + dolibarr_install_syslog("Open tables directory ".$dir." handle=".$handle,LOG_DEBUG); + $tablefound = 0; + $tabledata=array(); + while (($file = readdir($handle))!==false) + { + if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && ! preg_match('/\.key\.sql$/i',$file)) + { + $tablefound++; + $tabledata[]=$file; + } + } + closedir($handle); - $buffer .= $buf; - } - } - fclose($fp); - - $buffer=trim($buffer); - - //print "
| Creation de la table $name/td>"; - $requestnb++; - if ($conf->file->character_set_client == "UTF-8") + // Sort list of data files on alphabetical order (load order is important) + sort($tabledata); + foreach($tabledata as $file) + { + $name = substr($file, 0, strlen($file) - 4); + $buffer = ''; + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buf = fgets($fp, 4096); + if (substr($buf, 0, 2) <> '--') { - $buffer=utf8_encode($buffer); + if ($choix != 1) // All databases except Mysql + { + $buf=$db->convertSQLFromMysql($buf); + } + + $buffer .= $buf; + } + } + fclose($fp); + + $buffer=trim($buffer); + + //print " | ||
| Creation de la table $name/td>"; + $requestnb++; + if ($conf->file->character_set_client == "UTF-8") + { + $buffer=utf8_encode($buffer); + } + + dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + if ($db->query($buffer)) + { + // print " | OK requete ==== $buffer | Deja existante | "; + } + else + { + print "
| ".$langs->trans("CreateTableAndPrimaryKey",$name);
+ print " \n".$langs->trans("Request").' '.$requestnb.' : '.$buffer; + print "\n | ";
+ print "".$langs->trans("Error")." ".$db->errno()." ".$db->error()." | |
| ".$langs->trans("CreateTableAndPrimaryKey",$name); + print " | "; + print "".$langs->trans("Error")." Failed to open file ".$dir.$file." | |
| '; + print $langs->trans("TablesAndPrimaryKeysCreation").' | '.$langs->trans("OK").' | |
| ".$langs->trans("ErrorFailedToFindSomeFiles",$dir)." | ".$langs->trans("Error")." | |
| Creation de la table $name | "; + $buffer = ''; + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buf = fgets($fp, 4096); + + // Cas special de lignes autorisees pour certaines versions uniquement + if ($choix == 1 && preg_match('/^--\sV([0-9\.]+)/i',$buf,$reg)) + { + $versioncommande=explode('.',$reg[1]); + //print var_dump($versioncommande); + //print var_dump($versionarray); + if (sizeof($versioncommande) && sizeof($versionarray) + && versioncompare($versioncommande,$versionarray) <= 0) + { + // Version qualified, delete SQL comments + $buf=preg_replace('/^--\sV([0-9\.]+)/i','',$buf); + //print "Ligne $i qualifiee par version: ".$buf.'||
| Creation des cles et index de la table $name: '$buffer' | "; + $requestnb++; + if ($conf->file->character_set_client == "UTF-8") + { + $buffer=utf8_encode($buffer); + } + + dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + if ($db->query($buffer)) + { + //print "OK requete ==== $buffer | Deja existante | "; + $key_exists = 1; + } + else + { + print "
| ".$langs->trans("CreateOtherKeysForTable",$name);
+ print " \n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); + print "\n | ";
+ print "".$langs->trans("Error")." ".$db->errno()." ".$db->error()." | |
| ".$langs->trans("CreateOtherKeysForTable",$name); + print " | "; + print "".$langs->trans("Error")." Failed to open file ".$dir.$file." | |
| '; + print $langs->trans("OtherKeysCreation").' | '.$langs->trans("OK").' | OK requete ==== $buffer | "; - } - else - { - if ($db->errno() == 'DB_ERROR_TABLE_ALREADY_EXISTS' || - $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS') - { - //print "Deja existante | "; - } - else - { - print "
| ".$langs->trans("CreateTableAndPrimaryKey",$name);
- print " \n".$langs->trans("Request").' '.$requestnb.' : '.$buffer; - print "\n | ";
- print "".$langs->trans("Error")." ".$db->errno()." ".$db->error()." | |
| ".$langs->trans("CreateTableAndPrimaryKey",$name); - print " | "; - print "".$langs->trans("Error")." Failed to open file ".$dir.$file." | |
| Insertion ligne : $buffer |
+ }
+ else
+ {
+ $ok = 0;
+ print $langs->trans("ErrorSQL")." : ".$db->errno()." - '$buffer' - ".$db->lastqueryerror()." "; + } + } + } + } - if ($tablefound) - { - if ($error == 0) - { - print ' | |
| '; - print $langs->trans("TablesAndPrimaryKeysCreation").' | '.$langs->trans("OK").' | |
| ".$langs->trans("ErrorFailedToFindSomeFiles",$dir)." | ".$langs->trans("Error")." | |
| ".$langs->trans("FunctionsCreation")." | "; + if ($ok) + { + print "".$langs->trans("OK")." | ".$langs->trans("Error")." | "; + $ok = 1 ; + } + + } + } - /*************************************************************************************** - * - * Chargement fichiers tables/*.key.sql - * A faire apres les fichiers *.sql - * - ***************************************************************************************/ - if ($ok) - { - // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) - $dir = "mysql/tables/"; + /*************************************************************************************** + * + * Chargement fichier data.sql + * + ***************************************************************************************/ + if ($ok && $createdata) + { + // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) + $dir = "mysql/data/"; - $okkeys = 0; - $handle=opendir($dir); - dolibarr_install_syslog("Open keys directory ".$dir." handle=".$handle,LOG_DEBUG); - while (($file = readdir($handle))!==false) - { - if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file) && preg_match('/\.key\.sql$/i',$file)) - { - $name = substr($file, 0, strlen($file) - 4); - //print "
| Creation de la table $name | "; - $buffer = ''; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buf = fgets($fp, 4096); + // Insert data + $handle=opendir($dir); + dolibarr_install_syslog("Open directory data ".$dir." handle=".$handle,LOG_DEBUG); + $tablefound = 0; + $tabledata=array(); + while (($file = readdir($handle))!==false) + { + if (preg_match('/\.sql$/i',$file) && preg_match('/^llx_/i',$file)) + { + $tablefound++; + $tabledata[]=$file; + } + } + closedir($handle); - // Cas special de lignes autorisees pour certaines versions uniquement - if ($choix == 1 && preg_match('/^--\sV([0-9\.]+)/i',$buf,$reg)) - { - $versioncommande=explode('.',$reg[1]); - //print var_dump($versioncommande); - //print var_dump($versionarray); - if (sizeof($versioncommande) && sizeof($versionarray) - && versioncompare($versioncommande,$versionarray) <= 0) - { - // Version qualified, delete SQL comments - $buf=preg_replace('/^--\sV([0-9\.]+)/i','',$buf); - //print "Ligne $i qualifiee par version: ".$buf.'||
| Creation des cles et index de la table $name: '$buffer' | "; - $requestnb++; - if ($conf->file->character_set_client == "UTF-8") + //dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); + if ($db->query($buffer)) + { + $ok = 1; + } + else + { + if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { - $buffer=utf8_encode($buffer); + //print "||
| Insertion ligne : $buffer | ";
}
+ else
+ {
+ $ok = 0;
+ print $langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()." "; + } + } + } + } + fclose($fp); + } + } - dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG); - if ($db->query($buffer)) - { - //print " | OK requete ==== $buffer | Deja existante | "; - $key_exists = 1; - } - else - { - print "
| ".$langs->trans("CreateOtherKeysForTable",$name);
- print " \n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); - print "\n | ";
- print "".$langs->trans("Error")." ".$db->errno()." ".$db->error()." | |
| ".$langs->trans("CreateOtherKeysForTable",$name); - print " | "; - print "".$langs->trans("Error")." Failed to open file ".$dir.$file." | |
| ".$langs->trans("ReferenceDataLoading")." | "; + if ($ok) + { + print "".$langs->trans("OK")." | ".$langs->trans("Error")." | "; + $ok = 1 ; + } + } + print '