diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index b7e111a7e6f..885e8ec4290 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -315,26 +315,6 @@ if ($_POST["action"] == "set") } - /*************************************************************************************** - * - * Positionnement des droits - * - ***************************************************************************************/ - if ($ok) - { - // Droits sur les tables - $grant_query=$db->getGrantForUserQuery($dolibarr_main_db_user); - - if ($grant_query) // Seules les bases qui en ont besoin le definisse - { - if ($db->query($grant_query)) - { - print "Grant User".$langs->trans("OK").""; - } - } - } - - /*************************************************************************************** * * Chargement fichier functions.sql diff --git a/htdocs/lib/databases/mssql.lib.php b/htdocs/lib/databases/mssql.lib.php index 2865d6c1d69..aa26756f303 100644 --- a/htdocs/lib/databases/mssql.lib.php +++ b/htdocs/lib/databases/mssql.lib.php @@ -528,6 +528,18 @@ class DoliDb } } + + /** + \brief Escape a string to insert data. + \param stringtoencode String to escape + \return string String escaped + */ + function escape($stringtoencode) + { + return addslashes($stringtoencode); + } + + /** \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. @@ -655,96 +667,67 @@ class DoliDb } - // Next function are not required. Only minor features use them. - //-------------------------------------------------------------- + // Next function are not required. Only minor features use them. + //-------------------------------------------------------------- - /** - \brief Renvoie l'id de la connexion - \return string Id connexion - */ - function getConnectId() - { - $resql=$this->query('SELECT CONNECTION_ID()'); - $row=$this->fetch_row($resql); - return $row[0]; - } + /** + \brief Renvoie l'id de la connexion + \return string Id connexion + */ + function DDLGetConnectId() + { + $resql=$this->query('SELECT CONNECTION_ID()'); + $row=$this->fetch_row($resql); + return $row[0]; + } - /** - \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) - { - /* - $query = "DECLARE @tables TABLE(ROWID int IDENTITY(1,1), SQLSTR varchar(500)) INSERT INTO @tables SELECT '" - $query .= "GRANT SELECT ON '+NAME+' TO ".$databaseuser." FROM sysobjects WHERE TYPE = 'U' AND " - $query .= "NAME NOT LIKE 'SYNC%' DECLARE @rowid int, @sqlstr varchar(500) SET @rowid = 0 " - $query .= "SET @sqlstr = '' DECLARE grant_tbl_cursor CURSOR FOR SELECT ROWID, SQLSTR FROM @tables ORDER BY ROWID" - $query .= "OPEN grant_tbl_cursor FETCH NEXT FROM grant_tbl_cursor INTO @rowid,@sqlstr WHILE @@FETCH_STATUS = 0 " - $query .= "BEGIN EXECUTE (@sqlstr) FETCH NEXT FROM grant_tbl_cursor INTO @rowid,@sqlstr END CLOSE grant_tbl_cursor " - $query .= "DEALLOCATE grant_tbl_cursor" - */ - 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=mssql, ...) car elles sont deprecated - On force creation de la base avec le charset forcecharset - */ - 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 mssql < 5.0 - $sql = 'CREATE DATABASE '.$database; - $ret=$this->query($sql); - } + /** + \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=mssql, ...) car elles sont deprecated + On force creation de la base avec le charset forcecharset + */ + 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 mssql < 5.0 + $sql = 'CREATE DATABASE '.$database; + $ret=$this->query($sql); + } - return $ret; - } + return $ret; + } - /** - \brief Liste des tables dans une database. - \param database Nom de la database - \return resource - */ - function DDLListTables($database) - { - $this->results = mssql_list_tables($database, $this->db); - return $this->results; - } - - /** - \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 int <0 si KO, >=0 si OK - */ + /** + \brief Liste des tables dans une database. + \param database Nom de la database + \return resource + */ + function DDLListTables($database) + { + $this->results = mssql_list_tables($database, $this->db); + return $this->results; + } + + /** + \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 int <0 si KO, >=0 si OK + */ 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 diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php index c07b1fc3e89..30123e9b80f 100644 --- a/htdocs/lib/databases/mysql.lib.php +++ b/htdocs/lib/databases/mysql.lib.php @@ -207,15 +207,15 @@ class DoliDb } - /** - \brief Selectionne une database. - \param database Nom de la database - \return boolean true si ok, false si ko - */ - function select_db($database) - { - return mysql_select_db($database, $this->db); - } + /** + \brief Selectionne une database. + \param database Nom de la database + \return boolean true si ok, false si ko + */ + function select_db($database) + { + return mysql_select_db($database, $this->db); + } /** \brief Connection vers le serveur @@ -248,15 +248,15 @@ class DoliDb return $this->db; } - /** - \brief Renvoie la version du serveur - \return string Chaine version - */ - function getVersion() - { - return mysql_get_server_info($this->db); - } - + /** + \brief Renvoie la version du serveur + \return string Chaine version + */ + function getVersion() + { + return mysql_get_server_info($this->db); + } + /** \brief Renvoie la version du serveur sous forme de nombre \return string Chaine version @@ -521,7 +521,18 @@ class DoliDb } - /** + /** + \brief Escape a string to insert data. + \param stringtoencode String to escape + \return string String escaped + */ + function escape($stringtoencode) + { + return addslashes($stringtoencode); + } + + + /** \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. @@ -640,63 +651,44 @@ class DoliDb - // Next function are not required. Only minor features use them. - //-------------------------------------------------------------- + // Next function are not required. Only minor features use them. + //-------------------------------------------------------------- - /** - \brief Renvoie l'id de la connexion - \return string Id connexion - */ - function getConnectId() - { - $resql=$this->query('SELECT CONNECTION_ID()'); - $row=$this->fetch_row($resql); - return $row[0]; - } + /** + \brief Renvoie l'id de la connexion + \return string Id connexion + */ + function DDLGetConnectId() + { + $resql=$this->query('SELECT CONNECTION_ID()'); + $row=$this->fetch_row($resql); + return $row[0]; + } - /** - \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 - On force creation de la base avec le charset forcecharset - */ - 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 < 4.1.1 + + /** + \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 + On force creation de la base avec le charset forcecharset + */ + 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 < 4.1.1 + $sql = 'CREATE DATABASE '.$database; + $ret=$this->query($sql); } - return $ret; - } + return $ret; + } /** \brief Liste des tables dans une database. diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php index af9300eba0a..d36c3ff93eb 100644 --- a/htdocs/lib/databases/mysqli.lib.php +++ b/htdocs/lib/databases/mysqli.lib.php @@ -536,6 +536,17 @@ class DoliDb } + /** + \brief Escape a string to insert data. + \param stringtoencode String to escape + \return string String escaped + */ + function escape($stringtoencode) + { + return addslashes($stringtoencode); + } + + /** \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. @@ -664,31 +675,13 @@ class DoliDb \brief Renvoie l'id de la connexion \return string Id connexion */ - function getConnectId() + function DDLGetConnectId() { $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) - { - return $db_type.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name; - } /** \brief Création d'une nouvelle base de donnée @@ -696,20 +689,20 @@ 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 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 < 4.1.1 - $sql = 'CREATE DATABASE '.$database; - $ret=$this->query($sql); - } - return $ret; - } + 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 < 4.1.1 + $sql = 'CREATE DATABASE '.$database; + $ret=$this->query($sql); + } + return $ret; + } /** \brief Liste des tables dans une database. diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php index 972aee0d2fc..cecbc1d0845 100644 --- a/htdocs/lib/databases/pgsql.lib.php +++ b/htdocs/lib/databases/pgsql.lib.php @@ -459,6 +459,17 @@ class DoliDb } + /** + \brief Escape a string to insert data. + \param stringtoencode String to escape + \return string String escaped + */ + function escape($stringtoencode) + { + return addslashes($stringtoencode); + } + + /** \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. @@ -591,54 +602,12 @@ class DoliDb \brief Renvoie l'id de la connexion \return string Id connexion */ - function getConnectId() + function DDLGetConnectId() { 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; - */ - 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