Qual: Déplacement des drivers de base de données de /lib dans /lib/databases pour plus de clarté.
New: Ajout du driver mysqli pour accéder à mysql via les fonction mysqli de la 4.1
This commit is contained in:
parent
0cfbc49ef3
commit
9294334913
1
README
1
README
@ -125,3 +125,4 @@ This is feature Dolibarr does not support completely yet:
|
|||||||
called "Non Perçue Récupérable").
|
called "Non Perçue Récupérable").
|
||||||
- Accountancy.
|
- Accountancy.
|
||||||
- Dolibarr can manage only one currency.
|
- Dolibarr can manage only one currency.
|
||||||
|
- Dolibarr does not make coffee (not yet).
|
||||||
|
|||||||
14
README-FR
14
README-FR
@ -6,8 +6,8 @@ Documentation d
|
|||||||
1) Installer Dolibarr
|
1) Installer Dolibarr
|
||||||
2) Mettre à jour Dolibarr depuis une ancienne version
|
2) Mettre à jour Dolibarr depuis une ancienne version
|
||||||
3) Ce qui est nouveau dans cette version
|
3) Ce qui est nouveau dans cette version
|
||||||
4) Que peux faire Dolibarr
|
4) Ce que peux faire Dolibarr
|
||||||
5) Que ne peux pas encore faire Dolibarr
|
5) Ce que ne peux pas Dolibarr (pas encore)
|
||||||
|
|
||||||
|
|
||||||
I - INSTALLER DOLIBARR
|
I - INSTALLER DOLIBARR
|
||||||
@ -120,8 +120,8 @@ Miscellanous:
|
|||||||
|
|
||||||
V - WHAT DOLIBARR CAN'T DO YET (TODO LIST)
|
V - WHAT DOLIBARR CAN'T DO YET (TODO LIST)
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
This is feature Dolibarr does not support completely yet:
|
Voici un liste de fonctionnalité pas encore gérées par Dolibarr:
|
||||||
- "NPR VAT Rate" (French particularity for managing VAT in DOM-TOM
|
- "TVA NPR" (TVA "Non Perçue Récupérable").
|
||||||
called "Non Perçue Récupérable").
|
- Pas de compta.
|
||||||
- Accountancy.
|
- Dolibarr ne gère qu'une seule monnaie.
|
||||||
- Dolibarr can manage only one currency.
|
- Dolibarr ne fait pas le café (pas encore).
|
||||||
|
|||||||
@ -65,7 +65,7 @@ print '<ul>';
|
|||||||
print '<li>';
|
print '<li>';
|
||||||
if (eregi('^fr_',$langs->getDefaultLang()))
|
if (eregi('^fr_',$langs->getDefaultLang()))
|
||||||
{
|
{
|
||||||
print '<a target="blank" href="http://www.dolibarr.com/">'.$langs->trans("OfficialWebSite").'</a>';
|
print '<a target="blank" href="http://www.dolibarr.com/">'.$langs->trans("OfficialWebSiteFr").'</a>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -439,62 +439,6 @@ class Cotisation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Somme des dons encaissés
|
|
||||||
*/
|
|
||||||
|
|
||||||
function sum_actual()
|
|
||||||
{
|
|
||||||
$sql = "SELECT sum(amount)";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don";
|
|
||||||
$sql .= " WHERE fk_statut = 3";
|
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
|
||||||
{
|
|
||||||
$row = $this->db->fetch_row(0);
|
|
||||||
|
|
||||||
return $row[0];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Paiement recu en attente d'encaissement
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function sum_pending()
|
|
||||||
{
|
|
||||||
$sql = "SELECT sum(amount)";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don";
|
|
||||||
$sql .= " WHERE fk_statut = 2";
|
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
|
||||||
{
|
|
||||||
$row = $this->db->fetch_row(0);
|
|
||||||
|
|
||||||
return $row[0];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Somme des promesses de dons validées
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
function sum_intent()
|
|
||||||
{
|
|
||||||
$sql = "SELECT sum(amount)";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don";
|
|
||||||
$sql .= " WHERE fk_statut = 1";
|
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
|
||||||
{
|
|
||||||
$row = $this->db->fetch_row(0);
|
|
||||||
|
|
||||||
return $row[0];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require("./pre.inc.php");
|
require("./pre.inc.php");
|
||||||
include_once $dolibarr_main_document_root."/lib/".$conf->db->type.".lib.php";
|
include_once $dolibarr_main_document_root."/lib/databases/".$conf->db->type.".lib.php";
|
||||||
|
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require("./pre.inc.php");
|
require("./pre.inc.php");
|
||||||
include_once $dolibarr_main_document_root."/lib/".$conf->db->type.".lib.php";
|
include_once $dolibarr_main_document_root."/lib/databases/".$conf->db->type.".lib.php";
|
||||||
|
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require("./pre.inc.php");
|
require("./pre.inc.php");
|
||||||
include_once $dolibarr_main_document_root."/lib/".$conf->db->type.".lib.php";
|
include_once $dolibarr_main_document_root."/lib/databases/".$conf->db->type.".lib.php";
|
||||||
|
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require("./pre.inc.php");
|
require("./pre.inc.php");
|
||||||
include_once $dolibarr_main_document_root."/lib/".$conf->db->type.".lib.php";
|
include_once $dolibarr_main_document_root."/lib/databases/".$conf->db->type.".lib.php";
|
||||||
|
|
||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
$langs->load("user");
|
$langs->load("user");
|
||||||
@ -84,20 +84,8 @@ print "<br>\n";
|
|||||||
// Base de donnée
|
// Base de donnée
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print "<tr class=\"liste_titre\"><td colspan=\"2\">".$langs->trans("Database")."</td></tr>\n";
|
print "<tr class=\"liste_titre\"><td colspan=\"2\">".$langs->trans("Database")."</td></tr>\n";
|
||||||
|
print "<tr $bc[0]><td>".$langs->trans("Version")."</td><td>" . $db->getVersion() . "</td></tr>\n";
|
||||||
if ($conf->db->type == 'mysql')
|
print "<tr $bc[1]><td width=\"240\">".$langs->trans("DriverType")."</td><td>" . $conf->db->type . "</td></tr>\n";
|
||||||
{
|
|
||||||
$sql = "SHOW VARIABLES LIKE 'version'";
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if ($result)
|
|
||||||
{
|
|
||||||
$row = $db->fetch_row();
|
|
||||||
}
|
|
||||||
|
|
||||||
print "<tr $bc[0]><td>".$langs->trans("Version")."</td><td>" . $row[1] . "</td></tr>\n";
|
|
||||||
print "<tr $bc[1]><td width=\"240\">".$langs->trans("Type")."</td><td>" . $conf->db->type . "</td></tr>\n";
|
|
||||||
print "<tr $bc[0]><td>".$langs->trans("Host")."</td><td>" . $conf->db->host . "</td></tr>\n";
|
print "<tr $bc[0]><td>".$langs->trans("Host")."</td><td>" . $conf->db->host . "</td></tr>\n";
|
||||||
print "<tr $bc[1]><td>".$langs->trans("User")."</td><td>" . $conf->db->user . " </td></tr>\n";
|
print "<tr $bc[1]><td>".$langs->trans("User")."</td><td>" . $conf->db->user . " </td></tr>\n";
|
||||||
print "<tr $bc[0]><td>".$langs->trans("Password")."</td><td>" . ereg_replace(".","*",$conf->db->pass) . " </td></tr>\n";
|
print "<tr $bc[0]><td>".$langs->trans("Password")."</td><td>" . ereg_replace(".","*",$conf->db->pass) . " </td></tr>\n";
|
||||||
|
|||||||
@ -81,25 +81,25 @@ if ($exc->error_message);
|
|||||||
print '<table class="notopnoleftnoright" width="100%">';
|
print '<table class="notopnoleftnoright" width="100%">';
|
||||||
print '<tr><td valign="top" width="30%">';
|
print '<tr><td valign="top" width="30%">';
|
||||||
|
|
||||||
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."facturedet";
|
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."facturedet";
|
||||||
$sql .= " WHERE fk_export_compta = 0";
|
$sql .= " WHERE fk_export_compta = 0";
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$row = $db->fetch_row($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$nbfac = $row[0];
|
$nbfac = $obj->nb;
|
||||||
|
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."paiement";
|
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."paiement";
|
||||||
$sql .= " WHERE fk_export_compta = 0";
|
$sql .= " WHERE fk_export_compta = 0";
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$row = $db->fetch_row($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$nbp = $row[0];
|
$nbp = $obj->nb;
|
||||||
|
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,35 +67,37 @@ if (! $mesg) {
|
|||||||
$px->draw($filename);
|
$px->draw($filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT count(*), date_format(datef,'%Y') as dm, sum(total) FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0 ";
|
$sql = "SELECT count(*) as nb, date_format(datef,'%Y') as dm, sum(total) as total FROM ".MAIN_DB_PREFIX."facture WHERE fk_statut > 0 ";
|
||||||
if ($socidp)
|
if ($socidp)
|
||||||
{
|
{
|
||||||
$sql .= " AND fk_soc = $socidp";
|
$sql .= " AND fk_soc = $socidp";
|
||||||
}
|
}
|
||||||
$sql .= " GROUP BY dm DESC ";
|
$sql .= " GROUP BY dm DESC ";
|
||||||
if ($db->query($sql))
|
$result=$db->query($sql);
|
||||||
|
if ($resql)
|
||||||
{
|
{
|
||||||
$num = $db->num_rows();
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
print '<tr><td align="center">'.$langs->trans("Year").'</td><td width="10%" align="center">'.$langs->trans("NumberOfBills").'</td><td align="center">'.$langs->trans("AmountTotal").'</td>';
|
print '<tr><td align="center">'.$langs->trans("Year").'</td><td width="10%" align="center">'.$langs->trans("NumberOfBills").'</td><td align="center">'.$langs->trans("AmountTotal").'</td>';
|
||||||
print '<td align="center" valign="top" rowspan="'.($num + 1).'">';
|
print '<td align="center" valign="top" rowspan="'.($num + 1).'">';
|
||||||
if ($mesg) { print $mesg; }
|
if ($mesg) { print $mesg; }
|
||||||
else { print '<img src="'.$fileurl.'" alt="Nombre de factures par mois">'; }
|
else { print '<img src="'.$fileurl.'" alt="Nombre de factures par mois">'; }
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$row = $db->fetch_row($i);
|
$obj = $db->fetch_object($resql);
|
||||||
$nbproduct = $row[0];
|
$nbproduct = $obj->nb;
|
||||||
$year = $row[1];
|
$year = $obj->dm;
|
||||||
print "<tr>";
|
$total = price($obj->total);
|
||||||
print '<td align="center"><a href="month.php?year='.$year.'">'.$year.'</a></td><td align="center">'.$nbproduct.'</td><td align="center">'.price($row[2]).'</td></tr>';
|
print "<tr>";
|
||||||
$i++;
|
print '<td align="center"><a href="month.php?year='.$year.'">'.$year.'</a></td><td align="center">'.$nbproduct.'</td><td align="center">'.$total.'</td></tr>';
|
||||||
}
|
$i++;
|
||||||
|
}
|
||||||
print '</table>';
|
|
||||||
$db->free();
|
print '</table>';
|
||||||
|
$db->free();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
@ -573,7 +573,7 @@ else
|
|||||||
/*
|
/*
|
||||||
* Contrat
|
* Contrat
|
||||||
*/
|
*/
|
||||||
if ($contrat->brouillon == 1 && $user->rights->contrat->creer)
|
if ($contrat->brouillon && $user->rights->contrat->creer)
|
||||||
{
|
{
|
||||||
print '<form action="fiche.php?id='.$id.'" method="post">';
|
print '<form action="fiche.php?id='.$id.'" method="post">';
|
||||||
print '<input type="hidden" name="action" value="setremise">';
|
print '<input type="hidden" name="action" value="setremise">';
|
||||||
@ -628,11 +628,11 @@ else
|
|||||||
print '</td><td colspan="3">';
|
print '</td><td colspan="3">';
|
||||||
if ($_GET["action"] == "classer")
|
if ($_GET["action"] == "classer")
|
||||||
{
|
{
|
||||||
$html->form_project("fiche.php?id=$id",$contrat->fk_soc,$contrat->fk_projet,"projetid");
|
$html->form_project("fiche.php?id=$id",$contrat->socidp,$contrat->fk_projet,"projetid");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$html->form_project("fiche.php?id=$id",$contrat->fk_soc,$contrat->fk_projet,"none");
|
$html->form_project("fiche.php?id=$id",$contrat->socidp,$contrat->fk_projet,"none");
|
||||||
}
|
}
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -477,88 +477,55 @@ class Don
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* \brief Classe le don comme encaissé
|
* \brief Classe le don comme encaissé
|
||||||
* \param rowid id du don à modifier
|
* \param rowid id du don à modifier
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function set_encaisse($rowid)
|
function set_encaisse($rowid)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 3 WHERE rowid = $rowid AND fk_statut = 2;";
|
||||||
|
|
||||||
|
if ( $this->db->query( $sql) )
|
||||||
|
{
|
||||||
|
if ( $this->db->affected_rows() )
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 3 WHERE rowid = $rowid AND fk_statut = 2;";
|
/**
|
||||||
|
* \brief Somme des dons
|
||||||
|
* \param param 1=promesses de dons validées , 2=xxx, 3=encaissés
|
||||||
|
*/
|
||||||
|
function sum_donations($param)
|
||||||
|
{
|
||||||
|
$result=0;
|
||||||
|
|
||||||
|
$sql = "SELECT sum(amount) as total";
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX."don";
|
||||||
|
$sql.= " WHERE fk_statut = ".$param;
|
||||||
|
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
$result=$obj->total;
|
||||||
|
}
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
return $result;
|
||||||
{
|
}
|
||||||
if ( $this->db->affected_rows() )
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dolibarr_print_error($this->db);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* \brief Somme des dons encaissés
|
|
||||||
*/
|
|
||||||
function sum_actual()
|
|
||||||
{
|
|
||||||
$sql = "SELECT sum(amount)";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don";
|
|
||||||
$sql .= " WHERE fk_statut = 3";
|
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
|
||||||
{
|
|
||||||
$row = $this->db->fetch_row(0);
|
|
||||||
|
|
||||||
return $row[0];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* \brief Paiement recu en attente d'encaissement
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function sum_pending()
|
|
||||||
{
|
|
||||||
$sql = "SELECT sum(amount)";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don";
|
|
||||||
$sql .= " WHERE fk_statut = 2";
|
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
|
||||||
{
|
|
||||||
$row = $this->db->fetch_row(0);
|
|
||||||
|
|
||||||
return $row[0];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* \brief Somme des promesses de dons validées
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function sum_intent()
|
|
||||||
{
|
|
||||||
$sql = "SELECT sum(amount)";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don";
|
|
||||||
$sql .= " WHERE fk_statut = 1";
|
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
|
||||||
{
|
|
||||||
$row = $this->db->fetch_row(0);
|
|
||||||
|
|
||||||
return $row[0];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@ -153,7 +153,7 @@ if ($_POST["action"] == "set")
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Chargement driver acces bases
|
// Chargement driver acces bases
|
||||||
include_once("../lib/".$dolibarr_main_db_type.".lib.php");
|
include_once("../lib/databases/".$dolibarr_main_db_type.".lib.php");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
include_once("./inc.php");
|
include_once("./inc.php");
|
||||||
|
if (file_exists($conffile)) include_once($conffile);
|
||||||
|
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
||||||
|
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
||||||
|
require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php");
|
||||||
|
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
||||||
|
|
||||||
$etape = 2;
|
$etape = 2;
|
||||||
$ok = 0;
|
$ok = 0;
|
||||||
@ -45,29 +50,15 @@ $langs->setDefaultLang($setuplang);
|
|||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
$langs->load("install");
|
$langs->load("install");
|
||||||
|
|
||||||
|
if ($dolibarr_main_db_type == "mysql") $choix=1;
|
||||||
|
if ($dolibarr_main_db_type == "mysqli") $choix=1;
|
||||||
|
if ($dolibarr_main_db_type == "pqsql") $choix=2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pHeader($langs->trans("CreateDatabaseObjects"),"etape4");
|
pHeader($langs->trans("CreateDatabaseObjects"),"etape4");
|
||||||
|
|
||||||
|
|
||||||
if (file_exists($conffile))
|
|
||||||
{
|
|
||||||
include_once($conffile);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($dolibarr_main_db_type == "mysql")
|
|
||||||
{
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/mysql.lib.php");
|
|
||||||
$choix=1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/pgsql.lib.php");
|
|
||||||
$choix=2;
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
|
||||||
|
|
||||||
|
|
||||||
if ($_POST["action"] == "set")
|
if ($_POST["action"] == "set")
|
||||||
{
|
{
|
||||||
print '<h2>'.$langs->trans("Database").'</h2>';
|
print '<h2>'.$langs->trans("Database").'</h2>';
|
||||||
|
|||||||
@ -30,6 +30,12 @@
|
|||||||
|
|
||||||
|
|
||||||
include_once("./inc.php");
|
include_once("./inc.php");
|
||||||
|
if (file_exists($conffile)) include_once($conffile);
|
||||||
|
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
||||||
|
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
||||||
|
require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php");
|
||||||
|
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
||||||
|
|
||||||
|
|
||||||
$setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto');
|
$setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto');
|
||||||
$langs->setDefaultLang($setuplang);
|
$langs->setDefaultLang($setuplang);
|
||||||
@ -40,19 +46,7 @@ $langs->load("install");
|
|||||||
|
|
||||||
pHeader($langs->trans("AdminAccountCreation"),"etape5");
|
pHeader($langs->trans("AdminAccountCreation"),"etape5");
|
||||||
|
|
||||||
if (file_exists($conffile))
|
|
||||||
{
|
|
||||||
include_once($conffile);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($dolibarr_main_db_type == "mysql")
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/mysql.lib.php");
|
|
||||||
else
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/pgsql.lib.php");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
|
||||||
|
|
||||||
print '<table cellspacing="0" cellpadding="2" width="100%">';
|
print '<table cellspacing="0" cellpadding="2" width="100%">';
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
include_once("./inc.php");
|
include_once("./inc.php");
|
||||||
|
if (file_exists($conffile)) include_once($conffile);
|
||||||
|
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
||||||
|
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
||||||
|
require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php");
|
||||||
|
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
||||||
|
|
||||||
$setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto');
|
$setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto');
|
||||||
$langs->setDefaultLang($setuplang);
|
$langs->setDefaultLang($setuplang);
|
||||||
@ -36,26 +41,10 @@ $langs->setDefaultLang($setuplang);
|
|||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
$langs->load("install");
|
$langs->load("install");
|
||||||
|
|
||||||
|
|
||||||
dolibarr_install_syslog("Entering etape5.php page");
|
|
||||||
|
|
||||||
|
|
||||||
$success=0;
|
$success=0;
|
||||||
|
|
||||||
if (file_exists($conffile))
|
|
||||||
{
|
|
||||||
include($conffile);
|
|
||||||
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
|
||||||
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
dolibarr_install_syslog("Entering etape5.php page");
|
||||||
if($dolibarr_main_db_type == "mysql")
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/mysql.lib.php");
|
|
||||||
else
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/pgsql.lib.php");
|
|
||||||
|
|
||||||
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
|
||||||
|
|
||||||
|
|
||||||
if ($_POST["action"] == "set" || $_POST["action"] == "upgrade")
|
if ($_POST["action"] == "set" || $_POST["action"] == "upgrade")
|
||||||
|
|||||||
@ -143,8 +143,8 @@ print $dolibarr_main_url_root;
|
|||||||
<?php
|
<?php
|
||||||
print $langs->trans("Examples").":<br>";
|
print $langs->trans("Examples").":<br>";
|
||||||
?>
|
?>
|
||||||
<li>http://dolibarr.lafrere.net</li>
|
<li>http://localhost/</li>
|
||||||
<li>http://www.lafrere.net/dolibarr</li>
|
<li>http://www.myserver.com:8180/dolibarr</li>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
@ -161,12 +161,58 @@ $dolibarr_main_db_host = "localhost";
|
|||||||
<tr>
|
<tr>
|
||||||
<!-- moi-->
|
<!-- moi-->
|
||||||
<td valign="top" class="label">
|
<td valign="top" class="label">
|
||||||
<?php echo $langs->trans("DatabaseType"); ?>
|
<?php echo $langs->trans("DriverType"); ?>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="label"><select name='db_type'>
|
<td class="label">
|
||||||
<option value='mysql'<?php echo (! isset($dolibarr_main_db_type) || $dolibarr_main_db_type=='mysql')?" selected":"" ?>>MySql</option>
|
<select name='db_type'>
|
||||||
<option value='pgsql'<?php echo (isset($dolibarr_main_db_type) && $dolibarr_main_db_type=='pgsql')?" selected":"" ?>>PostgreSQL <?php echo $langs->trans("Experimental"); ?></option>
|
<?php
|
||||||
|
|
||||||
|
$defaultype=isset($dolibarr_main_db_type)?$dolibarr_main_db_type:'mysql';
|
||||||
|
|
||||||
|
// Scan les drivers
|
||||||
|
$dir=DOL_DOCUMENT_ROOT.'/lib/databases';
|
||||||
|
$handle=opendir($dir);
|
||||||
|
$modules = array();
|
||||||
|
$nbok = $nbko = 0;
|
||||||
|
|
||||||
|
while (($file = readdir($handle))!==false)
|
||||||
|
{
|
||||||
|
if (is_readable($dir."/".$file) && eregi('^(.*)\.lib\.php',$file,$reg))
|
||||||
|
{
|
||||||
|
$type=$reg[1];
|
||||||
|
$modName = 'DoliDb';
|
||||||
|
//print "file=$file "; print "type=$type "; print "modName=$modName";
|
||||||
|
|
||||||
|
/*
|
||||||
|
include_once($dir."/".$file);
|
||||||
|
$objMod = new $modName();
|
||||||
|
if ($objMod)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
// Version min de la base
|
||||||
|
$versionmin=array();
|
||||||
|
if ($type=='mysql') $versionmin=array(3,1,0);
|
||||||
|
if ($type=='mysqli') $versionmin=array(4,1,0);
|
||||||
|
if ($type=='pgsql') $versionmin=array(8,1,0);
|
||||||
|
|
||||||
|
// Remarques
|
||||||
|
$note='';
|
||||||
|
if ($type=='mysql') $note='(Mysql >= '.versiontostring($versionmin).')';
|
||||||
|
if ($type=='mysqli') $note='(Mysql >= '.versiontostring($versionmin).')';
|
||||||
|
if ($type=='pgsql') $note='(Postgresql >= '.versiontostring($versionmin).')';
|
||||||
|
|
||||||
|
// Affiche ligne dans liste
|
||||||
|
print '<option value="'.$type.'" '.($defaultype==$type?" selected":"").'>';
|
||||||
|
print $type;
|
||||||
|
if ($note) print ' '.$note;
|
||||||
|
print '</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@ -27,6 +27,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
include_once("./inc.php");
|
include_once("./inc.php");
|
||||||
|
if (file_exists($conffile)) include_once($conffile);
|
||||||
|
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
||||||
|
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
||||||
|
require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php");
|
||||||
|
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
||||||
|
|
||||||
$migfile='^2.0.0-2.1.0.sql$';
|
$migfile='^2.0.0-2.1.0.sql$';
|
||||||
$grant_query='';
|
$grant_query='';
|
||||||
@ -47,35 +52,16 @@ $langs->setDefaultLang($setuplang);
|
|||||||
$langs->load("admin");
|
$langs->load("admin");
|
||||||
$langs->load("install");
|
$langs->load("install");
|
||||||
|
|
||||||
|
if ($dolibarr_main_db_type == "mysql") $choix=1;
|
||||||
|
if ($dolibarr_main_db_type == "mysqli") $choix=1;
|
||||||
|
if ($dolibarr_main_db_type == "pgsql") $choix=2;
|
||||||
|
|
||||||
|
|
||||||
dolibarr_install_syslog("Entering upgrade.php page");
|
dolibarr_install_syslog("Entering upgrade.php page");
|
||||||
|
|
||||||
|
|
||||||
pHeader($langs->trans("DatabaseMigration"),"upgrade2","upgrade");
|
pHeader($langs->trans("DatabaseMigration"),"upgrade2","upgrade");
|
||||||
|
|
||||||
|
|
||||||
if (file_exists($conffile))
|
|
||||||
{
|
|
||||||
include_once($conffile);
|
|
||||||
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
|
||||||
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($dolibarr_main_db_type == "mysql")
|
|
||||||
{
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/mysql.lib.php");
|
|
||||||
$choix=1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/pgsql.lib.php");
|
|
||||||
require_once($dolibarr_main_document_root . "/lib/grant.postgres.php");
|
|
||||||
$choix=2;
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
|
||||||
|
|
||||||
|
|
||||||
if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
|
if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
|
||||||
{
|
{
|
||||||
print '<h2>'.$langs->trans("DatabaseMigration").'</h2>';
|
print '<h2>'.$langs->trans("DatabaseMigration").'</h2>';
|
||||||
|
|||||||
@ -27,6 +27,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
include_once('./inc.php');
|
include_once('./inc.php');
|
||||||
|
if (file_exists($conffile)) include_once($conffile);
|
||||||
|
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
||||||
|
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
||||||
|
require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php");
|
||||||
|
require_once($dolibarr_main_document_root . "/conf/conf.class.php");
|
||||||
include_once('../facture.class.php');
|
include_once('../facture.class.php');
|
||||||
include_once('../propal.class.php');
|
include_once('../propal.class.php');
|
||||||
include_once('../commande/commande.class.php');
|
include_once('../commande/commande.class.php');
|
||||||
@ -52,6 +57,10 @@ $langs->load('install');
|
|||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$langs->load("suppliers");
|
$langs->load("suppliers");
|
||||||
|
|
||||||
|
if ($dolibarr_main_db_type == 'mysql') $choix=1;
|
||||||
|
if ($dolibarr_main_db_type == 'mysqli') $choix=1;
|
||||||
|
if ($dolibarr_main_db_type == 'pgsql') $choix=2;
|
||||||
|
|
||||||
|
|
||||||
dolibarr_install_syslog("Entering upgrade2.php page");
|
dolibarr_install_syslog("Entering upgrade2.php page");
|
||||||
|
|
||||||
@ -59,29 +68,6 @@ dolibarr_install_syslog("Entering upgrade2.php page");
|
|||||||
pHeader($langs->trans('DataMigration'),'etape5','upgrade');
|
pHeader($langs->trans('DataMigration'),'etape5','upgrade');
|
||||||
|
|
||||||
|
|
||||||
if (file_exists($conffile))
|
|
||||||
{
|
|
||||||
include_once($conffile);
|
|
||||||
if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_';
|
|
||||||
define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($dolibarr_main_db_type == 'mysql')
|
|
||||||
{
|
|
||||||
require_once($dolibarr_main_document_root . '/lib/mysql.lib.php');
|
|
||||||
$choix=1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
require_once($dolibarr_main_document_root . '/lib/pgsql.lib.php');
|
|
||||||
require_once($dolibarr_main_document_root . '/lib/grant.postgres.php');
|
|
||||||
$choix=2;
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once($dolibarr_main_document_root . '/conf/conf.class.php');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (isset($_POST['action']) && $_POST['action'] == 'upgrade')
|
if (isset($_POST['action']) && $_POST['action'] == 'upgrade')
|
||||||
{
|
{
|
||||||
print '<h2>'.$langs->trans('DataMigration').'</h2>';
|
print '<h2>'.$langs->trans('DataMigration').'</h2>';
|
||||||
@ -522,7 +508,7 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
|||||||
$nb=0;
|
$nb=0;
|
||||||
$select_sql = 'SELECT rowid, fk_facture_fourn, amount ';
|
$select_sql = 'SELECT rowid, fk_facture_fourn, amount ';
|
||||||
$select_sql .= ' FROM '.MAIN_DB_PREFIX.'paiementfourn ';
|
$select_sql .= ' FROM '.MAIN_DB_PREFIX.'paiementfourn ';
|
||||||
$select_sql .= ' WHERE fk_facture_fourn IS NOT NULL ;';
|
$select_sql .= ' WHERE fk_facture_fourn IS NOT NULL';
|
||||||
$select_resql = $db->query($select_sql);
|
$select_resql = $db->query($select_sql);
|
||||||
if ($select_resql)
|
if ($select_resql)
|
||||||
{
|
{
|
||||||
@ -531,7 +517,7 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
|||||||
$var = true;
|
$var = true;
|
||||||
|
|
||||||
// Pour chaque paiement fournisseur, on insère une ligne dans paiementfourn_facturefourn
|
// Pour chaque paiement fournisseur, on insère une ligne dans paiementfourn_facturefourn
|
||||||
while ($i < $select_num && ! $error)
|
while (($i < $select_num) && (! $error))
|
||||||
{
|
{
|
||||||
$var = !$var;
|
$var = !$var;
|
||||||
$select_obj = $db->fetch_object($select_resql);
|
$select_obj = $db->fetch_object($select_resql);
|
||||||
@ -544,7 +530,7 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
|||||||
if ($check_resql)
|
if ($check_resql)
|
||||||
{
|
{
|
||||||
$check_num = $db->num_rows($check_resql);
|
$check_num = $db->num_rows($check_resql);
|
||||||
if ($check_num === 0)
|
if ($check_num == 0)
|
||||||
{
|
{
|
||||||
if ($nb == 0)
|
if ($nb == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -62,7 +62,8 @@ Feature=Feature
|
|||||||
DolibarrLicense=License
|
DolibarrLicense=License
|
||||||
DolibarrProjectLeader=Project leader
|
DolibarrProjectLeader=Project leader
|
||||||
OtherDeveloppers=Other developers/contributors
|
OtherDeveloppers=Other developers/contributors
|
||||||
OfficialWebSite=Official web site
|
OfficialWebSite=Internationnal official web site
|
||||||
|
OfficialWebSiteFr=French official web site
|
||||||
ModuleSetup=Module setup
|
ModuleSetup=Module setup
|
||||||
ModuleFamilyBase=System
|
ModuleFamilyBase=System
|
||||||
ModuleFamilyCrm=Customer Ressource Management (CRM)
|
ModuleFamilyCrm=Customer Ressource Management (CRM)
|
||||||
@ -316,6 +317,7 @@ NbOfRecord=Nb of records
|
|||||||
Constraints=Constraints
|
Constraints=Constraints
|
||||||
ConstraintsType=Constraint's type
|
ConstraintsType=Constraint's type
|
||||||
Host=Server
|
Host=Server
|
||||||
|
DriverType=Driver type
|
||||||
SummarySystem=System information summary
|
SummarySystem=System information summary
|
||||||
SummaryConst=List of all Dolibarr setup parameters
|
SummaryConst=List of all Dolibarr setup parameters
|
||||||
SystemUpdate=System update
|
SystemUpdate=System update
|
||||||
|
|||||||
@ -20,6 +20,7 @@ URLRoot=URL Root
|
|||||||
DolibarrDatabase=Dolibarr Database
|
DolibarrDatabase=Dolibarr Database
|
||||||
DatabaseChoice=Database choice
|
DatabaseChoice=Database choice
|
||||||
DatabaseType=Database type
|
DatabaseType=Database type
|
||||||
|
DriverType=Driver type
|
||||||
Server=Server
|
Server=Server
|
||||||
ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server
|
ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server
|
||||||
DatabaseName=Database name
|
DatabaseName=Database name
|
||||||
|
|||||||
@ -61,8 +61,9 @@ Passwords=Mots de passe
|
|||||||
Feature=Fonction
|
Feature=Fonction
|
||||||
DolibarrLicense=Licence
|
DolibarrLicense=Licence
|
||||||
DolibarrProjectLeader=Chef de projet
|
DolibarrProjectLeader=Chef de projet
|
||||||
OtherDeveloppers=autres développeurs/contributeurs
|
OtherDeveloppers=Autres développeurs/contributeurs
|
||||||
OfficialWebSite=site web officiel francophone
|
OfficialWebSite=Site web officiel internationnal
|
||||||
|
OfficialWebSiteFr=Site web officiel francophone
|
||||||
ModuleSetup=Configuration du module
|
ModuleSetup=Configuration du module
|
||||||
ModuleFamilyBase=Système
|
ModuleFamilyBase=Système
|
||||||
ModuleFamilyCrm=Gestion client (CRM)
|
ModuleFamilyCrm=Gestion client (CRM)
|
||||||
@ -316,6 +317,7 @@ NbOfRecord=Nb d'enr.
|
|||||||
Constraints=Contraintes
|
Constraints=Contraintes
|
||||||
ConstraintsType=Type de contrainte
|
ConstraintsType=Type de contrainte
|
||||||
Host=Serveur
|
Host=Serveur
|
||||||
|
DriverType=Type du driver
|
||||||
SummarySystem=Résumé des informations systèmes Dolibarr
|
SummarySystem=Résumé des informations systèmes Dolibarr
|
||||||
SummaryConst=Liste de tous les paramètres de configuration Dolibarr
|
SummaryConst=Liste de tous les paramètres de configuration Dolibarr
|
||||||
SystemUpdate=Mise à jour du système
|
SystemUpdate=Mise à jour du système
|
||||||
|
|||||||
@ -20,6 +20,7 @@ URLRoot=URL Racine
|
|||||||
DolibarrDatabase=Base de données Dolibarr
|
DolibarrDatabase=Base de données Dolibarr
|
||||||
DatabaseChoice=Choix de la base de données
|
DatabaseChoice=Choix de la base de données
|
||||||
DatabaseType=Type de la base de données
|
DatabaseType=Type de la base de données
|
||||||
|
DriverType=Type du driver
|
||||||
Server=Serveur
|
Server=Serveur
|
||||||
ServerAddressDescription=Nom ou adresse ip du serveur de base de données, généralement 'localhost' quand le serveur est installé sur la même machine que le serveur web
|
ServerAddressDescription=Nom ou adresse ip du serveur de base de données, généralement 'localhost' quand le serveur est installé sur la même machine que le serveur web
|
||||||
DatabaseName=Nom de la base de données
|
DatabaseName=Nom de la base de données
|
||||||
|
|||||||
@ -43,7 +43,8 @@ class DoliDb
|
|||||||
var $type='mysql'; // Nom du gestionnaire
|
var $type='mysql'; // Nom du gestionnaire
|
||||||
var $forcecharset='latin1';
|
var $forcecharset='latin1';
|
||||||
var $forcecollate='latin1_swedish_ci';
|
var $forcecollate='latin1_swedish_ci';
|
||||||
|
var $versionmin=array(4,1,0);
|
||||||
|
|
||||||
var $results; // Resultset de la dernière requete
|
var $results; // Resultset de la dernière requete
|
||||||
|
|
||||||
var $connected; // 1 si connecté, 0 sinon
|
var $connected; // 1 si connecté, 0 sinon
|
||||||
@ -107,8 +108,8 @@ class DoliDb
|
|||||||
{
|
{
|
||||||
$this->connected = 0;
|
$this->connected = 0;
|
||||||
$this->ok = 0;
|
$this->ok = 0;
|
||||||
$this->error="Mysql PHP functions are not available in this version of PHP";
|
$this->error="Mysql PHP functions for using MySql driver are not available in this version of PHP";
|
||||||
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions 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");
|
||||||
return $this->ok;
|
return $this->ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,9 +204,10 @@ class DoliDb
|
|||||||
*/
|
*/
|
||||||
function getVersion()
|
function getVersion()
|
||||||
{
|
{
|
||||||
$resql=$this->query('SELECT VERSION()');
|
// $resql=$this->query('SELECT VERSION()');
|
||||||
$row=$this->fetch_row($resql);
|
// $row=$this->fetch_row($resql);
|
||||||
return $row[0];
|
// return $row[0];
|
||||||
|
return mysql_get_server_info($this->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -356,149 +358,11 @@ class DoliDb
|
|||||||
return mysql_fetch_object($resultset);
|
return mysql_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()
|
|
||||||
{
|
|
||||||
$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.
|
\brief Renvoie les données dans un tableau.
|
||||||
\param resultset Curseur de la requete voulue
|
\param resultset Curseur de la requete voulue
|
||||||
\return array
|
\return array
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function fetch_array($resultset=0)
|
function fetch_array($resultset=0)
|
||||||
{
|
{
|
||||||
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
@ -506,12 +370,12 @@ class DoliDb
|
|||||||
return mysql_fetch_array($resultset);
|
return mysql_fetch_array($resultset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie les données comme un tableau.
|
\brief Renvoie les données comme un tableau.
|
||||||
\param resultset Curseur de la requete voulue
|
\param resultset Curseur de la requete voulue
|
||||||
\return array
|
\return array
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function fetch_row($resultset=0)
|
function fetch_row($resultset=0)
|
||||||
{
|
{
|
||||||
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
@ -531,14 +395,13 @@ class DoliDb
|
|||||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||||
return mysql_num_rows($resultset);
|
return mysql_num_rows($resultset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
|
\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
|
\param resultset Curseur de la requete voulue
|
||||||
\return int Nombre de lignes
|
\return int Nombre de lignes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function affected_rows($resultset=0)
|
function affected_rows($resultset=0)
|
||||||
{
|
{
|
||||||
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
@ -692,8 +555,145 @@ class DoliDb
|
|||||||
function last_insert_id($tab)
|
function last_insert_id($tab)
|
||||||
{
|
{
|
||||||
return mysql_insert_id($this->db);
|
return mysql_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 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 Retourne le dsn pear
|
\brief Retourne le dsn pear
|
||||||
\return dsn
|
\return dsn
|
||||||
@ -713,10 +713,11 @@ class DoliDb
|
|||||||
$this->results = mysql_list_tables($database, $this->db);
|
$this->results = mysql_list_tables($database, $this->db);
|
||||||
return $this->results;
|
return $this->results;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
|
/**
|
||||||
\brief décrit une table dans une database.
|
\brief décrit une table dans une database.
|
||||||
\param table Nom de la table
|
\param table Nom de la table
|
||||||
\param field Optionnel : Nom du champ si l'on veut la desc d'un champ
|
\param field Optionnel : Nom du champ si l'on veut la desc d'un champ
|
||||||
\return resource
|
\return resource
|
||||||
*/
|
*/
|
||||||
function desc_table($table,$field="")
|
function desc_table($table,$field="")
|
||||||
732
htdocs/lib/databases/mysqli.lib.php
Normal file
732
htdocs/lib/databases/mysqli.lib.php
Normal file
@ -0,0 +1,732 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2001 Fabien Seisen <seisen@linuxfr.org>
|
||||||
|
* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
|
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
* $Source$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
\file htdocs/lib/mysql.lib.php
|
||||||
|
\brief Fichier de la classe permettant de gérer une base mysql
|
||||||
|
\author Fabien Seisen
|
||||||
|
\author Rodolphe Quiedeville.
|
||||||
|
\author Laurent Destailleur.
|
||||||
|
\version $Revision$
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\class DoliDb
|
||||||
|
\brief Classe permettant de gérér la database de dolibarr
|
||||||
|
*/
|
||||||
|
|
||||||
|
class DoliDb
|
||||||
|
{
|
||||||
|
var $db; // Handler de base
|
||||||
|
var $type='mysqli'; // Nom du gestionnaire
|
||||||
|
var $forcecharset='latin1';
|
||||||
|
var $forcecollate='latin1_swedish_ci';
|
||||||
|
|
||||||
|
var $results; // Resultset de la dernière requete
|
||||||
|
|
||||||
|
var $connected; // 1 si connecté, 0 sinon
|
||||||
|
var $database_selected; // 1 si base sélectionné, 0 sinon
|
||||||
|
var $database_name; // Nom base sélectionnée
|
||||||
|
var $transaction_opened; // 1 si une transaction est en cours, 0 sinon
|
||||||
|
var $lastquery; // Derniere requete exécutée
|
||||||
|
var $lastqueryerror; // Derniere requete exécutée avec echec
|
||||||
|
var $lasterror; // Message erreur mysql
|
||||||
|
var $lasterrno; // Message erreur mysql
|
||||||
|
|
||||||
|
var $ok;
|
||||||
|
var $error;
|
||||||
|
|
||||||
|
|
||||||
|
// Constantes pour conversion code erreur MySql en code erreur générique
|
||||||
|
var $errorcode_map = array(
|
||||||
|
1004 => 'DB_ERROR_CANNOT_CREATE',
|
||||||
|
1005 => 'DB_ERROR_CANNOT_CREATE',
|
||||||
|
1006 => 'DB_ERROR_CANNOT_CREATE',
|
||||||
|
1007 => 'DB_ERROR_ALREADY_EXISTS',
|
||||||
|
1008 => 'DB_ERROR_CANNOT_DROP',
|
||||||
|
1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP',
|
||||||
|
1046 => 'DB_ERROR_NODBSELECTED',
|
||||||
|
1048 => 'DB_ERROR_CONSTRAINT',
|
||||||
|
1050 => 'DB_ERROR_TABLE_ALREADY_EXISTS',
|
||||||
|
1051 => 'DB_ERROR_NOSUCHTABLE',
|
||||||
|
1054 => 'DB_ERROR_NOSUCHFIELD',
|
||||||
|
1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS',
|
||||||
|
1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS',
|
||||||
|
1062 => 'DB_ERROR_RECORD_ALREADY_EXISTS',
|
||||||
|
1064 => 'DB_ERROR_SYNTAX',
|
||||||
|
1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY',
|
||||||
|
1091 => 'DB_ERROR_NOSUCHFIELD',
|
||||||
|
1100 => 'DB_ERROR_NOT_LOCKED',
|
||||||
|
1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW',
|
||||||
|
1146 => 'DB_ERROR_NOSUCHTABLE',
|
||||||
|
1216 => 'DB_ERROR_NO_PARENT',
|
||||||
|
1217 => 'DB_ERROR_CHILD_EXISTS'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Ouverture d'une connection vers le serveur et éventuellement une database.
|
||||||
|
\param type Type de base de données (mysql ou pgsql)
|
||||||
|
\param host Addresse de la base de données
|
||||||
|
\param user Nom de l'utilisateur autorisé
|
||||||
|
\param pass Mot de passe
|
||||||
|
\param name Nom de la database
|
||||||
|
\param newlink ???
|
||||||
|
\return int 1 en cas de succès, 0 sinon
|
||||||
|
*/
|
||||||
|
function DoliDb($type='mysqli', $host, $user, $pass, $name='', $newlink=0)
|
||||||
|
{
|
||||||
|
global $conf,$langs;
|
||||||
|
$this->transaction_opened=0;
|
||||||
|
|
||||||
|
//print "Name DB: $host,$user,$pass,$name<br>";
|
||||||
|
|
||||||
|
if (! function_exists("mysqli_connect"))
|
||||||
|
{
|
||||||
|
$this->connected = 0;
|
||||||
|
$this->ok = 0;
|
||||||
|
$this->error="Mysql PHP functions are not available in this version of PHP";
|
||||||
|
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions are not available in this version of PHP");
|
||||||
|
return $this->ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $host)
|
||||||
|
{
|
||||||
|
$this->connected = 0;
|
||||||
|
$this->ok = 0;
|
||||||
|
$this->error=$langs->trans("ErrorWrongHostParameter");
|
||||||
|
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect, wrong host parameters");
|
||||||
|
return $this->ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Essai connexion serveur
|
||||||
|
$this->db = $this->connect($host, $user, $pass, $name, $newlink);
|
||||||
|
|
||||||
|
if ($this->db)
|
||||||
|
{
|
||||||
|
// Si client connecté avec charset different de celui de Dolibarr
|
||||||
|
if (mysqli_client_encoding ( $this->db ) != $this->forcecharset)
|
||||||
|
{
|
||||||
|
$this->query("SET NAMES '".$this->forcecharset."'", $this->db);
|
||||||
|
}
|
||||||
|
$this->connected = 1;
|
||||||
|
$this->ok = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// host, login ou password incorrect
|
||||||
|
$this->connected = 0;
|
||||||
|
$this->ok = 0;
|
||||||
|
dolibarr_syslog("DoliDB::DoliDB : Erreur Connect");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si connexion serveur ok et si connexion base demandée, on essaie connexion base
|
||||||
|
if ($this->connected && $name)
|
||||||
|
{
|
||||||
|
if ($this->select_db($name))
|
||||||
|
{
|
||||||
|
$this->database_selected = 1;
|
||||||
|
$this->database_name = $name;
|
||||||
|
$this->ok = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->database_selected = 0;
|
||||||
|
$this->database_name = '';
|
||||||
|
$this->ok = 0;
|
||||||
|
$this->error=$this->error();
|
||||||
|
dolibarr_syslog("DoliDB::DoliDB : Erreur Select_db");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Pas de selection de base demandée, ok ou ko
|
||||||
|
$this->database_selected = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Selectionne une database.
|
||||||
|
\param database Nom de la database
|
||||||
|
\return boolean true si ok, false si ko
|
||||||
|
*/
|
||||||
|
function select_db($database)
|
||||||
|
{
|
||||||
|
return mysqli_select_db($this->db,$database);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Connection vers le serveur
|
||||||
|
\param host addresse de la base de données
|
||||||
|
\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)
|
||||||
|
\return resource handler d'accès à la base
|
||||||
|
*/
|
||||||
|
function connect($host, $login, $passwd, $name)
|
||||||
|
{
|
||||||
|
$this->db = @mysqli_connect($host, $login, $passwd);
|
||||||
|
//print "Resultat fonction connect: ".$this->db;
|
||||||
|
return $this->db;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie la version du serveur
|
||||||
|
\return string Chaine version
|
||||||
|
*/
|
||||||
|
function getVersion()
|
||||||
|
{
|
||||||
|
// $resql=$this->query('SELECT VERSION()');
|
||||||
|
// $row=$this->fetch_row($resql);
|
||||||
|
// return $row[0];
|
||||||
|
return mysqli_get_server_info($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie la version du serveur dans un tableau
|
||||||
|
\return array Tableau de chaque niveau de version
|
||||||
|
*/
|
||||||
|
function getVersionArray()
|
||||||
|
{
|
||||||
|
return split('\.',$this->getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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
|
||||||
|
*/
|
||||||
|
function close()
|
||||||
|
{
|
||||||
|
return mysqli_close($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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)
|
||||||
|
{
|
||||||
|
$ret=$this->query("BEGIN");
|
||||||
|
if ($ret) $this->transaction_opened++;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->transaction_opened++;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Validation d'une transaction
|
||||||
|
\return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
|
||||||
|
*/
|
||||||
|
function commit()
|
||||||
|
{
|
||||||
|
if ($this->transaction_opened<=1)
|
||||||
|
{
|
||||||
|
$ret=$this->query("COMMIT");
|
||||||
|
if ($ret) $this->transaction_opened=0;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->transaction_opened--;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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()
|
||||||
|
{
|
||||||
|
if ($this->transaction_opened<=1)
|
||||||
|
{
|
||||||
|
$ret=$this->query("ROLLBACK");
|
||||||
|
$this->transaction_opened=0;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->transaction_opened--;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Effectue une requete et renvoi le resultset de réponse de la base
|
||||||
|
\param query Contenu de la query
|
||||||
|
\return resource Resultset de la reponse
|
||||||
|
*/
|
||||||
|
function query($query)
|
||||||
|
{
|
||||||
|
$query = trim($query);
|
||||||
|
|
||||||
|
if (! $this->database_name)
|
||||||
|
{
|
||||||
|
// Ordre SQL ne nécessitant pas de connexion à une base (exemple: CREATE DATABASE)
|
||||||
|
$ret = mysqli_query($this->db,$query);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ret = mysqli_query($this->db,$query);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
||||||
|
{
|
||||||
|
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
||||||
|
if (! $ret)
|
||||||
|
{
|
||||||
|
$this->lastqueryerror = $query;
|
||||||
|
$this->lasterror = $this->error();
|
||||||
|
$this->lasterrno = $this->errno();
|
||||||
|
}
|
||||||
|
$this->lastquery=$query;
|
||||||
|
$this->results = $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie la ligne courante (comme un objet) pour le curseur resultset.
|
||||||
|
\param resultset Curseur de la requete voulue
|
||||||
|
\return resource
|
||||||
|
*/
|
||||||
|
function fetch_object($resultset=0)
|
||||||
|
{
|
||||||
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
|
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||||
|
return mysqli_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()
|
||||||
|
{
|
||||||
|
$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
|
||||||
|
\return array
|
||||||
|
*/
|
||||||
|
|
||||||
|
function fetch_array($resultset=0)
|
||||||
|
{
|
||||||
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
|
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||||
|
return mysqli_fetch_array($resultset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie les données comme un tableau.
|
||||||
|
\param resultset Curseur de la requete voulue
|
||||||
|
\return array
|
||||||
|
*/
|
||||||
|
|
||||||
|
function fetch_row($resultset=0)
|
||||||
|
{
|
||||||
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
|
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||||
|
return mysqli_fetch_row($resultset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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=0)
|
||||||
|
{
|
||||||
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
|
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||||
|
return mysqli_num_rows($resultset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
|
||||||
|
\see num_rows
|
||||||
|
\param resultset Curseur de la requete voulue
|
||||||
|
\return int Nombre de lignes
|
||||||
|
*/
|
||||||
|
|
||||||
|
function affected_rows($resultset=0)
|
||||||
|
{
|
||||||
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
|
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||||
|
// mysql necessite un link de base pour cette fonction contrairement
|
||||||
|
// a pqsql qui prend un resultset
|
||||||
|
return mysqli_affected_rows($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Libère le dernier resultset utilisé sur cette connexion.
|
||||||
|
\param resultset Curseur de la requete voulue
|
||||||
|
*/
|
||||||
|
function free($resultset=0)
|
||||||
|
{
|
||||||
|
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion
|
||||||
|
if (! is_object($resultset)) { $resultset=$this->results; }
|
||||||
|
// Si resultset en est un, on libere la mémoire
|
||||||
|
if (is_object($resultset)) mysqli_free_result($resultset);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Défini les limites de la requète.
|
||||||
|
\param limit nombre maximum de lignes retournées
|
||||||
|
\param offset numéro de la ligne à partir de laquelle recupérer les lignes
|
||||||
|
\return string chaine exprimant la syntax sql de la limite
|
||||||
|
*/
|
||||||
|
function plimit($limit=0,$offset=0)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
if (! $limit) $limit=$conf->liste_limit;
|
||||||
|
if ($offset > 0) return " LIMIT $offset,$limit ";
|
||||||
|
else return " LIMIT $limit ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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 Date au format text à convertir
|
||||||
|
\return date Date au format tms.
|
||||||
|
*/
|
||||||
|
function pdate($param)
|
||||||
|
{
|
||||||
|
return "unix_timestamp(".$param.")";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Formatage (par PHP) de la date en texte qui s'insere dans champ date.
|
||||||
|
Fonction à utiliser pour générer les INSERT.
|
||||||
|
\param param Date tms à convertir
|
||||||
|
\return date Date au format text YYYYMMDDHHMMSS.
|
||||||
|
*/
|
||||||
|
function idate($param)
|
||||||
|
{
|
||||||
|
return strftime("%Y%m%d%H%M%S",$param);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Formatage d'un if SQL
|
||||||
|
\param test chaine test
|
||||||
|
\param resok resultat si test egal
|
||||||
|
\param resko resultat si test non egal
|
||||||
|
\return string chaine formaté SQL
|
||||||
|
*/
|
||||||
|
function ifsql($test,$resok,$resko)
|
||||||
|
{
|
||||||
|
return 'IF('.$test.','.$resok.','.$resko.')';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie la derniere requete soumise par la methode query()
|
||||||
|
\return lastquery
|
||||||
|
*/
|
||||||
|
function lastquery()
|
||||||
|
{
|
||||||
|
return $this->lastquery;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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...)
|
||||||
|
*/
|
||||||
|
function errno()
|
||||||
|
{
|
||||||
|
if (! $this->connected) {
|
||||||
|
// Si il y a eu echec de connection, $this->db n'est pas valide.
|
||||||
|
return 'DB_ERROR_FAILED_TO_CONNECT';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (isset($this->errorcode_map[mysqli_errno($this->db)])) {
|
||||||
|
return $this->errorcode_map[mysqli_errno($this->db)];
|
||||||
|
}
|
||||||
|
$errno=mysqli_errno($this->db);
|
||||||
|
return ($errno?'DB_ERROR_'.$errno:'0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie le texte de l'erreur mysql de l'operation precedente.
|
||||||
|
\return error_text
|
||||||
|
*/
|
||||||
|
function error()
|
||||||
|
{
|
||||||
|
if (! $this->connected) {
|
||||||
|
// Si il y a eu echec de connection, $this->db n'est pas valide pour mysqli_error.
|
||||||
|
return 'Not connected. Check setup parameters in conf/conf.php file and your mysql client and server versions';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return mysqli_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Récupère l'id genéré par le dernier INSERT.
|
||||||
|
\param tab Nom de la table concernée par l'insert. Ne sert pas sous MySql mais requis pour compatibilité avec Postgresql
|
||||||
|
\return int id
|
||||||
|
*/
|
||||||
|
function last_insert_id($tab)
|
||||||
|
{
|
||||||
|
return mysqli_insert_id($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\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 = 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
|
||||||
|
*/
|
||||||
|
function desc_table($table,$field="")
|
||||||
|
{
|
||||||
|
// $this->results = $this->query("DESC ".$table." ".$field);
|
||||||
|
$this->results = $this->query("DESC ".$table." ".$field);
|
||||||
|
return $this->results;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
@ -44,6 +44,7 @@ class DoliDb
|
|||||||
{
|
{
|
||||||
var $db; // Handler de base
|
var $db; // Handler de base
|
||||||
var $type='pgsql'; // Nom du gestionnaire
|
var $type='pgsql'; // Nom du gestionnaire
|
||||||
|
var $versionmin=array(8,1,0);
|
||||||
|
|
||||||
var $results; // Resultset de la dernière requete
|
var $results; // Resultset de la dernière requete
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ require_once(DOL_DOCUMENT_ROOT ."/lib/functions.inc.php");
|
|||||||
require_once(DOL_DOCUMENT_ROOT ."/user.class.php");
|
require_once(DOL_DOCUMENT_ROOT ."/user.class.php");
|
||||||
require_once(DOL_DOCUMENT_ROOT ."/menu.class.php");
|
require_once(DOL_DOCUMENT_ROOT ."/menu.class.php");
|
||||||
require_once(DOL_DOCUMENT_ROOT ."/html.form.class.php");
|
require_once(DOL_DOCUMENT_ROOT ."/html.form.class.php");
|
||||||
require_once(DOL_DOCUMENT_ROOT ."/lib/".$conf->db->type.".lib.php");
|
require_once(DOL_DOCUMENT_ROOT ."/lib/databases/".$conf->db->type.".lib.php");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creation objet $db
|
* Creation objet $db
|
||||||
|
|||||||
@ -218,7 +218,7 @@ if ($_GET["action"] == 'create' && $user->rights->projet->creer)
|
|||||||
print '<tr><td>'.$langs->trans("Ref").'</td><td><input name="ref" value="'.$projet->ref.'"></td></tr>';
|
print '<tr><td>'.$langs->trans("Ref").'</td><td><input name="ref" value="'.$projet->ref.'"></td></tr>';
|
||||||
print '<tr><td>'.$langs->trans("Label").'</td><td><input name="title" value="'.$projet->title.'"></td></tr>';
|
print '<tr><td>'.$langs->trans("Label").'</td><td><input name="title" value="'.$projet->title.'"></td></tr>';
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("Company").'</td><td>'.$projet->societe->$projet->societe->getNomUrl(1).'</td></tr>';
|
print '<tr><td>'.$langs->trans("Company").'</td><td>'.$projet->societe->getNomUrl(1).'</td></tr>';
|
||||||
print '<tr><td align="center" colspan="2"><input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> <input type="submit" class="button" name="cancel" Value="'.$langs->trans("Cancel").'"></td></tr>';
|
print '<tr><td align="center" colspan="2"><input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> <input type="submit" class="button" name="cancel" Value="'.$langs->trans("Cancel").'"></td></tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|||||||
@ -72,9 +72,9 @@ if (file_exists ($thermlib))
|
|||||||
|
|
||||||
$dontherm = new Don($dbt);
|
$dontherm = new Don($dbt);
|
||||||
|
|
||||||
$actualValue = $dontherm->sum_actual();
|
$intentValue = $dontherm->sum_donations(1);
|
||||||
$pendingValue = $dontherm->sum_pending();
|
$pendingValue = $dontherm->sum_donations(2);
|
||||||
$intentValue = $dontherm->sum_intent();
|
$actualValue = $dontherm->sum_donations(3);
|
||||||
|
|
||||||
$dbt->close();
|
$dbt->close();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user