Fix: Try to fix to allow reserved keyworks into PGSQL user records.
This commit is contained in:
parent
6dc97d6da6
commit
761c613356
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2010 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,7 +20,7 @@
|
||||
/**
|
||||
* \file htdocs/install/etape2.php
|
||||
* \ingroup install
|
||||
* \brief Cree les tables, cles primaires, cles etrangeres, index et fonctions en base puis charge les donnees de reference
|
||||
* \brief Create tables, primary keys, foreign keys, indexes and functions into database and then load reference data
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
@ -173,11 +173,12 @@ if ($_POST["action"] == "set")
|
||||
$buf = fgets($fp, 4096);
|
||||
if (substr($buf, 0, 2) <> '--')
|
||||
{
|
||||
/* I disable this as it is already done into the query function
|
||||
if ($choix != 1) // All databases except Mysql
|
||||
{
|
||||
$buf=$db->convertSQLFromMysql($buf);
|
||||
$buf=$db->convertSQLFromMysql($buf,'dml');
|
||||
}
|
||||
|
||||
*/
|
||||
$buffer .= $buf;
|
||||
}
|
||||
}
|
||||
@ -193,7 +194,7 @@ if ($_POST["action"] == "set")
|
||||
}
|
||||
|
||||
dolibarr_install_syslog("Request: ".$buffer,LOG_DEBUG);
|
||||
$resql=$db->query($buffer);
|
||||
$resql=$db->query($buffer,0,'dml');
|
||||
if ($resql)
|
||||
{
|
||||
// print "<td>OK requete ==== $buffer</td></tr>";
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
* Copyright (C) 2004 Sebastien DiCintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
|
||||
@ -170,6 +170,7 @@ if ($_POST["action"] == "set" || preg_match('/upgrade/i',$_POST["action"]))
|
||||
$newuser->admin=1;
|
||||
$newuser->entity=0;
|
||||
|
||||
$conf->global->USER_MAIL_REQUIRED=0; // Force global option to be sure to create a new user with no email
|
||||
$result=$newuser->create($createuser,1);
|
||||
if ($result > 0)
|
||||
{
|
||||
|
||||
@ -75,14 +75,14 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
* \param type Type de base de donnees (mysql ou pgsql)
|
||||
* \param host Addresse de la base de donnees
|
||||
* \param user Nom de l'utilisateur autorise
|
||||
* \param pass Mot de passe
|
||||
* \param name Nom de la database
|
||||
* \param port Port of database server
|
||||
* \return int 1 en cas de succes, 0 sinon
|
||||
* Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
* @param type Type de base de donnees (mysql ou pgsql)
|
||||
* @param host Addresse de la base de donnees
|
||||
* @param user Nom de l'utilisateur autorise
|
||||
* @param pass Mot de passe
|
||||
* @param name Nom de la database
|
||||
* @param port Port of database server
|
||||
* @return int 1 en cas de succes, 0 sinon
|
||||
*/
|
||||
function DoliDb($type='mssql', $host, $user, $pass, $name='', $port=0)
|
||||
{
|
||||
@ -154,20 +154,21 @@ class DoliDb
|
||||
return $this->ok;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Convert a SQL request in mysql syntax to database syntax
|
||||
* \param line SQL request line to convert
|
||||
* \return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line)
|
||||
/**
|
||||
* Convert a SQL request in Mysql syntax to PostgreSQL syntax
|
||||
* @param line SQL request line to convert
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line,$type='ddl')
|
||||
{
|
||||
return $line;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Selectionne une database.
|
||||
* \param database Nom de la database
|
||||
* \return boolean true si ok, false si ko
|
||||
* Selectionne une database.
|
||||
* @param database Nom de la database
|
||||
* @return boolean true si ok, false si ko
|
||||
*/
|
||||
function select_db($database)
|
||||
{
|
||||
@ -175,14 +176,14 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Connection vers le serveur
|
||||
\param host addresse de la base de donnees
|
||||
\param login nom de l'utilisateur autoris
|
||||
\param passwd mot de passe
|
||||
\param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
||||
\param port Port of database server
|
||||
\return resource handler d'acces a la base
|
||||
\seealso close
|
||||
* Connection vers le serveur
|
||||
* @param host addresse de la base de donnees
|
||||
* @param login nom de l'utilisateur autoris
|
||||
* @param passwd mot de passe
|
||||
* @param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
||||
* @param port Port of database server
|
||||
* @return resource handler d'acces a la base
|
||||
* @see close
|
||||
*/
|
||||
function connect($host, $login, $passwd, $name, $port=0)
|
||||
{
|
||||
@ -230,9 +231,9 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
\brief Fermeture d'une connexion vers une database.
|
||||
\return resource
|
||||
\seealso connect
|
||||
* \brief Fermeture d'une connexion vers une database.
|
||||
* \return resource
|
||||
* \see connect
|
||||
*/
|
||||
function close()
|
||||
{
|
||||
@ -242,9 +243,9 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
\brief Debut d'une transaction.
|
||||
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
|
||||
*/
|
||||
* \brief Debut d'une transaction.
|
||||
* \return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
|
||||
*/
|
||||
function begin()
|
||||
{
|
||||
if (! $this->transaction_opened)
|
||||
@ -265,9 +266,10 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Validation d'une transaction
|
||||
\return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
||||
*/
|
||||
* Validate a database transaction
|
||||
* @param log Add more log to default log line
|
||||
* @return int 1 if validation is OK or transaction level no started, 0 if ERROR
|
||||
*/
|
||||
function commit()
|
||||
{
|
||||
if ($this->transaction_opened <= 1)
|
||||
@ -288,8 +290,8 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Annulation d'une transaction et retour aux anciennes valeurs
|
||||
\return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur
|
||||
* \brief Annulation d'une transaction et retour aux anciennes valeurs
|
||||
* \return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur
|
||||
*/
|
||||
function rollback()
|
||||
{
|
||||
@ -308,12 +310,14 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Effectue une requete et renvoi le resultset de reponse de la base
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* \return resource Resultset of answer
|
||||
* Execute a SQL request and return the resultset
|
||||
* @param query SQL query string
|
||||
* @param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return resource Resultset of answer
|
||||
*/
|
||||
function query($query,$usesavepoint=0)
|
||||
function query($query,$usesavepoint=0,$type='ddl')
|
||||
{
|
||||
$query = trim($query);
|
||||
|
||||
@ -409,9 +413,9 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoie les donnees dans un tableau.
|
||||
\param resultset Curseur de la requete voulue
|
||||
\return array
|
||||
* \brief Renvoie les donnees dans un tableau.
|
||||
* \param resultset Curseur de la requete voulue
|
||||
* \return array
|
||||
*/
|
||||
function fetch_array($resultset)
|
||||
{
|
||||
@ -422,9 +426,9 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
\brief Renvoie les donnees comme un tableau.
|
||||
\param resultset Curseur de la requete voulue
|
||||
\return array
|
||||
* \brief Renvoie les donnees comme un tableau.
|
||||
* \param resultset Curseur de la requete voulue
|
||||
* \return array
|
||||
*/
|
||||
function fetch_row($resultset)
|
||||
{
|
||||
@ -434,10 +438,10 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoie le nombre de lignes dans le resultat d'une requete SELECT
|
||||
\see affected_rows
|
||||
\param resultset Curseur de la requete voulue
|
||||
\return int Nombre de lignes
|
||||
* \brief Renvoie le nombre de lignes dans le resultat d'une requete SELECT
|
||||
* \see affected_rows
|
||||
* \param resultset Curseur de la requete voulue
|
||||
* \return int Nombre de lignes
|
||||
*/
|
||||
function num_rows($resultset)
|
||||
{
|
||||
|
||||
@ -74,14 +74,14 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
* \param type Type de base de donnees (mysql ou pgsql)
|
||||
* \param host Addresse de la base de donnees
|
||||
* \param user Nom de l'utilisateur autorise
|
||||
* \param pass Mot de passe
|
||||
* \param name Nom de la database
|
||||
* \param port Port of database server
|
||||
* \return int 1 en cas de succes, 0 sinon
|
||||
* Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
* @param type Type de base de donnees (mysql ou pgsql)
|
||||
* @param host Addresse de la base de donnees
|
||||
* @param user Nom de l'utilisateur autorise
|
||||
* @param pass Mot de passe
|
||||
* @param name Nom de la database
|
||||
* @param port Port of database server
|
||||
* @return int 1 en cas de succes, 0 sinon
|
||||
*/
|
||||
function DoliDb($type='mysql', $host, $user, $pass, $name='', $port=0)
|
||||
{
|
||||
@ -181,12 +181,13 @@ class DoliDb
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Convert a SQL request in mysql syntax to database syntax
|
||||
* \param line SQL request line to convert
|
||||
* \return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line)
|
||||
/**
|
||||
* Convert a SQL request in Mysql syntax to PostgreSQL syntax
|
||||
* @param line SQL request line to convert
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line,$type='ddl')
|
||||
{
|
||||
return $line;
|
||||
}
|
||||
@ -309,9 +310,9 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Validation d'une transaction
|
||||
* \param log Add more log to default log line
|
||||
* \return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
||||
* Validate a database transaction
|
||||
* @param log Add more log to default log line
|
||||
* @return int 1 if validation is OK or transaction level no started, 0 if ERROR
|
||||
*/
|
||||
function commit($log='')
|
||||
{
|
||||
@ -354,13 +355,14 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Execute a SQL request and return the resultset
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Execute a SQL request and return the resultset
|
||||
* @param query SQL query string
|
||||
* @param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||
* \return resource Resultset of answer
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return resource Resultset of answer
|
||||
*/
|
||||
function query($query,$usesavepoint=0)
|
||||
function query($query,$usesavepoint=0,$type='ddl')
|
||||
{
|
||||
$query = trim($query);
|
||||
|
||||
@ -399,7 +401,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_object($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mysql_fetch_object($resultset);
|
||||
}
|
||||
@ -411,7 +413,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_array($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mysql_fetch_array($resultset);
|
||||
}
|
||||
@ -424,7 +426,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_row($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return @mysql_fetch_row($resultset);
|
||||
}
|
||||
@ -437,7 +439,7 @@ class DoliDb
|
||||
*/
|
||||
function num_rows($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mysql_num_rows($resultset);
|
||||
}
|
||||
@ -450,7 +452,7 @@ class DoliDb
|
||||
*/
|
||||
function affected_rows($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
// mysql necessite un link de base pour cette fonction contrairement
|
||||
// a pqsql qui prend un resultset
|
||||
@ -464,7 +466,7 @@ class DoliDb
|
||||
*/
|
||||
function free($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
// Si resultset en est un, on libere la memoire
|
||||
if (is_resource($resultset)) mysql_free_result($resultset);
|
||||
|
||||
@ -75,14 +75,14 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
* \param type Type de base de donnees (mysql ou pgsql)
|
||||
* \param host Addresse de la base de donnees
|
||||
* \param user Nom de l'utilisateur autorise
|
||||
* \param pass Mot de passe
|
||||
* \param name Nom de la database
|
||||
* \param port Port of database server
|
||||
* \return int 1 en cas de succes, 0 sinon
|
||||
* Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
* @param type Type de base de donnees (mysql ou pgsql)
|
||||
* @param host Addresse de la base de donnees
|
||||
* @param user Nom de l'utilisateur autorise
|
||||
* @param pass Mot de passe
|
||||
* @param name Nom de la database
|
||||
* @param port Port of database server
|
||||
* @return int 1 en cas de succes, 0 sinon
|
||||
*/
|
||||
function DoliDb($type='mysqli', $host, $user, $pass, $name='', $port=0)
|
||||
{
|
||||
@ -184,12 +184,13 @@ class DoliDb
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Convert a SQL request in mysql syntax to database syntax
|
||||
* \param line SQL request line to convert
|
||||
* \return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line)
|
||||
/**
|
||||
* Convert a SQL request in Mysql syntax to PostgreSQL syntax
|
||||
* @param line SQL request line to convert
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line,$type='ddl')
|
||||
{
|
||||
return $line;
|
||||
}
|
||||
@ -316,9 +317,9 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Validation d'une transaction
|
||||
* \param log Add more log to default log line
|
||||
* \return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
||||
* Validate a database transaction
|
||||
* @param log Add more log to default log line
|
||||
* @return int 1 if validation is OK or transaction level no started, 0 if ERROR
|
||||
*/
|
||||
function commit($log='')
|
||||
{
|
||||
@ -361,13 +362,14 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Execute a SQL request and return the resultset
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Execute a SQL request and return the resultset
|
||||
* @param query SQL query string
|
||||
* @param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||
* \return resource Resultset of answer
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return resource Resultset of answer
|
||||
*/
|
||||
function query($query,$usesavepoint=0)
|
||||
function query($query,$usesavepoint=0,$type='ddl')
|
||||
{
|
||||
$query = trim($query);
|
||||
if (! $this->database_name)
|
||||
@ -417,7 +419,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_array($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
return mysqli_fetch_array($resultset);
|
||||
}
|
||||
@ -429,7 +431,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_row($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_bool($resultset))
|
||||
{
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
@ -450,7 +452,7 @@ class DoliDb
|
||||
*/
|
||||
function num_rows($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
return mysqli_num_rows($resultset);
|
||||
}
|
||||
@ -464,7 +466,7 @@ class DoliDb
|
||||
|
||||
function affected_rows($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
// mysql necessite un link de base pour cette fonction contrairement
|
||||
// a pqsql qui prend un resultset
|
||||
@ -478,7 +480,7 @@ class DoliDb
|
||||
*/
|
||||
function free($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
// Si resultset en est un, on libere la memoire
|
||||
if (is_object($resultset)) mysqli_free_result($resultset);
|
||||
|
||||
@ -149,11 +149,12 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Convert a SQL request in Mysql syntax to PostgreSQL syntax
|
||||
* \param line SQL request line to convert
|
||||
* \return string SQL request line converted
|
||||
* Convert a SQL request in Mysql syntax to PostgreSQL syntax
|
||||
* @param line SQL request line to convert
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return string SQL request line converted
|
||||
*/
|
||||
function convertSQLFromMysql($line)
|
||||
function convertSQLFromMysql($line,$type='ddl')
|
||||
{
|
||||
# Removed empty line if this is a comment line for SVN tagging
|
||||
if (preg_match('/^--\s\$Id/i',$line)) {
|
||||
@ -166,104 +167,106 @@ class DoliDb
|
||||
}
|
||||
if ($line != "")
|
||||
{
|
||||
# we are inside create table statement so lets process datatypes
|
||||
if (preg_match('/(ISAM|innodb)/i',$line)) { # end of create table sequence
|
||||
$line=preg_replace('/\)[\s\t]*type[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/\)[\s\t]*engine[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/,$/','',$line);
|
||||
}
|
||||
if ($type == 'dml')
|
||||
{
|
||||
# we are inside create table statement so lets process datatypes
|
||||
if (preg_match('/(ISAM|innodb)/i',$line)) { # end of create table sequence
|
||||
$line=preg_replace('/\)[\s\t]*type[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/\)[\s\t]*engine[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/,$/','',$line);
|
||||
}
|
||||
|
||||
if (preg_match('/[\s\t]*(\w*)\s*.*int.*auto_increment/i',$line,$reg)) {
|
||||
$line=preg_replace('/[\s\t]*([a-zA-Z_0-9]*)[\s\t]*.*int.*auto_increment[^,]*/i','\\1 SERIAL PRIMARY KEY',$line);
|
||||
}
|
||||
if (preg_match('/[\s\t]*(\w*)\s*.*int.*auto_increment/i',$line,$reg)) {
|
||||
$line=preg_replace('/[\s\t]*([a-zA-Z_0-9]*)[\s\t]*.*int.*auto_increment[^,]*/i','\\1 SERIAL PRIMARY KEY',$line);
|
||||
}
|
||||
|
||||
# tinyint type conversion
|
||||
$line=str_replace('tinyint','smallint',$line);
|
||||
# tinyint type conversion
|
||||
$line=str_replace('tinyint','smallint',$line);
|
||||
|
||||
# nuke unsigned
|
||||
$line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line);
|
||||
# nuke unsigned
|
||||
$line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line);
|
||||
|
||||
# blob -> text
|
||||
$line=preg_replace('/\w*blob/i','text',$line);
|
||||
# blob -> text
|
||||
$line=preg_replace('/\w*blob/i','text',$line);
|
||||
|
||||
# tinytext/mediumtext -> text
|
||||
$line=preg_replace('/tinytext/i','text',$line);
|
||||
$line=preg_replace('/mediumtext/i','text',$line);
|
||||
# tinytext/mediumtext -> text
|
||||
$line=preg_replace('/tinytext/i','text',$line);
|
||||
$line=preg_replace('/mediumtext/i','text',$line);
|
||||
|
||||
# change not null datetime field to null valid ones
|
||||
# (to support remapping of "zero time" to null
|
||||
$line=preg_replace('/datetime not null/i','datetime',$line);
|
||||
$line=preg_replace('/datetime/i','timestamp',$line);
|
||||
# change not null datetime field to null valid ones
|
||||
# (to support remapping of "zero time" to null
|
||||
$line=preg_replace('/datetime not null/i','datetime',$line);
|
||||
$line=preg_replace('/datetime/i','timestamp',$line);
|
||||
|
||||
# double -> numeric
|
||||
// FIXME problem if value contain "double" word
|
||||
$line=preg_replace('/^double/i','numeric',$line);
|
||||
$line=preg_replace('/(\s*)double/i','\\1numeric',$line);
|
||||
# float -> numeric
|
||||
$line=preg_replace('/^float/i','numeric',$line);
|
||||
$line=preg_replace('/(\s*)float/i','\\1numeric',$line);
|
||||
# double -> numeric
|
||||
$line=preg_replace('/^double/i','numeric',$line);
|
||||
$line=preg_replace('/(\s*)double/i','\\1numeric',$line);
|
||||
# float -> numeric
|
||||
$line=preg_replace('/^float/i','numeric',$line);
|
||||
$line=preg_replace('/(\s*)float/i','\\1numeric',$line);
|
||||
|
||||
# unique index(field1,field2)
|
||||
if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line))
|
||||
{
|
||||
$line=preg_replace('/unique index\s*\((\w+\s*,\s*\w+)\)/i','UNIQUE\(\\1\)',$line);
|
||||
}
|
||||
# unique index(field1,field2)
|
||||
if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line))
|
||||
{
|
||||
$line=preg_replace('/unique index\s*\((\w+\s*,\s*\w+)\)/i','UNIQUE\(\\1\)',$line);
|
||||
}
|
||||
|
||||
# We remove end of requests "AFTER fieldxxx"
|
||||
$line=preg_replace('/AFTER [a-z0-9_]+/i','',$line);
|
||||
|
||||
# We remove start of requests "ALTER TABLE tablexxx" if this is a DROP INDEX
|
||||
$line=preg_replace('/ALTER TABLE [a-z0-9_]+ DROP INDEX/i','DROP INDEX',$line);
|
||||
|
||||
# Translate order to rename fields
|
||||
if (preg_match('/ALTER TABLE ([a-z0-9_]+) CHANGE(?: COLUMN)? ([a-z0-9_]+) ([a-z0-9_]+)(.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "ALTER TABLE ".$reg[1]." RENAME COLUMN ".$reg[2]." TO ".$reg[3];
|
||||
}
|
||||
|
||||
# Translate order to modify field format
|
||||
if (preg_match('/ALTER TABLE ([a-z0-9_]+) MODIFY(?: COLUMN)? ([a-z0-9_]+) (.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$newreg3=$reg[3];
|
||||
$newreg3=preg_replace('/ NOT NULL/i','',$newreg3);
|
||||
$newreg3=preg_replace('/ NULL/i','',$newreg3);
|
||||
$newreg3=preg_replace('/ DEFAULT 0/i','',$newreg3);
|
||||
$newreg3=preg_replace('/ DEFAULT \'[0-9a-zA-Z_@]*\'/i','',$newreg3);
|
||||
$line.= "ALTER TABLE ".$reg[1]." ALTER COLUMN ".$reg[2]." TYPE ".$newreg3;
|
||||
}
|
||||
|
||||
# alter table add primary key (field1, field2 ...) -> We remove the primary key name not accepted by PostGreSQL
|
||||
# ALTER TABLE llx_dolibarr_modules ADD PRIMARY KEY pk_dolibarr_modules (numero, entity);
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+PRIMARY\s+KEY\s*(.*)\s*\((.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "ALTER TABLE ".$reg[1]." ADD PRIMARY KEY (".$reg[3];
|
||||
}
|
||||
|
||||
# Translate order to drop foreign keys
|
||||
# ALTER TABLE llx_dolibarr_modules DROP FOREIGN KEY fk_xxx;
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*DROP\s+FOREIGN\s+KEY\s*(.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "ALTER TABLE ".$reg[1]." DROP CONSTRAINT ".$reg[2];
|
||||
}
|
||||
|
||||
# alter table add [unique] [index] (field1, field2 ...)
|
||||
# ALTER TABLE llx_accountingaccount ADD INDEX idx_accountingaccount_fk_pcg_version (fk_pcg_version)
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+(UNIQUE INDEX|INDEX|UNIQUE)\s+(.*)\s*\(([\w,\s]+)\)/i',$line,$reg))
|
||||
{
|
||||
$fieldlist=$reg[4];
|
||||
$idxname=$reg[3];
|
||||
$tablename=$reg[1];
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "CREATE ".(preg_match('/UNIQUE/',$reg[2])?'UNIQUE ':'')."INDEX ".$idxname." ON ".$tablename." (".$fieldlist.")";
|
||||
}
|
||||
}
|
||||
|
||||
// To have postgresql case sensitive
|
||||
$line=str_replace(' LIKE \'',' ILIKE \'',$line);
|
||||
|
||||
# We remove end of requests "AFTER fieldxxx"
|
||||
$line=preg_replace('/AFTER [a-z0-9_]+/i','',$line);
|
||||
|
||||
# We remove start of requests "ALTER TABLE tablexxx" if this is a DROP INDEX
|
||||
$line=preg_replace('/ALTER TABLE [a-z0-9_]+ DROP INDEX/i','DROP INDEX',$line);
|
||||
|
||||
# Translate order to rename fields
|
||||
if (preg_match('/ALTER TABLE ([a-z0-9_]+) CHANGE(?: COLUMN)? ([a-z0-9_]+) ([a-z0-9_]+)(.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "ALTER TABLE ".$reg[1]." RENAME COLUMN ".$reg[2]." TO ".$reg[3];
|
||||
}
|
||||
|
||||
# Translate order to modify field format
|
||||
if (preg_match('/ALTER TABLE ([a-z0-9_]+) MODIFY(?: COLUMN)? ([a-z0-9_]+) (.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$newreg3=$reg[3];
|
||||
$newreg3=preg_replace('/ NOT NULL/i','',$newreg3);
|
||||
$newreg3=preg_replace('/ NULL/i','',$newreg3);
|
||||
$newreg3=preg_replace('/ DEFAULT 0/i','',$newreg3);
|
||||
$newreg3=preg_replace('/ DEFAULT \'[0-9a-zA-Z_@]*\'/i','',$newreg3);
|
||||
$line.= "ALTER TABLE ".$reg[1]." ALTER COLUMN ".$reg[2]." TYPE ".$newreg3;
|
||||
}
|
||||
|
||||
# alter table add primary key (field1, field2 ...) -> We remove the primary key name not accepted by PostGreSQL
|
||||
# ALTER TABLE llx_dolibarr_modules ADD PRIMARY KEY pk_dolibarr_modules (numero, entity);
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+PRIMARY\s+KEY\s*(.*)\s*\((.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "ALTER TABLE ".$reg[1]." ADD PRIMARY KEY (".$reg[3];
|
||||
}
|
||||
|
||||
# Translate order to drop foreign keys
|
||||
# ALTER TABLE llx_dolibarr_modules DROP FOREIGN KEY fk_xxx;
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*DROP\s+FOREIGN\s+KEY\s*(.*)$/i',$line,$reg))
|
||||
{
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "ALTER TABLE ".$reg[1]." DROP CONSTRAINT ".$reg[2];
|
||||
}
|
||||
|
||||
# alter table add [unique] [index] (field1, field2 ...)
|
||||
# ALTER TABLE llx_accountingaccount ADD INDEX idx_accountingaccount_fk_pcg_version (fk_pcg_version)
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+(UNIQUE INDEX|INDEX|UNIQUE)\s+(.*)\s*\(([\w,\s]+)\)/i',$line,$reg))
|
||||
{
|
||||
$fieldlist=$reg[4];
|
||||
$idxname=$reg[3];
|
||||
$tablename=$reg[1];
|
||||
$line = "-- ".$line." replaced by --\n";
|
||||
$line.= "CREATE ".(preg_match('/UNIQUE/',$reg[2])?'UNIQUE ':'')."INDEX ".$idxname." ON ".$tablename." (".$fieldlist.")";
|
||||
}
|
||||
|
||||
// Delete using criteria on other table must not declare twice the deleted table
|
||||
// DELETE FROM tabletodelete USING tabletodelete, othertable -> DELETE FROM tabletodelete USING othertable
|
||||
if (preg_match('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i',$line,$reg))
|
||||
@ -306,28 +309,26 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Select a database
|
||||
* \param database nom de la database
|
||||
* \return boolean true si ok, false si ko
|
||||
* \remarks Ici postgresql n'a aucune fonction equivalente de mysql_select_db
|
||||
* \remarks On compare juste manuellement si la database choisie est bien celle activee par la connexion
|
||||
* Select a database.
|
||||
* Ici postgresql n'a aucune fonction equivalente de mysql_select_db
|
||||
* On compare juste manuellement si la database choisie est bien celle activee par la connexion
|
||||
* @param database nom de la database
|
||||
* @return boolean true si ok, false si ko
|
||||
*/
|
||||
function select_db($database)
|
||||
{
|
||||
if ($database == $this->database_name)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
if ($database == $this->database_name) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Connection vers le serveur
|
||||
* \param host addresse de la base de donnees
|
||||
* \param login nom de l'utilisateur autorise
|
||||
* \param passwd mot de passe
|
||||
* \param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
||||
* \param port Port of database server
|
||||
* \return resource handler d'acces a la base
|
||||
* Connection vers le serveur
|
||||
* @param host addresse de la base de donnees
|
||||
* @param login nom de l'utilisateur autorise
|
||||
* @param passwd mot de passe
|
||||
* @param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
||||
* @param port Port of database server
|
||||
* @return resource handler d'acces a la base
|
||||
*/
|
||||
function connect($host, $login, $passwd, $name, $port=0)
|
||||
{
|
||||
@ -432,10 +433,11 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Validation d'une transaction
|
||||
* \return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
||||
* Validate a database transaction
|
||||
* @param log Add more log to default log line
|
||||
* @return int 1 if validation is OK or transaction level no started, 0 if ERROR
|
||||
*/
|
||||
function commit()
|
||||
function commit($log='')
|
||||
{
|
||||
if ($this->transaction_opened<=1)
|
||||
{
|
||||
@ -476,17 +478,18 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Convert request to PostgreSQL syntax, execute it and return the resultset
|
||||
* \param query SQL query string
|
||||
* \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* \return resource Resultset of answer
|
||||
* Convert request to PostgreSQL syntax, execute it and return the resultset.
|
||||
* @param query SQL query string
|
||||
* @param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||
* @param type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||
* @return resource Resultset of answer
|
||||
*/
|
||||
function query($query,$usesavepoint=0)
|
||||
function query($query,$usesavepoint=0,$type='ddl')
|
||||
{
|
||||
$query = trim($query);
|
||||
|
||||
// Convert MySQL syntax to PostgresSQL syntax
|
||||
$query=$this->convertSQLFromMysql($query);
|
||||
$query=$this->convertSQLFromMysql($query,$type);
|
||||
//print "FF\n".$query."<br>\n";
|
||||
|
||||
// Fix bad formed requests. If request contains a date without quotes, we fix this but this should not occurs.
|
||||
@ -538,7 +541,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_object($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return pg_fetch_object($resultset);
|
||||
}
|
||||
@ -550,7 +553,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_array($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return pg_fetch_array($resultset);
|
||||
}
|
||||
@ -569,26 +572,26 @@ class DoliDb
|
||||
|
||||
/**
|
||||
* \brief Renvoie le nombre de lignes dans le resultat d'une requete SELECT
|
||||
* \see affected_rows
|
||||
* \see affected_rows
|
||||
* \param resultset Curseur de la requete voulue
|
||||
* \return int Nombre de lignes
|
||||
*/
|
||||
function num_rows($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return pg_num_rows($resultset);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
|
||||
* \see num_rows
|
||||
* \see num_rows
|
||||
* \param resultset Curseur de la requete voulue
|
||||
* \return int Nombre de lignes
|
||||
*/
|
||||
function affected_rows($resultset)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
// pgsql necessite un resultset pour cette fonction contrairement
|
||||
// a mysql qui prend un link de base
|
||||
@ -602,15 +605,15 @@ class DoliDb
|
||||
*/
|
||||
function free($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
// If resultset not provided, we take the last used by connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
// Si resultset en est un, on libere la m<EFBFBD>moire
|
||||
// Si resultset en est un, on libere la memoire
|
||||
if (is_resource($resultset)) pg_free_result($resultset);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Defini les limites de la requete.
|
||||
* \brief Defini les limites de la requete.
|
||||
* \param limit nombre maximum de lignes retournees
|
||||
* \param offset numero de la ligne a partir de laquelle recuperer les lignes
|
||||
* \return string chaine exprimant la syntax sql de la limite
|
||||
@ -625,7 +628,7 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Defini le tri de la requete.
|
||||
* \brief Defini le tri de la requete.
|
||||
* \param sortfield liste des champ de tri
|
||||
* \param sortorder ordre du tri
|
||||
* \return string chaine exprimant la syntax sql de l'ordre de tri
|
||||
@ -655,9 +658,9 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Escape a string to insert data.
|
||||
* \param stringtoencode String to escape
|
||||
* \return string String escaped
|
||||
* \brief Escape a string to insert data.
|
||||
* \param stringtoencode String to escape
|
||||
* \return string String escaped
|
||||
*/
|
||||
function escape($stringtoencode)
|
||||
{
|
||||
|
||||
@ -954,9 +954,9 @@ function dol_print_ip($ip,$mode=0)
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if email syntax is ok
|
||||
* Return true if email syntax is ok.
|
||||
* @param address email (Ex: "toto@titi.com", "John Do <johndo@titi.com>")
|
||||
* @return boolean true if email syntax is OK, false if KO
|
||||
* @return boolean true if email syntax is OK, false if KO or empty string/
|
||||
*/
|
||||
function isValidEmail($address)
|
||||
{
|
||||
|
||||
@ -1283,7 +1283,6 @@ class Societe extends CommonObject
|
||||
* \param option Sur quoi pointe le lien ('', 'customer', 'supplier', 'compta')
|
||||
* \param maxlen Longueur max libelle
|
||||
* \return string Chaine avec URL
|
||||
* FIXME not in business class
|
||||
*/
|
||||
function getNomUrl($withpicto=0,$option='customer',$maxlen=0)
|
||||
{
|
||||
@ -1791,7 +1790,7 @@ class Societe extends CommonObject
|
||||
* @param idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm)
|
||||
* @param soc Objet societe
|
||||
* @return string url ou chaine vide si aucune url connue
|
||||
* FIXME not in business class
|
||||
* FIXME not in business class
|
||||
*/
|
||||
function id_prof_url($idprof,$soc)
|
||||
{
|
||||
|
||||
@ -635,12 +635,12 @@ class User extends CommonObject
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Remove group
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."usergroup_user WHERE fk_user = ".$this->id;
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Si contact, supprime lien
|
||||
@ -677,10 +677,10 @@ class User extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Create user in database
|
||||
* \param user Objet user qui demande la creation
|
||||
* \param notrigger 1 ne declenche pas les triggers, 0 sinon
|
||||
* \return int <0 si KO, id compte cree si OK
|
||||
* Create a user into database
|
||||
* @param user Objet user qui demande la creation
|
||||
* @param notrigger 1 ne declenche pas les triggers, 0 sinon
|
||||
* @return int <0 si KO, id compte cree si OK
|
||||
*/
|
||||
function create($user,$notrigger=0)
|
||||
{
|
||||
@ -842,7 +842,7 @@ class User extends CommonObject
|
||||
$result = $interface->run_triggers('USER_CREATE_FROM_CONTACT',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
|
||||
|
||||
$this->db->commit();
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user