From 790469ee66805d68cca7bfa6130b41b22c7e3438 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 24 Jun 2006 19:47:36 +0000 Subject: [PATCH] Qual: Uniformisation de la maniere de recuperer le resultat de requete (suppression des methodes result au profit de la methode fetch_object) --- htdocs/comm/addpropal.php | 18 +- htdocs/comm/prospect/index.php | 15 - htdocs/commande/commande.class.php | 75 +++++ htdocs/compta/bank/account.class.php | 19 +- htdocs/compta/bank/bilan.php | 26 +- htdocs/compta/bank/budget.php | 110 ++++---- htdocs/compta/bank/releve.php | 12 - htdocs/compta/charges.php | 16 +- htdocs/compta/paiement_charge.php | 12 +- htdocs/fichinter/fiche.php | 5 +- .../modules/facture/pdf_huitre.modules.php | 16 +- .../modules/facture/pdf_oursin.modules.php | 16 +- htdocs/lib/mysql.lib.php | 261 ++++++++---------- htdocs/lib/pgsql.lib.php | 148 ++++------ htdocs/lolix/index.php | 19 +- htdocs/lolix/societe/index.php | 19 +- htdocs/societe.class.php | 162 +++++------ 17 files changed, 464 insertions(+), 485 deletions(-) diff --git a/htdocs/comm/addpropal.php b/htdocs/comm/addpropal.php index 497247bfd98..e256720b5aa 100644 --- a/htdocs/comm/addpropal.php +++ b/htdocs/comm/addpropal.php @@ -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 "
id."\" method=\"post\">"; diff --git a/htdocs/comm/prospect/index.php b/htdocs/comm/prospect/index.php index 20a4453809a..198c32fc5a1 100644 --- a/htdocs/comm/prospect/index.php +++ b/htdocs/comm/prospect/index.php @@ -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 */ diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php index 1e9ca3343d1..e11f309358e 100644 --- a/htdocs/commande/commande.class.php +++ b/htdocs/commande/commande.class.php @@ -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; + } + } diff --git a/htdocs/compta/bank/account.class.php b/htdocs/compta/bank/account.class.php index 4a11dcd8a7a..b6e1105c969 100644 --- a/htdocs/compta/bank/account.class.php +++ b/htdocs/compta/bank/account.class.php @@ -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; } } diff --git a/htdocs/compta/bank/bilan.php b/htdocs/compta/bank/bilan.php index 5c21f1417fa..92ae40b8d06 100644 --- a/htdocs/compta/bank/bilan.php +++ b/htdocs/compta/bank/bilan.php @@ -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 '
'; @@ -52,22 +52,22 @@ echo 'R print "\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 "Somme des paiements (associés à une facture)".price($paiem).""; $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 "Somme des credits".price($credits).""; $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 "Somme des debits".price($debits).""; $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 "".$langs->trans("BankBalance")."".price($solde).""; diff --git a/htdocs/compta/bank/budget.php b/htdocs/compta/bank/budget.php index b5b151ed222..0f9f32b6b9d 100644 --- a/htdocs/compta/bank/budget.php +++ b/htdocs/compta/bank/budget.php @@ -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 '
'; - - print ''; - print ""; - print ''; - print ''; - print ''; - print "\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 '
'; + + print '
'.$langs->trans("Date").''.$langs->trans("Bank").''.$langs->trans("Description").''.$langs->trans("Amount").' 
'; + print ""; + print ''; + print ''; + print ''; + print "\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 ""; - print "\n"; - - print ""; - print "'; - print ""; - print ""; - $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 ""; + print "\n"; + + print ""; + print "'; + print ""; + print ""; + $i++; + $total = $total + (0 - $objp->amount); + } + $db->free(); + print '"; } - $db->free(); - print '"; - } - else - { - dolibarr_print_error($db); - } - print "
'.$langs->trans("Date").''.$langs->trans("Bank").''.$langs->trans("Description").''.$langs->trans("Amount").' 
".dolibarr_print_date($objp->do)."bankid\">$objp->labelcompterowid\">".img_object($langs->trans("ShowPayment"),"payment").' '.$objp->label.'".price(0 - $objp->amount)." 
".dolibarr_print_date($objp->do)."bankid\">$objp->labelcompterowid\">".img_object($langs->trans("ShowPayment"),"payment").' '.$objp->label.'".price(0 - $objp->amount)." 
'.$langs->trans("Total")."".price(abs($total))."".$langs->trans("Currency".$conf->monnaie)."
'.$langs->trans("Total")."".price(abs($total))."".$langs->trans("Currency".$conf->monnaie)."
"; + else + { + dolibarr_print_error($db); + } + print ""; } diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index 0e5a19c0b75..fcb6f088f77 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -181,18 +181,6 @@ else print ' '; print "\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; diff --git a/htdocs/compta/charges.php b/htdocs/compta/charges.php index 0f58fa53787..017790fb5c1 100644 --- a/htdocs/compta/charges.php +++ b/htdocs/compta/charges.php @@ -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 ''; diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index 0b460f1a242..90a773e8989 100755 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -181,10 +181,14 @@ if ($_GET["action"] == 'create') print ''; - $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 ''; diff --git a/htdocs/fichinter/fiche.php b/htdocs/fichinter/fiche.php index 0bd18c8b00f..9268b25c88f 100644 --- a/htdocs/fichinter/fiche.php +++ b/htdocs/fichinter/fiche.php @@ -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) { diff --git a/htdocs/includes/modules/facture/pdf_huitre.modules.php b/htdocs/includes/modules/facture/pdf_huitre.modules.php index 4fba058f839..cdca2538df8 100644 --- a/htdocs/includes/modules/facture/pdf_huitre.modules.php +++ b/htdocs/includes/modules/facture/pdf_huitre.modules.php @@ -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 } diff --git a/htdocs/includes/modules/facture/pdf_oursin.modules.php b/htdocs/includes/modules/facture/pdf_oursin.modules.php index eac8edd02d9..34ec31127da 100644 --- a/htdocs/includes/modules/facture/pdf_oursin.modules.php +++ b/htdocs/includes/modules/facture/pdf_oursin.modules.php @@ -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 } diff --git a/htdocs/lib/mysql.lib.php b/htdocs/lib/mysql.lib.php index 8766843c6d9..14560d2d8e0 100644 --- a/htdocs/lib/mysql.lib.php +++ b/htdocs/lib/mysql.lib.php @@ -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); diff --git a/htdocs/lib/pgsql.lib.php b/htdocs/lib/pgsql.lib.php index 0282240a82c..8733f3f28d5 100644 --- a/htdocs/lib/pgsql.lib.php +++ b/htdocs/lib/pgsql.lib.php @@ -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; } /** diff --git a/htdocs/lolix/index.php b/htdocs/lolix/index.php index acc16c233c9..27d621d130f 100644 --- a/htdocs/lolix/index.php +++ b/htdocs/lolix/index.php @@ -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"); diff --git a/htdocs/lolix/societe/index.php b/htdocs/lolix/societe/index.php index acc16c233c9..27d621d130f 100644 --- a/htdocs/lolix/societe/index.php +++ b/htdocs/lolix/societe/index.php @@ -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"); diff --git a/htdocs/societe.class.php b/htdocs/societe.class.php index 7f13b0448b3..eefa66340fb 100644 --- a/htdocs/societe.class.php +++ b/htdocs/societe.class.php @@ -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
'.$langs->trans("AmountTTC").":".price($charge->amount).' '.$langs->trans("Currency".$conf->monnaie).'
'.$langs->trans("AlreadyPayed").''.price($sumpayed).' '.$langs->trans("Currency".$conf->monnaie).'