From ef933c09d23a68d71c9e6bdb1a80c465e51479d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Fri, 18 Mar 2005 00:57:30 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20On=20cr=E9e=20les=20fonctions=20si=20le?= =?UTF-8?q?=20fichier=20functions.sql=20existe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/install/etape2.php | 633 ++++++++++++++++++++-------------- pgsql/functions/functions.sql | 2 +- 2 files changed, 374 insertions(+), 261 deletions(-) diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index fb488610828..26309b921b6 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -1,6 +1,6 @@ <?php -/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +20,7 @@ * $Source$ * */ + include_once("./inc.php"); $setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:$langcode); @@ -33,296 +34,408 @@ $etape = 2; if (file_exists($conffile)) { - include_once($conffile); + include_once($conffile); } if($dolibarr_main_db_type == "mysql") { - require ($dolibarr_main_document_root . "/lib/mysql.lib.php"); - $choix=1; + require ($dolibarr_main_document_root . "/lib/mysql.lib.php"); + $choix=1; } else { - require ($dolibarr_main_document_root . "/lib/pgsql.lib.php"); - require ($dolibarr_main_document_root . "/lib/grant.postgres.php"); - $choix=2; + require ($dolibarr_main_document_root . "/lib/pgsql.lib.php"); + require ($dolibarr_main_document_root . "/lib/grant.postgres.php"); + $choix=2; } - + require ($dolibarr_main_document_root . "/conf/conf.class.php"); if ($_POST["action"] == "set") { - print '<h2>'.$langs->trans("Database").'</h2>'; - - print '<table cellspacing="0" cellpadding="4" border="0" width="100%">'; - $error=0; - - $conf = new Conf();// on pourrait s'en passer - $conf->db->host = $dolibarr_main_db_host; - $conf->db->name = $dolibarr_main_db_name; - $conf->db->user = $dolibarr_main_db_user; - $conf->db->pass = $dolibarr_main_db_pass; - $db = new DoliDb(); - $ok = 0; - if ($db->connected == 1) + print '<h2>'.$langs->trans("Database").'</h2>'; + + print '<table cellspacing="0" cellpadding="4" border="0" width="100%">'; + $error=0; + + $conf = new Conf();// on pourrait s'en passer + $conf->db->host = $dolibarr_main_db_host; + $conf->db->name = $dolibarr_main_db_name; + $conf->db->user = $dolibarr_main_db_user; + $conf->db->pass = $dolibarr_main_db_pass; + $db = new DoliDb(); + $ok = 0; + if ($db->connected == 1) { - print "<tr><td>"; - print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td>".$langs->trans("OK")."</td></tr>"; - $ok = 1 ; + print "<tr><td>"; + print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td>".$langs->trans("OK")."</td></tr>"; + $ok = 1 ; } - else + else { - print "<tr><td>Erreur lors de la cr�ation de : $dolibarr_main_db_name</td><td>".$langs->trans("Error")."</td></tr>"; + print "<tr><td>Erreur lors de la cr�ation de : $dolibarr_main_db_name</td><td>".$langs->trans("Error")."</td></tr>"; } - /*************************************************************************************** - * - * - */ - if ($ok) + + if ($ok) { - if($db->database_selected == 1) - { - - dolibarr_syslog("Connexion r�ussie � la base : $dolibarr_main_db_name"); - } - else - { - $ok = 0 ; - } + if($db->database_selected == 1) + { + + dolibarr_syslog("Connexion r�ussie � la base : $dolibarr_main_db_name"); + } + else + { + $ok = 0 ; + } } - /*************************************************************************************** - * - * - */ - if ($ok) + + + /*************************************************************************************** + * + * Chargement fichiers tables/*.sql (non *.key.sql) + * A faire avant les fichiers *.key.sql + * + ***************************************************************************************/ + if ($ok) { - $ok = 0; - if ($choix == 1) - { - $dir = "../../mysql/tables/"; - } - else - { - $dir = "../../pgsql/tables/"; - } - - $handle=opendir($dir); - $table_exists = 0; - while (($file = readdir($handle))!==false) - { - if (substr($file, strlen($file) - 4) == '.sql' && substr($file,0,4) == 'llx_' && substr($file, - 8) <> '.key.sql') - { - $name = substr($file, 0, strlen($file) - 4); - //print "<tr><td>Cr�ation de la table $name</td>"; - $buffer = ''; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buf = fgets($fp, 4096); - if (substr($buf, 0, 2) <> '--') - { - $buffer .= $buf; - } - } - fclose($fp); - } - - if ($db->query($buffer)) - { - //print "<td>OK requete ==== $buffer</td></tr>"; - } - else - { - if ($db->errno() == DB_ERROR_TABLE_ALREADY_EXISTS) - { - //print "<td>D�j� existante</td></tr>"; - $table_exists = 1; - } - else - { - print "<tr><td>Cr�ation de la table $name</td>"; - print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; - $error++; - } - } - } - - } - - //droit sur les tables - if ($db->query($grant_query)) - { - print "<tr><td>Grant User '$nom' </td><td>".$langs->trans("OK")."</td></tr>"; - } - closedir($handle); - - if ($error == 0) - { - print '<tr><td>'; - print $langs->trans("TablesAndPrimaryKeyCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; - $ok = 1; - } + if ($choix==1) $dir = "../../mysql/tables/"; + else $dir = "../../pgsql/tables/"; + + $ok = 0; + $handle=opendir($dir); + $table_exists = 0; + while (($file = readdir($handle))!==false) + { + if (substr($file, strlen($file) - 4) == '.sql' && substr($file,0,4) == 'llx_' && substr($file, -8) <> '.key.sql') + { + $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 .= $buf; + } + } + fclose($fp); + } + + //print "<tr><td>Cr�ation de la table $name/td>"; + + if ($db->query($buffer)) + { + //print "<td>OK requete ==== $buffer</td></tr>"; + } + else + { + if ($db->errno() == DB_ERROR_TABLE_ALREADY_EXISTS) + { + //print "<td>D�j� existante</td></tr>"; + $table_exists = 1; + } + else + { + print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name)."</td>"; + print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; + $error++; + } + } + } + + } + closedir($handle); + + if ($error == 0) + { + print '<tr><td>'; + print $langs->trans("TablesAndPrimaryKeysCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; + $ok = 1; + } + } + + + /*************************************************************************************** + * + * Chargement fichiers tables/*.key.sql + * A faire apr�s les fichiers *.sql + * + ***************************************************************************************/ + if ($ok) + { + if ($choix==1) $dir = "../../mysql/tables/"; + else $dir = "../../pgsql/tables/"; + + $okkeys = 0; + $handle=opendir($dir); + $table_exists = 0; + while (($file = readdir($handle))!==false) + { + if (substr($file, strlen($file) - 4) == '.sql' && substr($file,0,4) == 'llx_' && substr($file, -8) == '.key.sql') + { + $name = substr($file, 0, strlen($file) - 4); + //print "<tr><td>Cr�ation de la table $name</td>"; + $buffer = ''; + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buf = fgets($fp, 4096); + if (substr($buf, 0, 2) <> '--') + { + $buffer .= $buf; + } + } + fclose($fp); + } + + // Si plusieurs requetes, on boucle sur chaque + $listesql=split(';',$buffer); + foreach ($listesql as $buffer) { + if (trim($buffer)) { + //print "<tr><td>Cr�ation des cl�s et index de la table $name: '$buffer'</td>"; + if ($db->query(trim($buffer))) + { + //print "<td>OK requete ==== $buffer</td></tr>"; + } + else + { + if ($db->errno() == DB_ERROR_CANNOT_CREATE || eregi('duplicate key name',$db->error())) + { + //print "<td>D�j� existante</td></tr>"; + $key_exists = 1; + } + else + { + print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name)."</td>"; + print "<td>".$langs->trans("Error")." ".$db->errno()." ".$db->error()."</td></tr>"; + $error++; + } + } + } + } + } + + } + closedir($handle); + + if ($error == 0) + { + print '<tr><td>'; + print $langs->trans("OtherKeysCreation").'</td><td>'.$langs->trans("OK").'</td></tr>'; + $okkeys = 1; + } } + + + /*************************************************************************************** + * + * Positionnement des droits + * + ***************************************************************************************/ + if ($ok) + { + // Droits sur les tables + if ($grant_query) { + if ($db->query($grant_query)) + { + print "<tr><td>Grant User</td><td>".$langs->trans("OK")."</td></tr>"; + } + } + } + - /*************************************************************************************** - * - * Chargement fichier data.sql - * - ***************************************************************************************/ - if ($ok == 1) + /*************************************************************************************** + * + * Chargement fichier functions.sql + * + ***************************************************************************************/ + if ($ok) { - // - // Donn�es - // - if ($choix==1) - { - $dir = "../../mysql/data/"; - $file = "data.sql"; - $fp = fopen($dir.$file,"r"); - if ($fp) - { - while (!feof ($fp)) - { - $buffer = fgets($fp, 4096); - - if (strlen(trim(ereg_replace("--","",$buffer)))) - { - if ($db->query($buffer)) - { - $ok = 1; - } - else - { - if ($db->errno() == DB_ERROR_RECORD_ALREADY_EXISTS) - { - // print "<tr><td>Insertion ligne : $buffer</td><td> - } - else - { - $ok = 0; - print "Erreur SQL ".$db->errno()." sur requete '$buffer': ".$db->error()."<br>"; - } - } - } - } - fclose($fp); - } - }//choix==1 - else - { - $dir = "../../pgsql/data/"; - $file = "data.sql"; - $fp = fopen($dir.$file,"r"); - $buffer=''; - if ($fp) - { - while (!feof ($fp)) - { - $buffer .= fgets($fp, 4096); - } - if ($db->query($buffer)) - { - $ok = 1; - } - else - { - if ($db->errno() == DB_ERROR_RECORD_ALREADY_EXISTS) - { - // print "<tr><td>Insertion ligne : $buffer</td><td>D�ja existante</td></tr>"; - } - else - { - $ok = 0; - print "Erreur SQL ".$db->errno()." sur requete '$buffer': ".$db->error()."<br>"; - } - } - //}//while - fclose($fp); - } - }//else - - - print "<tr><td>".$langs->trans("ReferenceDataLoading")."</td>"; - if ($ok) - { - print "<td>".$langs->trans("OK")."</td></tr>"; - } - else - { - print "<td>".$langs->trans("Error")."</td></tr>"; - $ok = 1 ; - } + if ($choix==1) $dir = "../../mysql/functions/"; + else $dir = "../../pgsql/functions/"; + + // Cr�ation donn�es + $file = "functions.sql"; + if (file_exists($dir.$file)) { + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buffer = fgets($fp, 4096); + if (substr($buf, 0, 2) <> '--') + { + $buffer .= $buf; + } + } + fclose($fp); + } + + // Si plusieurs requetes, on boucle sur chaque + $listesql=split('�',eregi_replace(";';",";'�",$buffer)); + foreach ($listesql as $buffer) { + if (trim($buffer)) { + + if ($db->query(trim($buffer))) + { + $ok = 1; + } + else + { + if ($db->errno() == DB_ERROR_RECORD_ALREADY_EXISTS) + { + // print "<tr><td>Insertion ligne : $buffer</td><td> + } + else + { + $ok = 0; + print "Erreur SQL ".$db->errno()." sur requete '$buffer': ".$db->error()."<br>"; + } + } + } + } + + print "<tr><td>".$langs->trans("FunctionsCreation")."</td>"; + if ($ok) + { + print "<td>".$langs->trans("OK")."</td></tr>"; + } + else + { + print "<td>".$langs->trans("Error")."</td></tr>"; + $ok = 1 ; + } + + } + } + + + /*************************************************************************************** + * + * Chargement fichier data.sql + * + ***************************************************************************************/ + if ($ok) + { + if ($choix==1) $dir = "../../mysql/data/"; + else $dir = "../../pgsql/data/"; + + // Cr�ation donn�es + $file = "data.sql"; + $fp = fopen($dir.$file,"r"); + if ($fp) + { + while (!feof ($fp)) + { + $buffer = fgets($fp, 4096); + + if (strlen(trim(ereg_replace("--","",$buffer)))) + { + if ($db->query($buffer)) + { + $ok = 1; + } + else + { + if ($db->errno() == DB_ERROR_RECORD_ALREADY_EXISTS) + { + // print "<tr><td>Insertion ligne : $buffer</td><td> + } + else + { + $ok = 0; + print "Erreur SQL ".$db->errno()." sur requete '$buffer': ".$db->error()."<br>"; + } + } + } + } + fclose($fp); + } + + print "<tr><td>".$langs->trans("ReferenceDataLoading")."</td>"; + if ($ok) + { + print "<td>".$langs->trans("OK")."</td></tr>"; + } + else + { + print "<td>".$langs->trans("Error")."</td></tr>"; + $ok = 1 ; + } } - /*************************************************************************************** - * - * Les variables qui ecrase le chemin par defaut sont red�finies - * - ***************************************************************************************/ - if ($ok == 1) + /*************************************************************************************** + * + * Les variables qui ecrase le chemin par defaut sont red�finies + * + ***************************************************************************************/ + if ($ok == 1) { - $sql[0] = "UPDATE llx_const SET value = '".$dolibarr_main_data_root."/facture', - type = 'chaine', - visible = 0 - where name ='FAC_OUTPUTDIR';" ; - - $sql[1] = "UPDATE llx_const SET value = '".$dolibarr_main_data_root."/propale', - type = 'chaine', - visible = 0 - where name = 'PROPALE_OUTPUTDIR';" ; - - $sql[2] = "UPDATE llx_const SET value = '".$dolibarr_main_data_root."/ficheinter', - type = 'chaine', - visible = 0 - where name = 'FICHEINTER_OUTPUTDIR';" ; - - $sql[3] = "UPDATE llx_const SET value='".$dolibarr_main_data_root."/societe', - type = 'chaine', - visible = 0 - where name = 'SOCIETE_OUTPUTDIR';" ; - - $sql[4] = "DELETE from llx_const where name like '%_OUTPUT_URL';"; - - - $sql[5] = "UPDATE llx_const SET value='".$langs->defaultlang."', - type = 'chaine', - visible = 0 - where name = 'MAIN_LANG_DEFAULT';" ; - - $result = 0; - - for ($i=0; $i < sizeof($sql);$i++) - { - if ($db->query($sql[$i])) - { - $result++; - } - } - - if ($result == sizeof($sql)) - { - if ($error == 0) - { - $db->query("DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED'"); - } - } + $sql[0] = "UPDATE llx_const SET value = '".$dolibarr_main_data_root."/facture', + type = 'chaine', + visible = 0 + where name ='FAC_OUTPUTDIR';" ; + + $sql[1] = "UPDATE llx_const SET value = '".$dolibarr_main_data_root."/propale', + type = 'chaine', + visible = 0 + where name = 'PROPALE_OUTPUTDIR';" ; + + $sql[2] = "UPDATE llx_const SET value = '".$dolibarr_main_data_root."/ficheinter', + type = 'chaine', + visible = 0 + where name = 'FICHEINTER_OUTPUTDIR';" ; + + $sql[3] = "UPDATE llx_const SET value='".$dolibarr_main_data_root."/societe', + type = 'chaine', + visible = 0 + where name = 'SOCIETE_OUTPUTDIR';" ; + + $sql[4] = "DELETE from llx_const where name like '%_OUTPUT_URL';"; + + + $sql[5] = "UPDATE llx_const SET value='".$langs->defaultlang."', + type = 'chaine', + visible = 0 + where name = 'MAIN_LANG_DEFAULT';" ; + + $result = 0; + + for ($i=0; $i < sizeof($sql);$i++) + { + if ($db->query($sql[$i])) + { + $result++; + } + } + + if ($result == sizeof($sql)) + { + if ($error == 0) + { + $db->query("DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED'"); + } + } } - /*************************************************************************************** - * - * - * - * - ***************************************************************************************/ + /*************************************************************************************** + * + * + * + * + ***************************************************************************************/ - print '</table>'; + print '</table>'; - $db->close(); + $db->close(); } pFooter(!$ok); ?> diff --git a/pgsql/functions/functions.sql b/pgsql/functions/functions.sql index 35679e004d9..c32702a5e58 100644 --- a/pgsql/functions/functions.sql +++ b/pgsql/functions/functions.sql @@ -36,4 +36,4 @@ CREATE OR REPLACE FUNCTION FROM_UNIXTIME(BIGINT, VARCHAR) RETURNS TIMESTAMP WITH TIME ZONE LANGUAGE SQL IMMUTABLE STRICT -AS 'SELECT TIMESTAMP WITH TIME ZONE \'epoch\' + $1 * interval \'1 second\';'; \ No newline at end of file +AS 'SELECT TIMESTAMP WITH TIME ZONE \'epoch\' + $1 * interval \'1 second\' ;'; \ No newline at end of file -- GitLab