diff --git a/htdocs/admin/produit.php b/htdocs/admin/produit.php
index 9dba914b6e8..816d497a480 100644
--- a/htdocs/admin/produit.php
+++ b/htdocs/admin/produit.php
@@ -50,15 +50,15 @@ else if ($_POST["action"] == 'multiprix_num')
}
if ($_POST["action"] == 'multiprix')
{
- $res=$db->desc_table(MAIN_DB_PREFIX."societe","price_level");
+ $res=$db->DDLDescTable(MAIN_DB_PREFIX."societe","price_level");
if(! $db->fetch_row())
{
$field_desc = array('type'=>'TINYINT','value'=>'4','default'=>'1');
// on ajoute le champ price_level dans la table societe
- if(! $db->add_field(MAIN_DB_PREFIX."societe","price_level",$field_desc))
+ if(! $db->DDLAddField(MAIN_DB_PREFIX."societe","price_level",$field_desc))
{
dolibarr_print_error($db);
- print "";
+ exit;
}
// on crée la table societe_prices
else
@@ -70,7 +70,7 @@ if ($_POST["action"] == 'multiprix')
$fields['datec'] = array('type'=>'datetime','default'=> 'null');
$fields['fk_user_author'] = array('type'=>'int','value'=>'11','default'=> 'null');
$fields['price_level'] = array('type'=>'tinyint','value'=>'4','default'=> '1');
- if(! $db->create_table($table,$fields,"rowid","InnoDB"))
+ if(! $db->DDLCreateTable($table,$fields,"rowid","InnoDB") > 0)
{
dolibarr_print_error($db);
print "";
@@ -93,8 +93,8 @@ if ($_POST["action"] == 'multiprix')
}
else if ($_POST["action"] == 'sousproduits')
{
- $res=$db -> desc_table(MAIN_DB_PREFIX."product_association");
- if(! $db -> fetch_row())
+ $res=$db->DDLDescTable(MAIN_DB_PREFIX."product_association");
+ if(! $db->fetch_row())
{
$table = MAIN_DB_PREFIX."product_association";
$fields['fk_product_pere'] = array('type'=>'int','value'=>'11','null'=> 'not null','default'=> '0');
@@ -102,7 +102,7 @@ else if ($_POST["action"] == 'sousproduits')
$fields['qty'] = array('type'=>'double','default'=> 'null');
$keys['idx_product_association_fk_product_pere'] = "fk_product_pere" ;
$keys['idx_product_association_fk_product_fils'] = "fk_product_fils" ;
- if(! $db -> create_table($table,$fields,"","InnoDB","","",$keys))
+ if (! $db->DDLCreateTable($table,$fields,"","InnoDB","","",$keys) > 0)
{
dolibarr_print_error($db);
print "";
diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php
index 152087f0462..6d985bbe37c 100644
--- a/htdocs/install/etape1.php
+++ b/htdocs/install/etape1.php
@@ -424,7 +424,7 @@ if ($_POST["action"] == "set")
if ($db->connected)
{
- if ($db->create_db($dolibarr_main_db_name))
+ if ($db->DDLCreateDb($dolibarr_main_db_name))
{
print '
| ';
print $langs->trans("DatabaseCreation").' : ';
diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php
index 2de269b40bb..0b03da31323 100644
--- a/htdocs/lib/databases/mysql.lib.php
+++ b/htdocs/lib/databases/mysql.lib.php
@@ -43,7 +43,7 @@ class DoliDb
var $type='mysql'; // Nom du gestionnaire
var $forcecharset='latin1';
var $forcecollate='latin1_swedish_ci';
- var $versionmin=array(4,1,0);
+ var $versionmin=array(3,1,0); // Version min database
var $results; // Resultset de la dernière requete
@@ -190,6 +190,7 @@ class DoliDb
\param passwd mot de passe
\param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
\return resource handler d'accès à la base
+ \seealso close
*/
function connect($host, $login, $passwd, $name)
{
@@ -222,33 +223,11 @@ class DoliDb
}
- /**
- \brief Création d'une nouvelle base de donnée
- \param database nom de la database à créer
- \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)
- {
- // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci
- $sql = 'CREATE DATABASE '.$database;
- $sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate;
- $ret=$this->query($sql);
- if (! $ret)
- {
- // On réessaie pour compatibilité avec Mysql < 5.0
- $sql = 'CREATE DATABASE '.$database;
- $ret=$this->query($sql);
- }
-
- //print "database=".$this->database_name." ret=".$ret." mysqlerror=".mysql_error($this->db);
- return $ret;
- }
-
/**
\brief Fermeture d'une connection vers une database.
\return resource
+ \seealso connect
*/
function close()
{
@@ -578,14 +557,59 @@ class DoliDb
}
/**
- \brief Renvoie la commande sql qui donne les droits sur les tables
- \return string Requete sql
+ \brief Renvoie la commande sql qui donne les droits à user sur toutes les tables
+ \param databaseuser User à autoriser
+ \return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
return '';
}
+
+ /**
+ \brief Retourne le dsn pear
+ \return dsn
+ */
+ function getDSN($db_type,$db_user,$db_pass,$db_host,$db_name)
+ {
+ return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
+ }
+
+ /**
+ \brief Création d'une nouvelle base de donnée
+ \param database nom de la database à créer
+ \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 DDLCreateDb($database)
+ {
+ // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci
+ $sql = 'CREATE DATABASE '.$database;
+ $sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate;
+ $ret=$this->query($sql);
+ if (! $ret)
+ {
+ // On réessaie pour compatibilité avec Mysql < 5.0
+ $sql = 'CREATE DATABASE '.$database;
+ $ret=$this->query($sql);
+ }
+
+ //print "database=".$this->database_name." ret=".$ret." mysqlerror=".mysql_error($this->db);
+ return $ret;
+ }
+
+ /**
+ \brief Liste des tables dans une database.
+ \param database Nom de la database
+ \return resource
+ */
+ function DDLListTables($database)
+ {
+ $this->results = mysql_list_tables($database, $this->db);
+ return $this->results;
+ }
+
/**
\brief Crée une table
\param table Nom de la table
@@ -597,7 +621,7 @@ class DoliDb
\param type type de la table
\return true/false selon si requête a provoqué un erreur mysql ou pas
*/
- function create_table($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
+ function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
{
// clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
@@ -661,6 +685,19 @@ class DoliDb
return true;
}
+ /**
+ \brief décrit une table dans une database.
+ \param table Nom de la table
+ \param field Optionnel : Nom du champ si l'on veut la desc d'un champ
+ \return resource
+ */
+ function DDLDescTable($table,$field="")
+ {
+ // $this->results = $this->query("DESC ".$table." ".$field);
+ $this->results = $this->query("DESC ".$table." ".$field);
+ return $this->results;
+ }
+
/**
\brief Insère un nouveau champ dans une table
\param table Nom de la table
@@ -669,7 +706,7 @@ class DoliDb
\param field_position Optionnel ex.: "after champtruc"
\return true/false Selon si requête a provoqué un erreur mysql ou pas
*/
- function add_field($table,$field_name,$field_desc,$field_position="")
+ function DDLAddField($table,$field_name,$field_desc,$field_position="")
{
// clés recherchées dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
@@ -695,40 +732,6 @@ class DoliDb
else
return true;
}
-
- /**
- \brief Retourne le dsn pear
- \return dsn
- */
- function getdsn($db_type,$db_user,$db_pass,$db_host,$db_name)
- {
- return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
- }
-
- /**
- \brief Liste des tables dans une database.
- \param database Nom de la database
- \return resource
- */
- function list_tables($database)
- {
- $this->results = mysql_list_tables($database, $this->db);
- return $this->results;
- }
-
- /**
- \brief décrit une table dans une database.
- \param table Nom de la table
- \param field Optionnel : Nom du champ si l'on veut la desc d'un champ
- \return resource
- */
- function desc_table($table,$field="")
- {
- // $this->results = $this->query("DESC ".$table." ".$field);
- $this->results = $this->query("DESC ".$table." ".$field);
- return $this->results;
- }
-
}
?>
diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php
index f5da9e7fc6f..19d3969d802 100644
--- a/htdocs/lib/databases/mysqli.lib.php
+++ b/htdocs/lib/databases/mysqli.lib.php
@@ -43,6 +43,7 @@ class DoliDb
var $type='mysqli'; // Nom du gestionnaire
var $forcecharset='latin1';
var $forcecollate='latin1_swedish_ci';
+ var $versionmin=array(4,1,0); // Version min database
var $results; // Resultset de la dernière requete
@@ -189,6 +190,7 @@ class DoliDb
\param passwd mot de passe
\param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
\return resource handler d'accès à la base
+ \seealso close
*/
function connect($host, $login, $passwd, $name)
{
@@ -221,32 +223,10 @@ class DoliDb
}
- /**
- \brief Création d'une nouvelle base de donnée
- \param database nom de la database à créer
- \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)
- {
- $sql = 'CREATE DATABASE '.$database;
- $sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate;
- $ret=$this->query($sql);
- if (! $ret)
- {
- // On réessaie pour compatibilité avec Mysql < 5.0
- $sql = 'CREATE DATABASE '.$database;
- $ret=$this->query($sql);
- }
-
- //print "database=".$this->database_name." ret=".$ret." mysqlerror=".mysqli_error($this->db);
- return $ret;
- }
-
-
/**
\brief Fermeture d'une connection vers une database.
\return resource
+ \seealso connect
*/
function close()
{
@@ -359,142 +339,6 @@ class DoliDb
}
-
- // Next function are not required. Only minor features use them.
-
-
-
- /**
- \brief Renvoie l'id de la connection
- \return string Id connection
- */
- function getConnectId()
- {
- $resql=$this->query('SELECT CONNECTION_ID()');
- $row=$this->fetch_row($resql);
- return $row[0];
- }
-
- /**
- \brief Renvoie la commande sql qui donne les droits sur les tables
- \return string Requete sql
- */
- function getGrantForUserQuery($databaseuser)
- {
- return '';
- }
-
- /**
- \brief Crée une table
- \param table Nom de la table
- \param fields tableau associatif [nom champ][tableau des descriptions]
- \param primary_key Nom du champ qui sera la clef primaire
- \param unique_keys tableau associatifs Nom de champs qui seront clef unique => valeur
- \param fulltext tableau des Nom de champs qui seront indexés en fulltext
- \param key tableau des champs clés noms => valeur
- \param type type de la table
- \return true/false selon si requête a provoqué un erreur mysql ou pas
- */
- function create_table($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
- {
- // clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
- // ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
- $sql = "create table ".$table."(";
- $i=0;
- foreach($fields as $field_name => $field_desc)
- {
- $sqlfields[$i] = $field_name." ";
- $sqlfields[$i] .= $field_desc['type'];
- if( eregi("^[^ ]",$field_desc['value']))
- $sqlfields[$i] .= "(".$field_desc['value'].")";
- else if( eregi("^[^ ]",$field_desc['attribute']))
- $sqlfields[$i] .= " ".$field_desc['attribute'];
- else if( eregi("^[^ ]",$field_desc['default']))
- {
- if(eregi("null",$field_desc['default']))
- $sqlfields[$i] .= " default ".$field_desc['default'];
- else
- $sqlfields[$i] .= " default '".$field_desc['default']."'";
- }
- else if( eregi("^[^ ]",$field_desc['null']))
- $sqlfields[$i] .= " ".$field_desc['null'];
-
- else if( eregi("^[^ ]",$field_desc['extra']))
- $sqlfields[$i] .= " ".$field_desc['extra'];
- $i++;
- }
- if($primary_key != "")
- $pk = "primary key(".$primary_key.")";
-
- if($unique_keys != "")
- {
- $i = 0;
- foreach($unique_keys as $key => $value)
- {
- $sqluq[$i] = "UNIQUE KEY '".$key."' ('".$value."')";
- $i++;
- }
- }
- if($keys != "")
- {
- $i = 0;
- foreach($keys as $key => $value)
- {
- $sqlk[$i] = "KEY ".$key." (".$value.")";
- $i++;
- }
- }
- $sql .= implode(',',$sqlfields);
- if($primary_key != "")
- $sql .= ",".$pk;
- if($unique_keys != "")
- $sql .= ",".implode(',',$sqluq);
- if($keys != "")
- $sql .= ",".implode(',',$sqlk);
- $sql .=") type=".$type;
- // dolibarr_syslog($sql);
- if(! $this -> query($sql))
- return false;
- else
- return true;
- }
-
- /**
- \brief Insère un nouveau champ dans une table
- \param table Nom de la table
- \param field_name Nom du champ à insérer
- \param field_desc tableau associatif de description duchamp à insérer[nom du paramètre][valeur du paramètre]
- \param field_position Optionnel ex.: "after champtruc"
- \return true/false selon si requête a provoqué un erreur mysql ou pas
- */
- function add_field($table,$field_name,$field_desc,$field_position="")
- {
- // clés recherchées dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
- // ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
- $sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
- $sql .= $field_desc['type'];
- if( eregi("^[^ ]",$field_desc['value']))
- $sql .= "(".$field_desc['value'].")";
- if( eregi("^[^ ]",$field_desc['attribute']))
- $sql .= " ".$field_desc['attribute'];
- if( eregi("^[^ ]",$field_desc['null']))
- $sql .= " ".$field_desc['null'];
- if( eregi("^[^ ]",$field_desc['default']))
- if(eregi("null",$field_desc['default']))
- $sql .= " default ".$field_desc['default'];
- else
- $sql .= " default '".$field_desc['default']."'";
- if( eregi("^[^ ]",$field_desc['extra']))
- $sql .= " ".$field_desc['extra'];
- $sql .= " ".$field_position;
-
- if(! $this -> query($sql))
- return false;
- else
- return true;
- }
-
-
/**
\brief Renvoie les données dans un tableau.
\param resultset Curseur de la requete voulue
@@ -696,38 +540,200 @@ class DoliDb
return mysqli_insert_id($this->db);
}
+
+
+ // Next function are not required. Only minor features use them.
+ //--------------------------------------------------------------
+
+
+
+ /**
+ \brief Renvoie l'id de la connection
+ \return string Id connection
+ */
+ function getConnectId()
+ {
+ $resql=$this->query('SELECT CONNECTION_ID()');
+ $row=$this->fetch_row($resql);
+ return $row[0];
+ }
+
+ /**
+ \brief Renvoie la commande sql qui donne les droits sur les tables
+ \return string Requete sql
+ */
+ function getGrantForUserQuery($databaseuser)
+ {
+ return '';
+ }
+
+
/**
\brief Retourne le dsn pear
\return dsn
*/
- function getdsn($db_type,$db_user,$db_pass,$db_host,$db_name)
+ function getDSN($db_type,$db_user,$db_pass,$db_host,$db_name)
{
return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
}
+ /**
+ \brief Création d'une nouvelle base de donnée
+ \param database nom de la database à créer
+ \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 DDLCreateDb($database)
+ {
+ $sql = 'CREATE DATABASE '.$database;
+ $sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate;
+ $ret=$this->query($sql);
+ if (! $ret)
+ {
+ // On réessaie pour compatibilité avec Mysql < 5.0
+ $sql = 'CREATE DATABASE '.$database;
+ $ret=$this->query($sql);
+ }
+
+ //print "database=".$this->database_name." ret=".$ret." mysqlerror=".mysqli_error($this->db);
+ return $ret;
+ }
+
+
/**
\brief Liste des tables dans une database.
\param database Nom de la database
\return resource
*/
- function list_tables($database)
+ function DDLListTables($database)
{
$this->results = mysqli_list_tables($database, $this->db);
return $this->results;
}
- /**
- \brief décrit une table dans une database.
- \param table Nom de la table
- \param field Optionnel : Nom du champ si l'on veut la desc d'un champ
- \return resource
+
+ /**
+ \brief Crée une table
+ \param table Nom de la table
+ \param fields tableau associatif [nom champ][tableau des descriptions]
+ \param primary_key Nom du champ qui sera la clef primaire
+ \param unique_keys tableau associatifs Nom de champs qui seront clef unique => valeur
+ \param fulltext tableau des Nom de champs qui seront indexés en fulltext
+ \param key tableau des champs clés noms => valeur
+ \param type type de la table
+ \return true/false selon si requête a provoqué un erreur mysql ou pas
*/
- function desc_table($table,$field="")
+ function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
+ {
+ // clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
+ // ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
+ $sql = "create table ".$table."(";
+ $i=0;
+ foreach($fields as $field_name => $field_desc)
+ {
+ $sqlfields[$i] = $field_name." ";
+ $sqlfields[$i] .= $field_desc['type'];
+ if( eregi("^[^ ]",$field_desc['value']))
+ $sqlfields[$i] .= "(".$field_desc['value'].")";
+ else if( eregi("^[^ ]",$field_desc['attribute']))
+ $sqlfields[$i] .= " ".$field_desc['attribute'];
+ else if( eregi("^[^ ]",$field_desc['default']))
+ {
+ if(eregi("null",$field_desc['default']))
+ $sqlfields[$i] .= " default ".$field_desc['default'];
+ else
+ $sqlfields[$i] .= " default '".$field_desc['default']."'";
+ }
+ else if( eregi("^[^ ]",$field_desc['null']))
+ $sqlfields[$i] .= " ".$field_desc['null'];
+
+ else if( eregi("^[^ ]",$field_desc['extra']))
+ $sqlfields[$i] .= " ".$field_desc['extra'];
+ $i++;
+ }
+ if($primary_key != "")
+ $pk = "primary key(".$primary_key.")";
+
+ if($unique_keys != "")
+ {
+ $i = 0;
+ foreach($unique_keys as $key => $value)
+ {
+ $sqluq[$i] = "UNIQUE KEY '".$key."' ('".$value."')";
+ $i++;
+ }
+ }
+ if($keys != "")
+ {
+ $i = 0;
+ foreach($keys as $key => $value)
+ {
+ $sqlk[$i] = "KEY ".$key." (".$value.")";
+ $i++;
+ }
+ }
+ $sql .= implode(',',$sqlfields);
+ if($primary_key != "")
+ $sql .= ",".$pk;
+ if($unique_keys != "")
+ $sql .= ",".implode(',',$sqluq);
+ if($keys != "")
+ $sql .= ",".implode(',',$sqlk);
+ $sql .=") type=".$type;
+ // dolibarr_syslog($sql);
+ if(! $this -> query($sql))
+ return false;
+ else
+ return true;
+ }
+
+ /**
+ \brief décrit une table dans une database.
+ \param table Nom de la table
+ \param field Optionnel : Nom du champ si l'on veut la desc d'un champ
+ \return resource
+ */
+ function DDLDescTable($table,$field="")
{
// $this->results = $this->query("DESC ".$table." ".$field);
$this->results = $this->query("DESC ".$table." ".$field);
return $this->results;
}
+ /**
+ \brief Insère un nouveau champ dans une table
+ \param table Nom de la table
+ \param field_name Nom du champ à insérer
+ \param field_desc tableau associatif de description duchamp à insérer[nom du paramètre][valeur du paramètre]
+ \param field_position Optionnel ex.: "after champtruc"
+ \return true/false selon si requête a provoqué un erreur mysql ou pas
+ */
+ function DDLAddField($table,$field_name,$field_desc,$field_position="")
+ {
+ // clés recherchées dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
+ // ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
+ $sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
+ $sql .= $field_desc['type'];
+ if( eregi("^[^ ]",$field_desc['value']))
+ $sql .= "(".$field_desc['value'].")";
+ if( eregi("^[^ ]",$field_desc['attribute']))
+ $sql .= " ".$field_desc['attribute'];
+ if( eregi("^[^ ]",$field_desc['null']))
+ $sql .= " ".$field_desc['null'];
+ if( eregi("^[^ ]",$field_desc['default']))
+ if(eregi("null",$field_desc['default']))
+ $sql .= " default ".$field_desc['default'];
+ else
+ $sql .= " default '".$field_desc['default']."'";
+ if( eregi("^[^ ]",$field_desc['extra']))
+ $sql .= " ".$field_desc['extra'];
+ $sql .= " ".$field_position;
+
+ if(! $this -> query($sql))
+ return false;
+ else
+ return true;
+ }
+
}
?>
diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php
index 32394d4cb13..dea6d84bc13 100644
--- a/htdocs/lib/databases/pgsql.lib.php
+++ b/htdocs/lib/databases/pgsql.lib.php
@@ -1,7 +1,7 @@
* Copyright (C) 2002-2005 Rodolphe Quiedeville
- * Copyright (C) 2004 Laurent Destailleur
+ * Copyright (C) 2004-2006 Laurent Destailleur
* Copyright (C) 2004 Sebastien Di Cintio
* Copyright (C) 2004 Benoit Mortier
*
@@ -36,15 +36,15 @@
/**
- \class DoliDb
- \brief Classe permettant de gérér la database de dolibarr
+ \class DoliDb
+ \brief Classe permettant de gérér la database de dolibarr
*/
class DoliDb
{
var $db; // Handler de base
var $type='pgsql'; // Nom du gestionnaire
- var $versionmin=array(8,1,0);
+ var $versionmin=array(8,1,0); // Version min database
var $results; // Resultset de la dernière requete
@@ -121,6 +121,7 @@ class DoliDb
else
{
$this->database_selected = 0;
+ $this->database_name = '';
$this->ok = 0;
$this->error=$this->error();
dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
@@ -270,7 +271,12 @@ class DoliDb
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
{
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
- if (! $ret) $this->lastqueryerror = $query;
+ if (! $ret)
+ {
+ $this->lastqueryerror = $query;
+ $this->lasterror = $this->error();
+ $this->lasterrno = $this->errno();
+ }
$this->lastquery=$query;
$this->results = $ret;
}
@@ -281,7 +287,7 @@ class DoliDb
/**
\brief Renvoie la ligne courante (comme un objet) pour le curseur resultset.
\param resultset Curseur de la requete voulue
- \return resource
+ \return resource
*/
function fetch_object($resultset=0)
{
@@ -290,66 +296,6 @@ class DoliDb
return pg_fetch_object($resultset);
}
-
-
-
- // Next function are not required. Only minor features use them.
-
-
-
- /**
- \brief Renvoie l'id de la connection
- \return string Id connection
- */
- function getConnectId()
- {
- return '?';
- }
-
-
- /**
- \brief Renvoie la commande sql qui donne les droits à user sur les tables
- \param databaseuse User à autoriser
- \return string Requete sql
- */
- function getGrantForUserQuery($databaseuser)
- {
- // Scan tables pour générer le grant
- $dir = DOL_DOCUMENT_ROOT."/pgsql/tables";
-
- $handle=opendir($dir);
- $table_list="";
- while (($file = readdir($handle))!==false)
- {
- if (! ereg("\.key\.sql",$file) && ereg("^(.*)\.sql",$file,$reg))
- {
- if ($table_list) {
- $table_list.=", ".$reg[0];
- }
- else {
- $table_list.=$reg[0];
- }
- }
- }
-
- // Genere le grant_query
- $grant_query = 'GRANT ALL ON '.$table_list.' TO "'.$databaseuser.'";';
- return $grant_query;
- }
-
-
- /**
- \brief Création d'une nouvelle base de donnée
- \param database nom de la database à créer
- \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.';');
- return $ret;
- }
-
/**
\brief Renvoie les données dans un tableau.
\param resultset Curseur de la requete voulue
@@ -435,8 +381,8 @@ class DoliDb
\brief Formatage (par la base de données) d'un champ de la base au format tms ou Date (YYYY-MM-DD HH:MM:SS)
afin de retourner une donnée toujours au format universel date tms unix.
Fonction à utiliser pour générer les SELECT.
- \param param
- \return date date au format tms.
+ \param param Date au format text à convertir
+ \return date Date au format tms.
*/
function pdate($param)
{
@@ -469,7 +415,7 @@ class DoliDb
/**
- \brief Renvoie la derniere requete soumise par la methode query()
+ \brief Renvoie la derniere requete soumise par la methode query()
\return lastquery
*/
function lastquery()
@@ -478,14 +424,32 @@ class DoliDb
}
/**
- \brief Renvoie la derniere requete en erreur()
- \return lastqueryerror
+ \brief Renvoie la derniere requete en erreur
+ \return string lastqueryerror
*/
function lastqueryerror()
{
return $this->lastqueryerror;
}
+ /**
+ \brief Renvoie le libelle derniere erreur
+ \return string lasterror
+ */
+ function lasterror()
+ {
+ return $this->lasterror;
+ }
+
+ /**
+ \brief Renvoie le code derniere erreur
+ \return string lasterrno
+ */
+ function lasterrno()
+ {
+ return $this->lasterrno;
+ }
+
/**
\brief Renvoie le code erreur generique de l'operation precedente.
\return error_num (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...)
@@ -534,23 +498,82 @@ class DoliDb
$nbre = pg_num_rows($result);
$row = pg_fetch_result($result,0,0);
return $row;
+
+
+ // Next function are not required. Only minor features use them.
+ //--------------------------------------------------------------
+
+
+
+ /**
+ \brief Renvoie l'id de la connection
+ \return string Id connection
+ */
+ function getConnectId()
+ {
+ return '?';
+ }
+
+
+ /**
+ \brief Renvoie la commande sql qui donne les droits à user sur toutes les tables
+ \param databaseuser User à autoriser
+ \return string Requete sql
+ */
+ function getGrantForUserQuery($databaseuser)
+ {
+ // Scan tables pour générer le grant
+ $dir = DOL_DOCUMENT_ROOT."/pgsql/tables";
+
+ $handle=opendir($dir);
+ $table_list="";
+ while (($file = readdir($handle))!==false)
+ {
+ if (! ereg("\.key\.sql",$file) && ereg("^(.*)\.sql",$file,$reg))
+ {
+ if ($table_list) {
+ $table_list.=", ".$reg[0];
+ }
+ else {
+ $table_list.=$reg[0];
+ }
+ }
+ }
+
+ // Genere le grant_query
+ $grant_query = 'GRANT ALL ON '.$table_list.' TO "'.$databaseuser.'";';
+ return $grant_query;
}
/**
\brief Retourne le dsn pear
\return dsn
*/
- function getdsn($db_type,$db_user,$db_pass,$db_host,$db_name)
+ function getDSN($db_type,$db_user,$db_pass,$db_host,$db_name)
{
return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
}
+
+ /**
+ \brief Création d'une nouvelle base de donnée
+ \param database nom de la database à créer
+ \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 DDLCreateDb($database)
+ {
+ $ret=$this->query('CREATE DATABASE '.$database.';');
+ return $ret;
+ }
+ }
+
/**
\brief Liste des tables dans une database.
\param database Nom de la database
- \return resource
+ \return resource
*/
- function list_tables($database)
+ function DDLListTables($database)
{
$this->results = pg_query($this->db, "SHOW TABLES;");
return $this->results;
|