Qual: Uniformisation de la maniere de recuperer le resultat de requete (suppression des methodes result au profit de la methode fetch_object)

This commit is contained in:
Laurent Destailleur 2006-06-24 19:47:36 +00:00
parent 04d6bd1e7a
commit 790469ee66
17 changed files with 464 additions and 485 deletions

View File

@ -84,15 +84,17 @@ if ($_GET["action"] == 'create')
// Si numero deja pris (ne devrait pas arriver)
// on incremente par .num+1
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."propal WHERE ref like '$numpr%'";
if ( $db->query($sql) )
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."propal WHERE ref like '$numpr%'";
$resql=$db->query($sql);
if ($resql)
{
$num = $db->result(0, 0);
$db->free();
if ($num > 0)
{
$numpr .= "." . ($num + 1);
}
$obj=$db->fetch_object($resql);
$num = $obj->nb;
$db->free($resql);
if ($num > 0)
{
$numpr .= "." . ($num + 1);
}
}
print "<form name='addprop' action=\"propal.php?socidp=".$soc->id."\" method=\"post\">";

View File

@ -42,21 +42,6 @@ if ($user->societe_id > 0)
function valeur($sql)
{
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
{
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/*
* Affichage zone prospect
*/

View File

@ -1819,6 +1819,81 @@ class Commande extends CommonObject
}
}
/**
* \brief Initialise la commande avec valeurs fictives aléatoire
* Sert à générer une commande pour l'aperu des modèles ou demo
*/
function initAsSpecimen()
{
global $user,$langs;
// Charge tableau des id de société socids
$socids = array();
$sql = "SELECT idp FROM ".MAIN_DB_PREFIX."societe WHERE client=1 LIMIT 10";
$resql = $this->db->query($sql);
if ($resql)
{
$num_socs = $this->db->num_rows($resql);
$i = 0;
while ($i < $num_socs)
{
$i++;
$row = $this->db->fetch_row($resql);
$socids[$i] = $row[0];
}
}
// Charge tableau des produits prodids
$prodids = array();
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product WHERE envente=1";
$resql = $this->db->query($sql);
if ($resql)
{
$num_prods = $this->db->num_rows($resql);
$i = 0;
while ($i < $num_prods)
{
$i++;
$row = $this->db->fetch_row($resql);
$prodids[$i] = $row[0];
}
}
// Initialise paramètres
$this->id=0;
$this->ref = 'SPECIMEN';
$this->specimen=1;
$socid = rand(1, $num_socs);
$this->socidp = $socids[$socid];
$this->date = time();
$this->date_lim_reglement=$this->date+3600*24*30;
$this->cond_reglement_code = 'RECEP';
$this->mode_reglement_code = 'CHQ';
$this->note_public='SPECIMEN';
$nbp = rand(1, 9);
$xnbp = 0;
while ($xnbp < $nbp)
{
$ligne=new CommandeLigne($this->db);
$ligne->desc=$langs->trans("Description")." ".$xnbp;
$ligne->qty=1;
$ligne->subprice=100;
$ligne->price=100;
$ligne->tva_taux=19.6;
$prodid = rand(1, $num_prods);
$ligne->produit_id=$prodids[$prodid];
$this->lignes[$xnbp]=$ligne;
$xnbp++;
}
$this->amount_ht = $xnbp*100;
$this->total_ht = $xnbp*100;
$this->total_tva = $xnbp*19.6;
$this->total_ttc = $xnbp*119.6;
}
}

View File

@ -524,20 +524,19 @@ class Account
*/
function solde()
{
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE fk_account=$this->id AND dateo <=" . $this->db->idate(time() );
$sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE fk_account=".$this->id." AND dateo <= ".$this->db->idate(time());
$result = $this->db->query($sql);
if ($result)
$resql = $this->db->query($sql);
if ($resql)
{
if ($this->db->num_rows())
if ($this->db->num_rows($resql))
{
$solde = $this->db->result(0,0);
return $solde;
$obj=$this->db->fetch_object($resql);
$solde = $obj->amount;
}
$this->db->free();
$this->db->free($resql);
return $solde;
}
}

View File

@ -26,23 +26,23 @@ require("./pre.inc.php");
if (!$user->rights->banque->lire)
accessforbidden();
llxHeader();
function valeur($sql)
{
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
global $db;
$resql=$db->query($sql);
if ($resql)
{
$valeur = $db->result(0,0);
$obj=$db->fetch_object($resql);
$valeur = $obj->amount;
$db->free($resql);
}
$db->free();
}
return $valeur;
return $valeur;
}
llxHeader();
print_titre("Bilan");
print '<br>';
@ -52,22 +52,22 @@ echo '<td colspan="2">R
print "</tr>\n";
$var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."paiement";
$sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."paiement";
$paiem = valeur($sql);
print "<tr $bc[$var]><td>Somme des paiements (associés à une facture)</td><td align=\"right\">".price($paiem)."</td></tr>";
$var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank WHERE amount > 0";
$sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank WHERE amount > 0";
$credits = valeur($sql);
print "<tr $bc[$var]><td>Somme des credits</td><td align=\"right\">".price($credits)."</td></tr>";
$var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank WHERE amount < 0";
$sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank WHERE amount < 0";
$debits = valeur($sql);
print "<tr $bc[$var]><td>Somme des debits</td><td align=\"right\">".price($debits)."</td></tr>";
$var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank ";
$sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank ";
$solde = valeur($sql);
print "<tr $bc[$var]><td>".$langs->trans("BankBalance")."</td><td align=\"right\">".price($solde)."</td></tr>";

View File

@ -91,64 +91,66 @@ if ($_GET["bid"] == 0)
}
else
{
/*
* Rapport mouvements pour une catégorie donnée
*/
$sql = "SELECT label FROM ".MAIN_DB_PREFIX."bank_categ WHERE rowid=".$_GET["bid"];
if ( $db->query($sql) )
{
if ( $db->num_rows() )
/*
* Rapport mouvements pour une catégorie donnée
*/
$sql = "SELECT label FROM ".MAIN_DB_PREFIX."bank_categ WHERE rowid=".$_GET["bid"];
$resql=$db->query($sql);
if ($resql)
{
$budget_name = $db->result(0,0);
if ($db->num_rows($resql))
{
$obj=$db->fetch_object($resql);
$budget_name = $obj->label;
}
$db->free($resql);
}
$db->free();
}
print_titre("Ecriture bancaire pour la catégorie: $budget_name");
print '<br>';
print '<table class="noborder" width="100%">';
print "<tr class=\"liste_titre\">";
print '<td align="center">'.$langs->trans("Date").'</td>';
print '<td align="left">'.$langs->trans("Bank").'</td>';
print '<td width="60%">'.$langs->trans("Description").'</td><td align="right">'.$langs->trans("Amount").'</td><td>&nbsp;</td>';
print "</tr>\n";
$sql = "SELECT b.amount, b.label, ".$db->pdate("b.dateo")." as do, b.rowid, ba.label as labelcompte, ba.rowid as bankid";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_class as l, ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba";
$sql.= " WHERE b.rowid=l.lineid AND l.fk_categ=".$_GET["bid"];
$sql.= " AND b.fk_account = ba.rowid";
$sql.= " ORDER BY b.dateo DESC";
$result = $db->query($sql);
if ($result)
{
$num = $db->num_rows($result);
$i = 0; $total = 0;
$var=True;
while ($i < $num)
print_titre("Ecriture bancaire pour la catégorie: $budget_name");
print '<br>';
print '<table class="noborder" width="100%">';
print "<tr class=\"liste_titre\">";
print '<td align="center">'.$langs->trans("Date").'</td>';
print '<td align="left">'.$langs->trans("Bank").'</td>';
print '<td width="60%">'.$langs->trans("Description").'</td><td align="right">'.$langs->trans("Amount").'</td><td>&nbsp;</td>';
print "</tr>\n";
$sql = "SELECT b.amount, b.label, ".$db->pdate("b.dateo")." as do, b.rowid, ba.label as labelcompte, ba.rowid as bankid";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_class as l, ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba";
$sql.= " WHERE b.rowid=l.lineid AND l.fk_categ=".$_GET["bid"];
$sql.= " AND b.fk_account = ba.rowid";
$sql.= " ORDER BY b.dateo DESC";
$result = $db->query($sql);
if ($result)
{
$objp = $db->fetch_object($result);
$var=!$var;
print "<tr $bc[$var]>";
print "<td align=\"center\">".dolibarr_print_date($objp->do)."</td>\n";
print "<td><a href=\"account.php?account=$objp->bankid\">$objp->labelcompte</a></td>";
print "<td><a href=\"ligne.php?rowid=$objp->rowid\">".img_object($langs->trans("ShowPayment"),"payment").' '.$objp->label.'</a></td>';
print "<td align=\"right\">".price(0 - $objp->amount)."</td><td>&nbsp;</td>";
print "</tr>";
$i++;
$total = $total + (0 - $objp->amount);
$num = $db->num_rows($result);
$i = 0; $total = 0;
$var=True;
while ($i < $num)
{
$objp = $db->fetch_object($result);
$var=!$var;
print "<tr $bc[$var]>";
print "<td align=\"center\">".dolibarr_print_date($objp->do)."</td>\n";
print "<td><a href=\"account.php?account=$objp->bankid\">$objp->labelcompte</a></td>";
print "<td><a href=\"ligne.php?rowid=$objp->rowid\">".img_object($langs->trans("ShowPayment"),"payment").' '.$objp->label.'</a></td>';
print "<td align=\"right\">".price(0 - $objp->amount)."</td><td>&nbsp;</td>";
print "</tr>";
$i++;
$total = $total + (0 - $objp->amount);
}
$db->free();
print '<tr class="liste_total"><td colspan="3" align="right">'.$langs->trans("Total")."</td><td align=\"right\"><b>".price(abs($total))."</b></td><td>".$langs->trans("Currency".$conf->monnaie)."</td></tr>";
}
$db->free();
print '<tr class="liste_total"><td colspan="3" align="right">'.$langs->trans("Total")."</td><td align=\"right\"><b>".price(abs($total))."</b></td><td>".$langs->trans("Currency".$conf->monnaie)."</td></tr>";
}
else
{
dolibarr_print_error($db);
}
print "</table>";
else
{
dolibarr_print_error($db);
}
print "</table>";
}

View File

@ -181,18 +181,6 @@ else
print '<td>&nbsp;</td>';
print "</tr>\n";
// Recherche date valeur minimum pour ce relevé
/*
$datemin=0;
$sql = "SELECT MIN(datev) FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE num_releve = '".$num."' AND fk_account = ".$acct->id;
$resql=$db->query($sql);
if ($resql)
{
$datemin = $db->result(0, 0);
$db->free($resql);
}
*/
// Calcul du solde de départ du relevé
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE num_releve < ".$num." AND fk_account = ".$acct->id;

View File

@ -30,19 +30,6 @@ require("./pre.inc.php");
$langs->load("compta");
llxHeader();
function valeur($sql) {
global $db;
if ( $db->query($sql) ) {
if ( $db->num_rows() ) {
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/*
* Action ajout en bookmark
@ -60,6 +47,9 @@ if ($action == 'del_bookmark') {
}
llxHeader();
print_titre("Charges");
print '<table width="100%">';

View File

@ -181,10 +181,14 @@ if ($_GET["action"] == 'create')
print '<tr><td>'.$langs->trans("AmountTTC").":</td><td colspan=\"2\">".price($charge->amount).' '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
$sql = "SELECT sum(p.amount) FROM ".MAIN_DB_PREFIX."paiementcharge as p WHERE p.fk_charge = $chid;";
$result = $db->query($sql);
if ($result) {
$sumpayed = $db->result(0,0);
$sql = "SELECT sum(p.amount) as total";
$sql.= " FROM ".MAIN_DB_PREFIX."paiementcharge as p";
$sql.= " WHERE p.fk_charge = ".$chid;
$resql = $db->query($sql);
if ($resql)
{
$obj=$db->fetch_object($resql);
$sumpayed = $obj->total;
$db->free();
}
print '<tr><td>'.$langs->trans("AlreadyPayed").'</td><td colspan="2"><b>'.price($sumpayed).'</b> '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';

View File

@ -141,13 +141,14 @@ if ($_GET["action"] == 'create')
// \todo Utiliser un module de numérotation
$numpr = "FI".strftime("%y%m%d", time());
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."propal";
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."propal";
$sql.= " WHERE ref like '${numpr}%'";
$resql=$db->query($sql);
if ($resql)
{
$num = $db->result(0, 0);
$obj=$db->fetch_object($resql);
$num = $obj->nb;
$db->free($resql);
if ($num > 0)
{

View File

@ -76,6 +76,14 @@ class pdf_huitre extends ModelePDFFactures {
{
global $user,$langs,$conf,$mysoc;
if (! is_object($outputlangs)) $outputlangs=$langs;
$outputlangs->load("main");
$outputlangs->load("companies");
$outputlangs->load("bills");
$outputlangs->load("products");
$outputlangs->setPhpLang();
if ($conf->facture->dir_output)
{
// Définition de l'objet $fac (pour compatibilite ascendante)
@ -104,6 +112,7 @@ class pdf_huitre extends ModelePDFFactures {
if (create_exdir($dir) < 0)
{
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0;
}
}
@ -216,7 +225,8 @@ class pdf_huitre extends ModelePDFFactures {
$pdf->SetFont('Arial','U',11);
$pdf->SetXY(10, 225);
$titre = $langs->trans("PaymentConditions").' : '.$fac->cond_reglement_facture;
$titre = $langs->trans("PaymentConditions").' : ';
$titre.=$lib_condition_paiement=$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code)?$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code):$fac->cond_reglement;
$pdf->MultiCell(190, 5, $titre, 0, 'J');
$pdf->SetFont('Arial','',6);
@ -249,20 +259,24 @@ class pdf_huitre extends ModelePDFFactures {
$pdf->Output($file);
$langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur
}
else
{
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0;
}
}
else
{
$this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR");
$langs->setPhpLang(); // On restaure langue session
return 0;
}
$this->error=$langs->trans("ErrorUnknown");
$langs->setPhpLang(); // On restaure langue session
return 0; // Erreur par defaut
}

View File

@ -101,6 +101,14 @@ class pdf_oursin extends ModelePDFFactures
{
global $user,$langs,$conf,$mysoc;
if (! is_object($outputlangs)) $outputlangs=$langs;
$outputlangs->load("main");
$outputlangs->load("companies");
$outputlangs->load("bills");
$outputlangs->load("products");
$outputlangs->setPhpLang();
$langs->load("main");
$langs->load("bills");
$langs->load("products");
@ -133,6 +141,7 @@ class pdf_oursin extends ModelePDFFactures
if (create_exdir($dir) < 0)
{
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0;
}
}
@ -330,7 +339,8 @@ class pdf_oursin extends ModelePDFFactures
$pdf->MultiCell(80, 5, $titre, 0, 'L');
$pdf->SetFont('Arial','',10);
$pdf->SetXY($this->marges['g']+44, 217);
$pdf->MultiCell(80, 5, $fac->cond_reglement_facture,0,'L');
$lib_condition_paiement=$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code)?$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code):$fac->cond_reglement;
$pdf->MultiCell(80, 5, $lib_condition_paiement,0,'L');
}
/*
@ -343,20 +353,24 @@ class pdf_oursin extends ModelePDFFactures
$pdf->Output($file);
$langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur
}
else
{
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0;
}
}
else
{
$this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR");
$langs->setPhpLang(); // On restaure langue session
return 0;
}
$this->error=$langs->trans("ErrorUnknown");
$langs->setPhpLang(); // On restaure langue session
return 0; // Erreur par defaut
}

View File

@ -58,33 +58,34 @@ class DoliDb
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'
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)
@ -168,6 +169,7 @@ class DoliDb
return $this->ok;
}
/**
\brief Selectionne une database.
\param database Nom de la database
@ -178,6 +180,7 @@ class DoliDb
return mysql_select_db($database, $this->db);
}
/**
\brief Connection vers le serveur
\param host addresse de la base de données
@ -204,8 +207,8 @@ class DoliDb
$row=$this->fetch_row($resql);
return $row[0];
}
/**
\brief Renvoie la version du serveur dans un tableau
\return array Tableau de chaque niveau de version
@ -214,30 +217,8 @@ class DoliDb
{
return split('\.',$this->getVersion());
}
/**
\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éation d'une nouvelle base de donnée
\param database nom de la database à créer
@ -255,44 +236,16 @@ class DoliDb
$sql = 'CREATE DATABASE '.$database;
$ret=$this->query($sql);
}
//print "database=".$this->database_name." ret=".$ret." mysqlerror=".mysql_error($this->db);
return $ret;
}
/**
\brief Copie d'un handler de database.
\return resource
*/
function dbclone()
{
$db2 = new DoliDb("", "", "", "", "");
$db2->db = $this->db;
return $db2;
}
/**
\brief Ouverture d'une connection vers une database.
\param host Adresse 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 pconnect($host, $login, $passwd, $name)
{
$this->db = mysql_pconnect($host, $login, $passwd);
return $this->db;
}
/**
\brief Fermeture d'une connection vers une database.
\return resource
*/
function close()
{
return mysql_close($this->db);
@ -303,7 +256,6 @@ class DoliDb
\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)
@ -323,7 +275,6 @@ class DoliDb
\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)
@ -343,7 +294,6 @@ class DoliDb
\brief Annulation d'une transaction et retour aux anciennes valeurs
\return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur
*/
function rollback()
{
if ($this->transaction_opened<=1)
@ -358,16 +308,78 @@ class DoliDb
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 = mysql_query($query, $this->db);
}
else
{
$ret = mysql_db_query($this->database_name, $query, $this->db);
}
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;
}
// 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
\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="")
{
@ -392,14 +404,14 @@ class DoliDb
}
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;
@ -432,13 +444,14 @@ class DoliDb
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
\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="")
{
@ -460,65 +473,19 @@ class DoliDb
if( eregi("^[^ ]",$field_desc['extra']))
$sql .= " ".$field_desc['extra'];
$sql .= " ".$field_position;
if(! $this -> query($sql))
return false;
else
return true;
}
/**
\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 = mysql_query($query, $this->db);
}
else
{
$ret = mysql_db_query($this->database_name, $query, $this->db);
}
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 les données de la requete.
\param nb Contenu de la query
\param fieldname Nom du champ
\return resource
*/
function result($nb, $fieldname)
{
return mysql_result($this->results, $nb, $fieldname);
}
/**
\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
@ -685,7 +652,7 @@ class DoliDb
{
return 'IF('.$test.','.$resok.','.$resko.')';
}
/**
\brief Renvoie la derniere requete soumise par la methode query()
@ -818,13 +785,13 @@ class DoliDb
function fetch_all_rows($sql, &$datas)
{
$datas = array();
$resql = $this->query($sql);
if ($resql)
{
$i = 0;
$num = $this->num_rows($resql);
while ($i < $num)
{
$row = $this->fetch_row($resql);

View File

@ -188,100 +188,16 @@ class DoliDb
return split('\.',$this->getVersion());
}
/**
\brief Renvoie l'id de la connection
\return string Id connection
*/
function getConnectId()
{
return '?';
}
/**
\brief Renvoie la commande sql qui donne les droits à user sur les tables
\param databaseuse User à autoriser
\return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
// Scan tables pour générer le grant
$dir = DOL_DOCUMENT_ROOT."/pgsql/tables";
$handle=opendir($dir);
$table_list="";
while (($file = readdir($handle))!==false)
{
if (! ereg("\.key\.sql",$file) && ereg("^(.*)\.sql",$file,$reg))
{
if ($table_list) {
$table_list.=", ".$reg[0];
}
else {
$table_list.=$reg[0];
}
}
}
// Genere le grant_query
$grant_query = 'GRANT ALL ON '.$table_list.' TO "'.$databaseuser.'";';
return $grant_query;
}
/**
\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)
{
$ret=$this->query('CREATE DATABASE '.$database.';');
return $ret;
}
/**
\brief Copie d'un handler de database.
\return resource
*/
function dbclone()
{
$db2 = new DoliDb("", "", "", "", "");
$db2->db = $this->db;
return $db2;
}
/**
\brief Ouverture d'une connection vers une database.
\param host Adresse de la base de données
\param login Nom de l'utilisateur autorisé
\param passwd Mot de passe
\param name Nom de la database
\return resource handler d'accès à la base
*/
function pconnect($host, $login, $passwd, $name)
{
$con_string = "host=$host dbname=$name user=$login password=$passwd";
$this->db = pg_pconnect($con_string);
return $this->db;
}
/**
\brief Fermeture d'une connection vers une database.
\return resource
*/
function close()
{
return pg_close($this->db);
}
/**
\brief Debut d'une transaction.
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
@ -338,6 +254,7 @@ class DoliDb
return 1;
}
}
/**
\brief Effectue une requete et renvoi le resultset de réponse de la base
@ -360,15 +277,64 @@ class DoliDb
return $ret;
}
// Next function are not required. Only minor features use them.
/**
\brief Renvoie les données de la requete.
\param nb Contenu de la query
\param fieldname Nom du champ
\return resource
\brief Renvoie l'id de la connection
\return string Id connection
*/
function result($nb, $fieldname)
function getConnectId()
{
return pg_fetch_result($this->results, $nb, $fieldname);
return '?';
}
/**
\brief Renvoie la commande sql qui donne les droits à user sur les tables
\param databaseuse User à autoriser
\return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
// Scan tables pour générer le grant
$dir = DOL_DOCUMENT_ROOT."/pgsql/tables";
$handle=opendir($dir);
$table_list="";
while (($file = readdir($handle))!==false)
{
if (! ereg("\.key\.sql",$file) && ereg("^(.*)\.sql",$file,$reg))
{
if ($table_list) {
$table_list.=", ".$reg[0];
}
else {
$table_list.=$reg[0];
}
}
}
// Genere le grant_query
$grant_query = 'GRANT ALL ON '.$table_list.' TO "'.$databaseuser.'";';
return $grant_query;
}
/**
\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)
{
$ret=$this->query('CREATE DATABASE '.$database.';');
return $ret;
}
/**

View File

@ -28,24 +28,9 @@ if ($user->societe_id > 0)
$socidp = $user->societe_id;
}
llxHeader("","","Lolix");
function valeur($sql)
{
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
{
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/*
*
*/
llxHeader("","","Lolix");
print_titre("Espace Lolix");

View File

@ -28,24 +28,9 @@ if ($user->societe_id > 0)
$socidp = $user->societe_id;
}
llxHeader("","","Lolix");
function valeur($sql)
{
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
{
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/*
*
*/
llxHeader("","","Lolix");
print_titre("Espace Lolix");

View File

@ -758,88 +758,90 @@ class Societe
return $facimp;
}
/**
* \brief Attribut le prefix de la société en base
*
*/
function attribute_prefix()
{
$sql = "SELECT nom FROM ".MAIN_DB_PREFIX."societe WHERE idp = '$this->id'";
if ( $this->db->query( $sql) )
{
if ( $this->db->num_rows() )
{
$nom = preg_replace("/[[:punct:]]/","",$this->db->result(0,0));
$this->db->free();
$prefix = $this->genprefix($nom,4);
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
if ( $this->db->query( $sql) )
{
if ( $this->db->result(0, 0) )
{
$this->db->free();
}
else
{
$this->db->free();
$sql = "UPDATE ".MAIN_DB_PREFIX."societe set prefix_comm='$prefix' WHERE idp='$this->id'";
if ( $this->db->query( $sql) )
{
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
return $prefix;
}
/**
* \brief Génère le préfix de la société
* \param nom nom de la société
* \param taille taille du prefix à retourner
* \param mot l'indice du mot à utiliser
*
*/
function genprefix($nom, $taille=4,$mot=0)
{
$retour = "";
$tab = explode(" ",$nom);
if($mot < count($tab)) {
$prefix = strtoupper(substr($tab[$mot],0,$taille));
//On vérifie que ce prefix n'a pas déjà été pris ...
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
if ( $this->db->query( $sql) )
/**
* \brief Attribut le prefix de la société en base
*
*/
function attribute_prefix()
{
if ( $this->db->result(0, 0) )
{
$this->db->free();
$retour = $this->genprefix($nom,$taille,$mot+1);
}
else
{
$retour = $prefix;
}
$sql = "SELECT nom FROM ".MAIN_DB_PREFIX."societe WHERE idp = '".$this->id."'";
$resql=$this->db->query( $sql);
if ($resql)
{
if ($this->db->num_rows($resql))
{
$obj=$this->db->fetch_object($resql);
$nom = preg_replace("/[[:punct:]]/","",$obj->nom);
$this->db->free();
$prefix = $this->genprefix($nom,4);
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
$resql=$this->db->query($sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
$this->db->free($resql);
if (! $obj->nb)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."societe set prefix_comm='$prefix' WHERE idp='$this->id'";
if ( $this->db->query( $sql) )
{
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
return $prefix;
}
/**
* \brief Génère le préfix de la sociét
* \param nom nom de la sociét
* \param taille taille du prefix à retourner
* \param mot l'indice du mot à utiliser
*/
function genprefix($nom, $taille=4, $mot=0)
{
$retour = "";
$tab = explode(" ",$nom);
if ($mot < count($tab))
{
$prefix = strtoupper(substr($tab[$mot],0,$taille));
// On vérifie que ce prefix n'a pas déjà été pris ...
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
$resql=$this->db->query( $sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
if ($obj->nb)
{
$this->db->free();
$retour = $this->genprefix($nom,$taille,$mot+1);
}
else
{
$retour = $prefix;
}
}
}
return $retour;
}
}
return $retour;
}
/**
* \brief Définit la société comme un client