Qual: Dplacement des drivers de base de donnes de /lib dans /lib/databases pour plus de clart.
New: Ajout du driver mysqli pour accder 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").
|
||||
- Accountancy.
|
||||
- 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
|
||||
2) Mettre à jour Dolibarr depuis une ancienne version
|
||||
3) Ce qui est nouveau dans cette version
|
||||
4) Que peux faire Dolibarr
|
||||
5) Que ne peux pas encore faire Dolibarr
|
||||
4) Ce que peux faire Dolibarr
|
||||
5) Ce que ne peux pas Dolibarr (pas encore)
|
||||
|
||||
|
||||
I - INSTALLER DOLIBARR
|
||||
@ -120,8 +120,8 @@ Miscellanous:
|
||||
|
||||
V - WHAT DOLIBARR CAN'T DO YET (TODO LIST)
|
||||
------------------------------------------
|
||||
This is feature Dolibarr does not support completely yet:
|
||||
- "NPR VAT Rate" (French particularity for managing VAT in DOM-TOM
|
||||
called "Non Perçue Récupérable").
|
||||
- Accountancy.
|
||||
- Dolibarr can manage only one currency.
|
||||
Voici un liste de fonctionnalité pas encore gérées par Dolibarr:
|
||||
- "TVA NPR" (TVA "Non Perçue Récupérable").
|
||||
- Pas de compta.
|
||||
- Dolibarr ne gère qu'une seule monnaie.
|
||||
- Dolibarr ne fait pas le café (pas encore).
|
||||
|
||||
@ -65,7 +65,7 @@ print '<ul>';
|
||||
print '<li>';
|
||||
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
|
||||
{
|
||||
|
||||
@ -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");
|
||||
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");
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
*/
|
||||
|
||||
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");
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
*/
|
||||
|
||||
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");
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
*/
|
||||
|
||||
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("user");
|
||||
@ -84,20 +84,8 @@ print "<br>\n";
|
||||
// Base de donnée
|
||||
print '<table class="noborder" width="100%">';
|
||||
print "<tr class=\"liste_titre\"><td colspan=\"2\">".$langs->trans("Database")."</td></tr>\n";
|
||||
|
||||
if ($conf->db->type == 'mysql')
|
||||
{
|
||||
$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("Version")."</td><td>" . $db->getVersion() . "</td></tr>\n";
|
||||
print "<tr $bc[1]><td width=\"240\">".$langs->trans("DriverType")."</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[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";
|
||||
|
||||
@ -81,25 +81,25 @@ if ($exc->error_message);
|
||||
print '<table class="notopnoleftnoright" width="100%">';
|
||||
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";
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$row = $db->fetch_row($resql);
|
||||
$nbfac = $row[0];
|
||||
$obj = $db->fetch_object($resql);
|
||||
$nbfac = $obj->nb;
|
||||
|
||||
$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";
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$row = $db->fetch_row($resql);
|
||||
$nbp = $row[0];
|
||||
$obj = $db->fetch_object($resql);
|
||||
$nbp = $obj->nb;
|
||||
|
||||
$db->free($resql);
|
||||
}
|
||||
|
||||
@ -67,35 +67,37 @@ if (! $mesg) {
|
||||
$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)
|
||||
{
|
||||
$sql .= " AND fk_soc = $socidp";
|
||||
}
|
||||
$sql .= " GROUP BY dm DESC ";
|
||||
if ($db->query($sql))
|
||||
$result=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows();
|
||||
|
||||
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 '<td align="center" valign="top" rowspan="'.($num + 1).'">';
|
||||
if ($mesg) { print $mesg; }
|
||||
else { print '<img src="'.$fileurl.'" alt="Nombre de factures par mois">'; }
|
||||
print '</td></tr>';
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$row = $db->fetch_row($i);
|
||||
$nbproduct = $row[0];
|
||||
$year = $row[1];
|
||||
print "<tr>";
|
||||
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>';
|
||||
$i++;
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
$db->free();
|
||||
$num = $db->num_rows($resql);
|
||||
|
||||
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 '<td align="center" valign="top" rowspan="'.($num + 1).'">';
|
||||
if ($mesg) { print $mesg; }
|
||||
else { print '<img src="'.$fileurl.'" alt="Nombre de factures par mois">'; }
|
||||
print '</td></tr>';
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
$nbproduct = $obj->nb;
|
||||
$year = $obj->dm;
|
||||
$total = price($obj->total);
|
||||
print "<tr>";
|
||||
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();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* 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
|
||||
@ -573,7 +573,7 @@ else
|
||||
/*
|
||||
* 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 '<input type="hidden" name="action" value="setremise">';
|
||||
@ -628,11 +628,11 @@ else
|
||||
print '</td><td colspan="3">';
|
||||
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
|
||||
{
|
||||
$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>";
|
||||
}
|
||||
|
||||
@ -477,88 +477,55 @@ class Don
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Classe le don comme encaissé
|
||||
* \param rowid id du don à modifier
|
||||
*
|
||||
*/
|
||||
function set_encaisse($rowid)
|
||||
{
|
||||
/*
|
||||
* \brief Classe le don comme encaissé
|
||||
* \param rowid id du don à modifier
|
||||
*
|
||||
*/
|
||||
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) )
|
||||
{
|
||||
if ( $this->db->affected_rows() )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($this->db);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/*
|
||||
* \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
|
||||
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");
|
||||
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;
|
||||
$ok = 0;
|
||||
@ -45,29 +50,15 @@ $langs->setDefaultLang($setuplang);
|
||||
$langs->load("admin");
|
||||
$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");
|
||||
|
||||
|
||||
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")
|
||||
{
|
||||
print '<h2>'.$langs->trans("Database").'</h2>';
|
||||
|
||||
@ -30,6 +30,12 @@
|
||||
|
||||
|
||||
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');
|
||||
$langs->setDefaultLang($setuplang);
|
||||
@ -40,19 +46,7 @@ $langs->load("install");
|
||||
|
||||
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%">';
|
||||
|
||||
|
||||
@ -29,6 +29,11 @@
|
||||
*/
|
||||
|
||||
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');
|
||||
$langs->setDefaultLang($setuplang);
|
||||
@ -36,26 +41,10 @@ $langs->setDefaultLang($setuplang);
|
||||
$langs->load("admin");
|
||||
$langs->load("install");
|
||||
|
||||
|
||||
dolibarr_install_syslog("Entering etape5.php page");
|
||||
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
|
||||
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");
|
||||
dolibarr_install_syslog("Entering etape5.php page");
|
||||
|
||||
|
||||
if ($_POST["action"] == "set" || $_POST["action"] == "upgrade")
|
||||
|
||||
@ -143,8 +143,8 @@ print $dolibarr_main_url_root;
|
||||
<?php
|
||||
print $langs->trans("Examples").":<br>";
|
||||
?>
|
||||
<li>http://dolibarr.lafrere.net</li>
|
||||
<li>http://www.lafrere.net/dolibarr</li>
|
||||
<li>http://localhost/</li>
|
||||
<li>http://www.myserver.com:8180/dolibarr</li>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
@ -161,12 +161,58 @@ $dolibarr_main_db_host = "localhost";
|
||||
<tr>
|
||||
<!-- moi-->
|
||||
<td valign="top" class="label">
|
||||
<?php echo $langs->trans("DatabaseType"); ?>
|
||||
<?php echo $langs->trans("DriverType"); ?>
|
||||
</td>
|
||||
|
||||
<td class="label"><select name='db_type'>
|
||||
<option value='mysql'<?php echo (! isset($dolibarr_main_db_type) || $dolibarr_main_db_type=='mysql')?" selected":"" ?>>MySql</option>
|
||||
<option value='pgsql'<?php echo (isset($dolibarr_main_db_type) && $dolibarr_main_db_type=='pgsql')?" selected":"" ?>>PostgreSQL <?php echo $langs->trans("Experimental"); ?></option>
|
||||
<td class="label">
|
||||
<select name='db_type'>
|
||||
<?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>
|
||||
|
||||
</td>
|
||||
|
||||
@ -27,6 +27,11 @@
|
||||
*/
|
||||
|
||||
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$';
|
||||
$grant_query='';
|
||||
@ -47,35 +52,16 @@ $langs->setDefaultLang($setuplang);
|
||||
$langs->load("admin");
|
||||
$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");
|
||||
|
||||
|
||||
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")
|
||||
{
|
||||
print '<h2>'.$langs->trans("DatabaseMigration").'</h2>';
|
||||
|
||||
@ -27,6 +27,11 @@
|
||||
*/
|
||||
|
||||
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('../propal.class.php');
|
||||
include_once('../commande/commande.class.php');
|
||||
@ -52,6 +57,10 @@ $langs->load('install');
|
||||
$langs->load("bills");
|
||||
$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");
|
||||
|
||||
@ -59,29 +68,6 @@ dolibarr_install_syslog("Entering upgrade2.php page");
|
||||
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')
|
||||
{
|
||||
print '<h2>'.$langs->trans('DataMigration').'</h2>';
|
||||
@ -522,7 +508,7 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
||||
$nb=0;
|
||||
$select_sql = 'SELECT rowid, fk_facture_fourn, amount ';
|
||||
$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);
|
||||
if ($select_resql)
|
||||
{
|
||||
@ -531,7 +517,7 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
||||
$var = true;
|
||||
|
||||
// Pour chaque paiement fournisseur, on insère une ligne dans paiementfourn_facturefourn
|
||||
while ($i < $select_num && ! $error)
|
||||
while (($i < $select_num) && (! $error))
|
||||
{
|
||||
$var = !$var;
|
||||
$select_obj = $db->fetch_object($select_resql);
|
||||
@ -544,7 +530,7 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
|
||||
if ($check_resql)
|
||||
{
|
||||
$check_num = $db->num_rows($check_resql);
|
||||
if ($check_num === 0)
|
||||
if ($check_num == 0)
|
||||
{
|
||||
if ($nb == 0)
|
||||
{
|
||||
|
||||
@ -62,7 +62,8 @@ Feature=Feature
|
||||
DolibarrLicense=License
|
||||
DolibarrProjectLeader=Project leader
|
||||
OtherDeveloppers=Other developers/contributors
|
||||
OfficialWebSite=Official web site
|
||||
OfficialWebSite=Internationnal official web site
|
||||
OfficialWebSiteFr=French official web site
|
||||
ModuleSetup=Module setup
|
||||
ModuleFamilyBase=System
|
||||
ModuleFamilyCrm=Customer Ressource Management (CRM)
|
||||
@ -316,6 +317,7 @@ NbOfRecord=Nb of records
|
||||
Constraints=Constraints
|
||||
ConstraintsType=Constraint's type
|
||||
Host=Server
|
||||
DriverType=Driver type
|
||||
SummarySystem=System information summary
|
||||
SummaryConst=List of all Dolibarr setup parameters
|
||||
SystemUpdate=System update
|
||||
|
||||
@ -20,6 +20,7 @@ URLRoot=URL Root
|
||||
DolibarrDatabase=Dolibarr Database
|
||||
DatabaseChoice=Database choice
|
||||
DatabaseType=Database type
|
||||
DriverType=Driver type
|
||||
Server=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
|
||||
|
||||
@ -61,8 +61,9 @@ Passwords=Mots de passe
|
||||
Feature=Fonction
|
||||
DolibarrLicense=Licence
|
||||
DolibarrProjectLeader=Chef de projet
|
||||
OtherDeveloppers=autres développeurs/contributeurs
|
||||
OfficialWebSite=site web officiel francophone
|
||||
OtherDeveloppers=Autres développeurs/contributeurs
|
||||
OfficialWebSite=Site web officiel internationnal
|
||||
OfficialWebSiteFr=Site web officiel francophone
|
||||
ModuleSetup=Configuration du module
|
||||
ModuleFamilyBase=Système
|
||||
ModuleFamilyCrm=Gestion client (CRM)
|
||||
@ -316,6 +317,7 @@ NbOfRecord=Nb d'enr.
|
||||
Constraints=Contraintes
|
||||
ConstraintsType=Type de contrainte
|
||||
Host=Serveur
|
||||
DriverType=Type du driver
|
||||
SummarySystem=Résumé des informations systèmes Dolibarr
|
||||
SummaryConst=Liste de tous les paramètres de configuration Dolibarr
|
||||
SystemUpdate=Mise à jour du système
|
||||
|
||||
@ -20,6 +20,7 @@ URLRoot=URL Racine
|
||||
DolibarrDatabase=Base de données Dolibarr
|
||||
DatabaseChoice=Choix de la base de données
|
||||
DatabaseType=Type de la base de données
|
||||
DriverType=Type du driver
|
||||
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
|
||||
DatabaseName=Nom de la base de données
|
||||
|
||||
@ -43,7 +43,8 @@ class DoliDb
|
||||
var $type='mysql'; // Nom du gestionnaire
|
||||
var $forcecharset='latin1';
|
||||
var $forcecollate='latin1_swedish_ci';
|
||||
|
||||
var $versionmin=array(4,1,0);
|
||||
|
||||
var $results; // Resultset de la dernière requete
|
||||
|
||||
var $connected; // 1 si connecté, 0 sinon
|
||||
@ -107,8 +108,8 @@ class DoliDb
|
||||
{
|
||||
$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");
|
||||
$this->error="Mysql PHP functions for using MySql driver are not available in this version of PHP";
|
||||
dolibarr_syslog("DoliDB::DoliDB : Mysql PHP functions for using Mysql driver are not available in this version of PHP");
|
||||
return $this->ok;
|
||||
}
|
||||
|
||||
@ -203,9 +204,10 @@ class DoliDb
|
||||
*/
|
||||
function getVersion()
|
||||
{
|
||||
$resql=$this->query('SELECT VERSION()');
|
||||
$row=$this->fetch_row($resql);
|
||||
return $row[0];
|
||||
// $resql=$this->query('SELECT VERSION()');
|
||||
// $row=$this->fetch_row($resql);
|
||||
// return $row[0];
|
||||
return mysql_get_server_info($this->db);
|
||||
}
|
||||
|
||||
|
||||
@ -356,149 +358,11 @@ class DoliDb
|
||||
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.
|
||||
\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
|
||||
@ -506,12 +370,12 @@ class DoliDb
|
||||
return mysql_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
|
||||
@ -531,14 +395,13 @@ class DoliDb
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mysql_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
|
||||
@ -692,8 +555,145 @@ class DoliDb
|
||||
function last_insert_id($tab)
|
||||
{
|
||||
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
|
||||
\return dsn
|
||||
@ -713,10 +713,11 @@ class DoliDb
|
||||
$this->results = mysql_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
|
||||
\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="")
|
||||
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 $type='pgsql'; // Nom du gestionnaire
|
||||
var $versionmin=array(8,1,0);
|
||||
|
||||
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 ."/menu.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
|
||||
|
||||
@ -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("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 '</table>';
|
||||
print '</form>';
|
||||
|
||||
@ -72,9 +72,9 @@ if (file_exists ($thermlib))
|
||||
|
||||
$dontherm = new Don($dbt);
|
||||
|
||||
$actualValue = $dontherm->sum_actual();
|
||||
$pendingValue = $dontherm->sum_pending();
|
||||
$intentValue = $dontherm->sum_intent();
|
||||
$intentValue = $dontherm->sum_donations(1);
|
||||
$pendingValue = $dontherm->sum_donations(2);
|
||||
$actualValue = $dontherm->sum_donations(3);
|
||||
|
||||
$dbt->close();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user