'--') { $buf = preg_replace('/--(.+)*/', '', $buf); $buffer .= $buf; } } fclose($fp); $buffer = trim($buffer); if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli') // For Mysql 5.5+, we must replace type=innodb with ENGINE=innodb { $buffer = preg_replace('/type=innodb/i', 'ENGINE=innodb', $buffer); } else if ($conf->db->type == 'mssql') { $buffer = preg_replace('/type=innodb/i', '', $buffer); $buffer = preg_replace('/ENGINE=innodb/i', '', $buffer); } // Replace the prefix tables if ($dolibarr_main_db_prefix != 'llx_') { $buffer = preg_replace('/llx_/i', $dolibarr_main_db_prefix, $buffer); } //print "Creation de la table $name/td>"; $requestnb++; $resql = $db->query($buffer, 0, 'dml'); if ($resql) { // print "OK requete ==== $buffer"; $db->free($resql); } 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.'
Executed query : '.$db->lastquery; print "\n"; print ''.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().''; $error++; } } } else { print "".$langs->trans("CreateTableAndPrimaryKey", $name); print ""; print ''.$langs->trans("Error").' Failed to open file '.$dir.$file.''; $error++; } } if ($tablefound) { if ($error == 0) { print ''; print $langs->trans("TablesAndPrimaryKeysCreation").'Ok'; $ok = 1; } } else { print ''.$langs->trans("ErrorFailedToFindSomeFiles", $dir).'Error'; } // We always choose in mysql directory (Conversion is done by driver to translate SQL syntax) $okkeys = 0; $handle = opendir($dir); $tablefound = 0; $tabledata = array(); if (is_resource($handle)) { while (($file = readdir($handle)) !== false) { if (preg_match('/\.sql$/i', $file) && preg_match('/^llx_/i', $file) && preg_match('/\.key\.sql$/i', $file)) { if (strpos($file, 'reception') !== false || strpos($file, 'commande_fournisseur_dispatch') !== false){ $tablefound++; $tabledata[] = $file; } } } closedir($handle); } // Sort list of sql files on alphabetical order (load order is important) sort($tabledata); foreach ($tabledata as $file) { $name = substr($file, 0, dol_strlen($file) - 4); //print "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 (count($versioncommande) && count($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.'
'; } } if ($choix == 2 && preg_match('/^--\sPOSTGRESQL\sV([0-9\.]+)/i', $buf, $reg)) { $versioncommande = explode('.', $reg[1]); //print var_dump($versioncommande); //print var_dump($versionarray); if (count($versioncommande) && count($versionarray) && versioncompare($versioncommande, $versionarray) <= 0) { // Version qualified, delete SQL comments $buf = preg_replace('/^--\sPOSTGRESQL\sV([0-9\.]+)/i', '', $buf); //print "Ligne $i qualifiee par version: ".$buf.'
'; } } // Ajout ligne si non commentaire if (!preg_match('/^--/i', $buf)) $buffer .= $buf; } fclose($fp); // Si plusieurs requetes, on boucle sur chaque $listesql = explode(';', $buffer); foreach ($listesql as $req) { $buffer = trim($req); if ($buffer) { // Replace the prefix tables if ($dolibarr_main_db_prefix != 'llx_') { $buffer = preg_replace('/llx_/i', $dolibarr_main_db_prefix, $buffer); } //print "Creation des cles et index de la table $name: '$buffer'"; $requestnb++; $resql = $db->query($buffer, 0, 'dml'); if ($resql) { //print "OK requete ==== $buffer"; $db->free($resql); } else { if ($db->errno() == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_CANNOT_CREATE' || $db->errno() == 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS' || $db->errno() == 'DB_ERROR_TABLE_OR_KEY_ALREADY_EXISTS' || preg_match('/duplicate key name/i', $db->error())) { //print "Deja existante"; $key_exists = 1; } else { print "".$langs->trans("CreateOtherKeysForTable", $name); print "
\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); print "\n"; print ''.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().''; $error++; } } } } } else { print "".$langs->trans("CreateOtherKeysForTable", $name); print ""; print ''.$langs->trans("Error")." Failed to open file ".$dir.$file.""; $error++; } } if ($tablefound && $error == 0) { print ''; print $langs->trans("OtherKeysCreation").'Ok'; $okkeys = 1; }