Fix: pagecode when using postgresql

Conflicts:
	htdocs/support/inc.php
This commit is contained in:
Laurent Destailleur 2012-05-06 15:36:53 +02:00
parent 8b07aa3623
commit d60061f682
5 changed files with 36 additions and 22 deletions

View File

@ -40,7 +40,7 @@ class DoliDBPgsql
//! Database label //! Database label
static $label='PostgreSQL'; // Label of manager static $label='PostgreSQL'; // Label of manager
//! Charset //! Charset
var $forcecharset='latin1'; // Can't be static as it may be forced with a dynamic value var $forcecharset='UTF8'; // Can't be static as it may be forced with a dynamic value
//! Version min database //! Version min database
static $versionmin=array(8,4,0); // Version min database static $versionmin=array(8,4,0); // Version min database
@ -111,6 +111,7 @@ class DoliDBPgsql
// Essai connexion serveur // Essai connexion serveur
//print "$host, $user, $pass, $name, $port"; //print "$host, $user, $pass, $name, $port";
$this->db = $this->connect($host, $user, $pass, $name, $port); $this->db = $this->connect($host, $user, $pass, $name, $port);
if ($this->db) if ($this->db)
{ {
$this->connected = 1; $this->connected = 1;
@ -374,12 +375,13 @@ class DoliDBPgsql
$name = str_replace(array("\\", "'"), array("\\\\", "\\'"), $name); $name = str_replace(array("\\", "'"), array("\\\\", "\\'"), $name);
$port = str_replace(array("\\", "'"), array("\\\\", "\\'"), $port); $port = str_replace(array("\\", "'"), array("\\\\", "\\'"), $port);
//if (! $name) $name="postgres"; if (! $name) $name="postgres"; // When try to connect using admin user
// try first Unix domain socket (local) // try first Unix domain socket (local)
if ((! $host || $host == "" || $host == "localhost" || $host == "127.0.0.1") && ! defined('NOLOCALSOCKETPGCONNECT')) if ((! $host || $host == "" || $host == "localhost" || $host == "127.0.0.1") && ! defined('NOLOCALSOCKETPGCONNECT'))
{ {
$con_string = "dbname='".$name."' user='".$login."' password='".$passwd."'"; $con_string = "dbname='".$name."' user='".$login."' password='".$passwd."'"; // $name may be empty
//print "$con_string";exit;
$this->db = pg_connect($con_string); $this->db = pg_connect($con_string);
} }
@ -978,10 +980,15 @@ class DoliDBPgsql
*/ */
function DDLCreateDb($database,$charset='',$collation='',$owner='') function DDLCreateDb($database,$charset='',$collation='',$owner='')
{ {
if (empty($charset)) $charset=$this->forcecharset; if (empty($charset)) $charset=$this->forcecharset;
if (empty($collation)) $collation=$this->forcecollate; if (empty($collation)) $collation=$this->forcecollate;
$ret=$this->query('CREATE DATABASE '.$database.' OWNER '.$owner.' ENCODING \''.$charset.'\''); // Test charset match LC_TYPE (pgsql error otherwise)
//print $charset.' '.setlocale(LC_CTYPE,'0'); exit;
$sql='CREATE DATABASE '.$database.' OWNER '.$owner.' ENCODING \''.$charset.'\'';
dol_syslog($sql,LOG_DEBUG);
$ret=$this->query($sql);
return $ret; return $ret;
} }

View File

@ -92,8 +92,8 @@ $dolibarr_main_document_root_alt=trim($dolibarr_main_document_root_alt);
if (empty($dolibarr_main_db_port)) $dolibarr_main_db_port=0; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' if (empty($dolibarr_main_db_port)) $dolibarr_main_db_port=0; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql'
if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql'
if (empty($dolibarr_main_db_prefix)) $dolibarr_main_db_prefix='llx_'; if (empty($dolibarr_main_db_prefix)) $dolibarr_main_db_prefix='llx_';
if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set='latin1'; // Old installation if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($dolibarr_main_db_type=='mysql'?'latin1':''); // Old installation
if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation='latin1_swedish_ci'; // Old installation if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($dolibarr_main_db_type=='mysql'?'latin1_swedish_ci':''); // Old installation
if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey='';
if (empty($dolibarr_main_limit_users)) $dolibarr_main_limit_users=0; if (empty($dolibarr_main_limit_users)) $dolibarr_main_limit_users=0;

View File

@ -518,7 +518,8 @@ if (! $error && $db->connected && $action == "set")
if (! $error && (isset($_POST["db_create_database"]) && $_POST["db_create_database"] == "on")) if (! $error && (isset($_POST["db_create_database"]) && $_POST["db_create_database"] == "on"))
{ {
dolibarr_install_syslog("etape1: Create database : ".$dolibarr_main_db_name, LOG_DEBUG); dolibarr_install_syslog("etape1: Create database : ".$dolibarr_main_db_name, LOG_DEBUG);
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port); $newdb=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port);
//print 'eee'.$conf->db->type." ".$conf->db->host." ".$userroot." ".$passroot." ".$conf->db->port." ".$db->connected." ".$newdb->forcecharset;exit;
if ($db->connected) if ($db->connected)
{ {
@ -545,6 +546,7 @@ if (! $error && $db->connected && $action == "set")
// Affiche aide diagnostique // Affiche aide diagnostique
print '<tr><td colspan="2"><br>'; print '<tr><td colspan="2"><br>';
print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'<br>'; print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'<br>';
print $db->lasterror().'<br>';
print $langs->trans("IfDatabaseExistsGoBackAndCheckCreate"); print $langs->trans("IfDatabaseExistsGoBackAndCheckCreate");
print '<br>'; print '<br>';
print '</td></tr>'; print '</td></tr>';
@ -575,7 +577,7 @@ if (! $error && $db->connected && $action == "set")
} // Fin si "creation database" } // Fin si "creation database"
// We testOn test maintenant l'acces par le user base dolibarr // We test access with dolibarr database user (not admin)
if (! $error) if (! $error)
{ {
dolibarr_install_syslog("etape1: connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name, LOG_DEBUG); dolibarr_install_syslog("etape1: connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name, LOG_DEBUG);

View File

@ -269,9 +269,9 @@ function conf($dolibarr_main_document_root)
if (empty($character_set_client)) $character_set_client="UTF-8"; if (empty($character_set_client)) $character_set_client="UTF-8";
$conf->file->character_set_client=strtoupper($character_set_client); $conf->file->character_set_client=strtoupper($character_set_client);
if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set='latin1'; // Old installation if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':''); // Old installation
$conf->db->character_set=$dolibarr_main_db_character_set; $conf->db->character_set=$dolibarr_main_db_character_set;
if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation='latin1_swedish_ci'; // Old installation if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':''); // Old installation
$conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation; $conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation;
if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
$conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
@ -406,4 +406,4 @@ function dolibarr_install_syslog($message, $level=LOG_DEBUG)
dol_syslog($message,$level); dol_syslog($message,$level);
} }
?> ?>

View File

@ -77,9 +77,9 @@ if (! defined('DONOTLOADCONF') && file_exists($conffile))
$result=include_once($conffile); // Load conf file $result=include_once($conffile); // Load conf file
if ($result) if ($result)
{ {
if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility
// Clean parameters // Clean parameters
$dolibarr_main_data_root =isset($dolibarr_main_data_root)?trim($dolibarr_main_data_root):''; $dolibarr_main_data_root =isset($dolibarr_main_data_root)?trim($dolibarr_main_data_root):'';
$dolibarr_main_url_root =isset($dolibarr_main_url_root)?trim($dolibarr_main_url_root):''; $dolibarr_main_url_root =isset($dolibarr_main_url_root)?trim($dolibarr_main_url_root):'';
@ -93,7 +93,7 @@ if (! defined('DONOTLOADCONF') && file_exists($conffile))
if (! empty($dolibarr_main_data_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_data_root)) $dolibarr_main_data_root=preg_replace('/[\\/]+$/','',$dolibarr_main_data_root); if (! empty($dolibarr_main_data_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_data_root)) $dolibarr_main_data_root=preg_replace('/[\\/]+$/','',$dolibarr_main_data_root);
if (! empty($dolibarr_main_document_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_document_root_alt)) $dolibarr_main_document_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_document_root_alt); if (! empty($dolibarr_main_document_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_document_root_alt)) $dolibarr_main_document_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_document_root_alt);
if (! empty($dolibarr_main_url_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_url_root_alt)) $dolibarr_main_url_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_url_root_alt); if (! empty($dolibarr_main_url_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_url_root_alt)) $dolibarr_main_url_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_url_root_alt);
// Create conf object // Create conf object
if (! empty($dolibarr_main_document_root)) if (! empty($dolibarr_main_document_root))
{ {
@ -139,12 +139,17 @@ $suburi = strstr($uri, '/'); // $suburi contains url without domain
if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now '' if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now ''
define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...)
if (empty($character_set_client)) $character_set_client="UTF-8";
$conf->file->character_set_client=strtoupper($character_set_client);
if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':''); // Old installation
$conf->db->character_set=$dolibarr_main_db_character_set;
if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':''); // Old installation
$conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation;
if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
$conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey='';
$conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey;
if (empty($conf->file->character_set_client)) $conf->file->character_set_client="UTF-8";
if (empty($conf->db->character_set)) $conf->db->character_set='utf8';
if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci';
if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0;
if (empty($conf->db->dolibarr_main_db_cryptkey)) $conf->db->dolibarr_main_db_cryptkey='';
if (empty($conf->db->user)) $conf->db->user=''; if (empty($conf->db->user)) $conf->db->user='';
@ -185,7 +190,7 @@ function conf($dolibarr_main_document_root)
$conf->db->user = trim($dolibarr_main_db_user); $conf->db->user = trim($dolibarr_main_db_user);
$conf->db->pass = trim($dolibarr_main_db_pass); $conf->db->pass = trim($dolibarr_main_db_pass);
if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='latin1_swedish_ci'; if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci';
return 1; return 1;
} }
@ -248,4 +253,4 @@ function pFooter($nonext=0,$setuplang='')
print '</html>'."\n"; print '</html>'."\n";
} }
?> ?>