From 01ea1838de38bb1f823ca5e3998584a7b14026f4 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Sat, 9 Jul 2005 23:41:49 +0000
Subject: [PATCH] =?UTF-8?q?Fix:=20Remont=E9e=20du=20motif=20erreur=20conne?=
 =?UTF-8?q?ction=20par=20les=20gestionnaires?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 htdocs/lib/mysql.lib.php | 15 +++++++++------
 htdocs/lib/pgsql.lib.php | 21 ++++++++++++---------
 2 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/htdocs/lib/mysql.lib.php b/htdocs/lib/mysql.lib.php
index f42e7c5dfb9..03e8bac48ad 100644
--- a/htdocs/lib/mysql.lib.php
+++ b/htdocs/lib/mysql.lib.php
@@ -46,10 +46,12 @@ class DoliDb
 
     var $connected;               // 1 si connect�, 0 sinon
     var $database_selected;       // 1 si base s�lectionn�, 0 sinon
+    var $database_name;			  // Nom base s�lectionn�e
     var $transaction_opened;      // 1 si une transaction est en cours, 0 sinon
 
     var $ok;
-
+    var $error;
+    
     // Constantes pour conversion code erreur MySql en code erreur g�n�rique
     var $errorcode_map = array(
     1004 => 'DB_ERROR_CANNOT_CREATE',
@@ -76,14 +78,14 @@ class DoliDb
             \brief      Ouverture d'une connection vers le serveur et �ventuellement une database.
             \param      type		type de base de donn�es (mysql ou pgsql)
             \param	    host		addresse de la base de donn�es
-            \param	    user		nom de l'utilisateur autoris
+    	\param	    user		nom de l'utilisateur autoris�
             \param	    pass		mot de passe
             \param	    name		nom de la database
             \return     int			1 en cas de succ�s, 0 sinon
     */
     function DoliDb($type='mysql', $host, $user, $pass, $name='', $newlink=0)
     {
-        global $conf;
+        global $conf,$langs;
         $this->transaction_opened=0;
 
         //print "Name DB: $host,$user,$pass,$name<br>";
@@ -91,6 +93,7 @@ class DoliDb
         {
         	$this->connected = 0;
         	$this->ok = 0;
+            $this->error=$langs->trans("ErrorWrongHostParameter");
         	dolibarr_syslog("DoliDB::DoliDB : Erreur Connect, wrong host parameters");
             return $this->ok;
         }
@@ -105,6 +108,7 @@ class DoliDb
         }
         else
         {
+            // host, login ou password incorrect
             $this->connected = 0;
             $this->ok = 0;
             dolibarr_syslog("DoliDB::DoliDB : Erreur Connect");
@@ -116,12 +120,14 @@ class DoliDb
             if ($this->select_db($name) == 1)
             {
                 $this->database_selected = 1;
+                $this->database_name = $name;
                 $this->ok = 1;
             }
             else
             {
                 $this->database_selected = 0;
                 $this->ok = 0;
+                $this->error=$this->error();
                 dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
             }
         }
@@ -139,7 +145,6 @@ class DoliDb
             \param	    database		nom de la database
             \return	    resource
     */
-
     function select_db($database)
     {
         return mysql_select_db($database, $this->db);
@@ -153,7 +158,6 @@ class DoliDb
             \param		name		nom de la database (ne sert pas sous mysql, sert sous pgsql)
             \return		resource	handler d'acc�s � la base
     */
-
     function connect($host, $login, $passwd, $name)
     {
         $this->db  = @mysql_connect($host, $login, $passwd);
@@ -167,7 +171,6 @@ class DoliDb
             \return	        resource		resource d�finie si ok, null si ko
             \remarks        Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
     */
-
     function create_db($database)
     {
         $ret=$this->query('CREATE DATABASE '.$database);
diff --git a/htdocs/lib/pgsql.lib.php b/htdocs/lib/pgsql.lib.php
index c04eb43da4d..bc240ea9bb2 100644
--- a/htdocs/lib/pgsql.lib.php
+++ b/htdocs/lib/pgsql.lib.php
@@ -26,7 +26,7 @@
 
 /**
 	    \file       htdocs/lib/pgsql.lib.php
-		\brief      Fichier de la classe permettant de g�r�r la database de dolibarr.
+		\brief      Fichier de la classe permettant de g�r�r une base pgsql
 		\author     Fabien Seisen
 		\author     Rodolphe Quiedeville.
 		\author	    Laurent Destailleur.
@@ -49,9 +49,11 @@ class DoliDb
     
     var $connected;               // 1 si connect�, 0 sinon
     var $database_selected;       // 1 si base s�lectionn�, 0 sinon
+    var $database_name;			  // Nom base s�lectionn�e
     var $transaction_opened;      // 1 si une transaction est en cours, 0 sinon
     
     var $ok;
+    var $error;
     
     
     /**
@@ -65,7 +67,7 @@ class DoliDb
     */
     function DoliDb($type='pgsql', $host, $user, $pass, $name='')
     {
-        global $conf;
+        global $conf,$langs;
         $this->transaction_opened=0;
     
         //print "Name DB: $host,$user,$pass,$name<br>";
@@ -73,6 +75,7 @@ class DoliDb
         {
         	$this->connected = 0;
         	$this->ok = 0;
+            $this->error=$langs->trans("ErrorWrongHostParameter");
         	dolibarr_syslog("DoliDB::DoliDB : Erreur Connect, wrong host parameters");
             return $this->ok;
         }
@@ -87,6 +90,7 @@ class DoliDb
         }
         else
         {
+            // host, login ou password incorrect
             $this->connected = 0;
             $this->ok = 0;
             dolibarr_syslog("DoliDB::DoliDB : Erreur Connect");
@@ -98,12 +102,14 @@ class DoliDb
             if ($this->select_db($name) == 1)
             {
                 $this->database_selected = 1;
+                $this->database_name = $name;
                 $this->ok = 1;
             }
             else
             {
                 $this->database_selected = 0;
                 $this->ok = 0;
+                $this->error=$this->error();
                 dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
             }
         }
@@ -124,13 +130,12 @@ class DoliDb
         \remarks 	comparaison manuel si la database est bien celle choisie par l'utilisateur
         \remarks 	en cas de succes renverra 1 ou 0
     */
-    
     function select_db($database)
     {
-        if($database == "dolibarr")
-        return 1;
+        if ($database == $this->database_name)
+        	return 1;
         else
-        return 0;
+        	return 0;
     }
     
     /**
@@ -141,7 +146,6 @@ class DoliDb
         \param		name		nom de la database (ne sert pas sous mysql, sert sous pgsql)
         \return		resource	handler d'acc�s � la base
     */
-    
     function connect($host, $login, $passwd, $name)
     {
         $con_string = "host=$host dbname=$name user=$login password=$passwd ";
@@ -155,7 +159,6 @@ class DoliDb
             \return	        resource		resource d�finie si ok, null si ko
             \remarks        Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
     */
-
     function create_db($database)
     {
         $ret=$this->query('CREATE DATABASE '.$database.';');
@@ -503,7 +506,7 @@ class DoliDb
     
     /**
         \brief      R�cup�re l'id gen�r� par le dernier INSERT.
-        \param     tab     Nom de la table concern�e par l'insert. Ne sert pas sous MySql mais requis pour compatibilit� avec Postgresql
+        \param     	tab     Nom de la table concern�e par l'insert. Ne sert pas sous MySql mais requis pour compatibilit� avec Postgresql
         \return     int     id
     */
     
-- 
GitLab