mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-06 01:28:19 +01:00
Change to support different page code in HTML output
This commit is contained in:
@@ -79,7 +79,7 @@ class DoliDb
|
||||
\param pass Mot de passe
|
||||
\param name Nom de la database
|
||||
\param port Port of database server
|
||||
\return int 1 en cas de succ<EFBFBD>s, 0 sinon
|
||||
\return int 1 en cas de succes, 0 sinon
|
||||
*/
|
||||
function DoliDb($type='mysql', $host, $user, $pass, $name='', $port=0)
|
||||
{
|
||||
@@ -95,12 +95,14 @@ class DoliDb
|
||||
|
||||
$this->transaction_opened=0;
|
||||
|
||||
//print "Name DB: $host,$user,$pass,$name<br>";
|
||||
|
||||
if (! function_exists("mysql_connect"))
|
||||
{
|
||||
$this->connected = 0;
|
||||
$this->ok = 0;
|
||||
$this->error="Mysql PHP functions for using MySql driver are not available in this version of PHP";
|
||||
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions for using Mysql driver are not available in this version of PHP",LOG_ERR);
|
||||
$this->error="Mysql PHP functions for using MySql driver are not available in this version of PHP. Try to use another driver.";
|
||||
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions for using Mysql driver are not available in this version of PHP. Try to use another driver.",LOG_ERR);
|
||||
return $this->ok;
|
||||
}
|
||||
|
||||
@@ -350,7 +352,7 @@ class DoliDb
|
||||
|
||||
if (! $this->database_name)
|
||||
{
|
||||
// Ordre SQL ne n<EFBFBD>cessitant pas de connexion <EFBFBD> une base (exemple: CREATE DATABASE)
|
||||
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
|
||||
$ret = mysql_query($query, $this->db);
|
||||
}
|
||||
else
|
||||
@@ -381,7 +383,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_object($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mysql_fetch_object($resultset);
|
||||
}
|
||||
@@ -393,7 +395,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_array($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mysql_fetch_array($resultset);
|
||||
}
|
||||
@@ -406,7 +408,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_row($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return @mysql_fetch_row($resultset);
|
||||
}
|
||||
|
||||
@@ -22,27 +22,27 @@
|
||||
|
||||
/**
|
||||
* \file htdocs/lib/databases/mysqli.lib.php
|
||||
* \brief Fichier de la classe permettant de g<>rer une base mysql
|
||||
* \brief Class file to manage Dolibarr database access for a Mysql database
|
||||
* \version $Id$
|
||||
*/
|
||||
// Pour compatibilit<EFBFBD> lors de l'upgrade
|
||||
// For compatibility during upgrade
|
||||
if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '../..');
|
||||
if (! defined('ADODB_DATE_VERSION')) include_once(DOL_DOCUMENT_ROOT."/includes/adodbtime/adodb-time.inc.php");
|
||||
|
||||
|
||||
/**
|
||||
* \class DoliDb
|
||||
* \brief Classe permettant de g<>r<EFBFBD>r la database de dolibarr
|
||||
* \brief Class to manage Dolibarr database access for a Mysql database
|
||||
*/
|
||||
class DoliDb
|
||||
{
|
||||
//! Handler de base
|
||||
//! Database handler
|
||||
var $db;
|
||||
//! Nom du gestionnaire
|
||||
//! Database type
|
||||
var $type='mysqli';
|
||||
//! Charset
|
||||
//! Charset used to force charset when creating database
|
||||
var $forcecharset='latin1';
|
||||
//! Collate
|
||||
//! Collate used to force collate when creating database
|
||||
var $forcecollate='latin1_swedish_ci';
|
||||
//! Version min database
|
||||
var $versionmin=array(4,1,0);
|
||||
@@ -79,7 +79,7 @@ class DoliDb
|
||||
\param pass Mot de passe
|
||||
\param name Nom de la database
|
||||
\param port Port of database server
|
||||
\return int 1 en cas de succ<EFBFBD>s, 0 sinon
|
||||
\return int 1 en cas de succes, 0 sinon
|
||||
*/
|
||||
function DoliDb($type='mysqli', $host, $user, $pass, $name='', $port=0)
|
||||
{
|
||||
@@ -101,8 +101,8 @@ class DoliDb
|
||||
{
|
||||
$this->connected = 0;
|
||||
$this->ok = 0;
|
||||
$this->error="Mysqli PHP functions are not available in this version of PHP. Try to use another driver.";
|
||||
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions are not available in this version of PHP. Try to use another driver.",LOG_ERR);
|
||||
$this->error="Mysqli PHP functions for using Mysqli driver are not available in this version of PHP. Try to use another driver.";
|
||||
dolibarr_syslog("DoliDB::DoliDB : Mysqli PHP functions for using Mysqli driver are not available in this version of PHP. Try to use another driver.",LOG_ERR);
|
||||
return $this->ok;
|
||||
}
|
||||
|
||||
@@ -116,6 +116,7 @@ class DoliDb
|
||||
}
|
||||
|
||||
// Essai connexion serveur
|
||||
// We do not try to connect to database, only to server. Connect to database is done later in constrcutor
|
||||
$this->db = $this->connect($host, $user, $pass, '', $port);
|
||||
|
||||
if ($this->db)
|
||||
@@ -132,7 +133,7 @@ class DoliDb
|
||||
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect mysqli_connect_error=".$this->error,LOG_ERR);
|
||||
}
|
||||
|
||||
// Si connexion serveur ok et si connexion base demand<EFBFBD>e, on essaie connexion base
|
||||
// Si connexion serveur ok et si connexion base demandee, on essaie connexion base
|
||||
if ($this->connected && $name)
|
||||
{
|
||||
if ($this->select_db($name))
|
||||
@@ -141,13 +142,15 @@ class DoliDb
|
||||
$this->database_name = $name;
|
||||
$this->ok = 1;
|
||||
|
||||
// If client connected with different charset than Dolibarr database
|
||||
// (La base Dolibarr was forced to this->forcecharset during install)
|
||||
/*if (mysqli_client_encoding ( $this->db ) != $this->getDefaultCharacterSetDatabase())
|
||||
// If client connected with different charset than Dolibarr HTML output
|
||||
$clientmustbe='';
|
||||
if (eregi('UTF-8',$conf->character_set_client)) $clientmustbe='utf8';
|
||||
if (eregi('ISO-8859-1',$conf->character_set_client)) $clientmustbe='latin1';
|
||||
if (mysqli_client_encoding($this->db) != $clientmustbe)
|
||||
{
|
||||
$this->query("SET NAMES '".$this->forcecharset."'", $this->db);
|
||||
$this->query("SET CHARACTER SET '".$this->forcecharset."'", $this->db);
|
||||
}*/
|
||||
$this->query("SET NAMES '".$clientmustbe."'", $this->db);
|
||||
//$this->query("SET CHARACTER SET ". $this->forcecharset);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -155,13 +158,26 @@ class DoliDb
|
||||
$this->database_name = '';
|
||||
$this->ok = 0;
|
||||
$this->error=$this->error();
|
||||
dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
|
||||
dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db ".$this->error,LOG_ERR);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pas de selection de base demandee, ok ou ko
|
||||
$this->database_selected = 0;
|
||||
|
||||
if ($this->connected)
|
||||
{
|
||||
// If client connected with different charset than Dolibarr HTML output
|
||||
$clientmustbe='';
|
||||
if (eregi('UTF-8',$conf->character_set_client)) $clientmustbe='utf8';
|
||||
if (eregi('ISO-8859-1',$conf->character_set_client)) $clientmustbe='latin1';
|
||||
if (mysqli_client_encoding($this->db) != $clientmustbe)
|
||||
{
|
||||
$this->query("SET NAMES '".$clientmustbe."'", $this->db);
|
||||
//$this->query("SET CHARACTER SET ". $this->forcecharset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->ok;
|
||||
@@ -190,7 +206,7 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Connection vers le serveur
|
||||
* \brief Connexion to server
|
||||
* \param host database server host
|
||||
* \param login login
|
||||
* \param passwd password
|
||||
@@ -201,7 +217,7 @@ class DoliDb
|
||||
*/
|
||||
function connect($host, $login, $passwd, $name, $port=0)
|
||||
{
|
||||
dolibarr_syslog("DoliDB::connect host=$host, port=$port, login=$login, passwd=--hidden--, name=$name");
|
||||
dolibarr_syslog("DoliDB::connect host=$host, port=$port, login=$login, passwd=--hidden--, name=$name",LOG_DEBUG);
|
||||
|
||||
$newhost=$host;
|
||||
$newport=$port;
|
||||
@@ -210,17 +226,8 @@ class DoliDb
|
||||
if (! $newport) $newport=3306;
|
||||
|
||||
$this->db = @mysqli_connect($newhost, $login, $passwd, $name, $newport);
|
||||
// Force recors to latin1 if database is in utf8 by default
|
||||
// Removed becasue faile on my PHP-Mysql.
|
||||
// De plus, la base est forcement en latin1 avec
|
||||
// les nouvelles version de Dolibarr car force par l'install Dolibarr.
|
||||
//$this->query('SET NAMES '.$this->forcecharset);
|
||||
|
||||
//print "Resultat fonction connect: ".$this->db;
|
||||
if ($this->db)
|
||||
{
|
||||
$this->query("SET NAMES '".$this->forcecharset."'", $this->db);
|
||||
$this->query("SET CHARACTER SET '".$this->forcecharset."'", $this->db);
|
||||
}
|
||||
return $this->db;
|
||||
}
|
||||
|
||||
@@ -350,7 +357,7 @@ class DoliDb
|
||||
$query = trim($query);
|
||||
if (! $this->database_name)
|
||||
{
|
||||
// Ordre SQL ne n<EFBFBD>cessitant pas de connexion <EFBFBD> une base (exemple: CREATE DATABASE
|
||||
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
|
||||
$ret = mysqli_query($this->db,$query);
|
||||
}
|
||||
else
|
||||
@@ -381,7 +388,7 @@ class DoliDb
|
||||
*/
|
||||
function fetch_object($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
return mysqli_fetch_object($resultset);
|
||||
}
|
||||
@@ -395,7 +402,7 @@ class DoliDb
|
||||
|
||||
function fetch_array($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
return mysqli_fetch_array($resultset);
|
||||
}
|
||||
@@ -408,7 +415,7 @@ class DoliDb
|
||||
|
||||
function fetch_row($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_bool($resultset))
|
||||
{
|
||||
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||
@@ -416,7 +423,7 @@ class DoliDb
|
||||
}
|
||||
else
|
||||
{
|
||||
// si le curseur est un bool<EFBFBD>en on retourne la valeur 0
|
||||
// si le curseur est un booleen on retourne la valeur 0
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -521,11 +528,11 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
* \brief Formatage (par la base de donn<6E>es) d'un champ de la base au format tms ou Date (YYYY-MM-DD HH:MM:SS)
|
||||
* afin de retourner une donn<6E>e toujours au format universel date tms unix.
|
||||
* \brief Formatage (par la base de donn<6E>es) d'un champ de la base au format TMS ou Date (YYYY-MM-DD HH:MM:SS)
|
||||
* afin de retourner une donn<6E>e toujours au format universel date TMS unix.
|
||||
* Fonction <20> utiliser pour g<>n<EFBFBD>rer les SELECT.
|
||||
* \param param Date au format text <20> convertir
|
||||
* \return date Date au format tms.
|
||||
* \param param Nom champ base de type date ou chaine 'YYYY-MM-DD HH:MM:SS'
|
||||
* \return date Date au format TMS.
|
||||
* \TODO Remove unix_timestamp functions
|
||||
*/
|
||||
function pdate($param)
|
||||
@@ -536,8 +543,8 @@ class DoliDb
|
||||
/**
|
||||
* \brief Formatage (par PHP) d'une date vers format texte pour insertion dans champ date.
|
||||
* Fonction <20> utiliser pour g<>n<EFBFBD>rer les INSERT, UPDATE ou les clauses WHERE
|
||||
* \param param Date tms <20> convertir
|
||||
* \return date Date au format text YYYYMMDDHHMMSS.
|
||||
* \param param Date TMS <20> convertir
|
||||
* \return date Date au format texte YYYYMMDDHHMMSS.
|
||||
*/
|
||||
function idate($param)
|
||||
{
|
||||
@@ -688,20 +695,23 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
\brief Cr<EFBFBD>ation d'une nouvelle base de donn<6E>e
|
||||
\param database nom de la database <20> cr<63>er
|
||||
\return resource resource d<EFBFBD>finie si ok, null si k
|
||||
\remarks Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
|
||||
* \brief Create a new database
|
||||
* \param database Database name to create
|
||||
* \return resource resource defined if OK, null if KO
|
||||
* \remarks Do not use function xxx_create_db (xxx=mysql, ...) as they are deprecated
|
||||
* We force to create database with charset this->forcecharset and collate this->forcecollate
|
||||
*/
|
||||
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;
|
||||
|
||||
dolibarr_syslog($sql,LOG_DEBUG);
|
||||
$ret=$this->query($sql);
|
||||
if (! $ret)
|
||||
{
|
||||
// On r<>essaie pour compatibilit<EFBFBD> avec Mysql < 4.1.1
|
||||
// We try again for compatibility with Mysql < 4.1.1
|
||||
$sql = 'CREATE DATABASE '.$database;
|
||||
$ret=$this->query($sql);
|
||||
}
|
||||
@@ -721,7 +731,7 @@ class DoliDb
|
||||
$like = '';
|
||||
if ($table) $like = "LIKE '".$table."'";
|
||||
$sql="SHOW TABLES FROM ".$database." ".$like.";";
|
||||
// $sql;
|
||||
//print $sql;
|
||||
$result = $this->query($sql);
|
||||
while($row = $this->fetch_row($result))
|
||||
{
|
||||
@@ -799,7 +809,7 @@ class DoliDb
|
||||
$sql .= ",".implode(',',$sqlk);
|
||||
$sql .=") type=".$type;
|
||||
|
||||
dolibarr_syslog($sql);
|
||||
dolibarr_syslog($sql,LOG_DEBUG);
|
||||
if(! $this -> query($sql))
|
||||
return -1;
|
||||
else
|
||||
@@ -816,7 +826,7 @@ class DoliDb
|
||||
{
|
||||
$sql="DESC ".$table." ".$field;
|
||||
|
||||
dolibarr_syslog($sql);
|
||||
dolibarr_syslog($sql,LOG_DEBUG);
|
||||
$this->results = $this->query($sql);
|
||||
return $this->results;
|
||||
}
|
||||
@@ -850,6 +860,7 @@ class DoliDb
|
||||
$sql .= " ".$field_desc['extra'];
|
||||
$sql .= " ".$field_position;
|
||||
|
||||
dolibarr_syslog($sql,LOG_DEBUG);
|
||||
if(! $this -> query($sql))
|
||||
return -1;
|
||||
else
|
||||
@@ -902,7 +913,8 @@ class DoliDb
|
||||
* \brief Return charset used to store data in database
|
||||
* \return string Charset
|
||||
*/
|
||||
function getDefaultCharacterSetDatabase(){
|
||||
function getDefaultCharacterSetDatabase()
|
||||
{
|
||||
$resql=$this->query('SHOW VARIABLES LIKE \'character_set_database\'');
|
||||
if (!$resql)
|
||||
{
|
||||
@@ -913,7 +925,12 @@ class DoliDb
|
||||
return $liste['Value'];
|
||||
}
|
||||
|
||||
function getListOfCharacterSet(){
|
||||
/**
|
||||
* \brief Return list of available charset that can be used to store data in database
|
||||
* \return array List of Charset
|
||||
*/
|
||||
function getListOfCharacterSet()
|
||||
{
|
||||
$resql=$this->query('SHOW CHARSET');
|
||||
$liste = array();
|
||||
if ($resql)
|
||||
@@ -937,7 +954,8 @@ class DoliDb
|
||||
* \brief Return collation used in database
|
||||
* \return string Collation value
|
||||
*/
|
||||
function getDefaultCollationDatabase(){
|
||||
function getDefaultCollationDatabase()
|
||||
{
|
||||
$resql=$this->query('SHOW VARIABLES LIKE \'collation_database\'');
|
||||
if (!$resql)
|
||||
{
|
||||
@@ -948,7 +966,12 @@ class DoliDb
|
||||
return $liste['Value'];
|
||||
}
|
||||
|
||||
function getListOfCollation(){
|
||||
/**
|
||||
* \brief Return list of available collation that can be used for database
|
||||
* \return array Liste of Collation
|
||||
*/
|
||||
function getListOfCollation()
|
||||
{
|
||||
$resql=$this->query('SHOW COLLATION');
|
||||
$liste = array();
|
||||
if ($resql)
|
||||
|
||||
Reference in New Issue
Block a user