From fcb7e9d700e9a26963a9b1ebd169076ebc99a98a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Fri, 25 May 2007 20:02:23 +0000 Subject: [PATCH] =?UTF-8?q?Am=E9lioration=20du=20support=20UTF-8=20pour=20?= =?UTF-8?q?la=20g=E9n=E9ration=20des=20pages=20Web.=20La=20variable=20du?= =?UTF-8?q?=20charset=20d'affichage=20qui=20est=20mis=20dna=20sle=20fichie?= =?UTF-8?q?r=20config=20est=20stock=E9=20dans=20l'objet=20$conf=20et=20non?= =?UTF-8?q?=20en=20session.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/propal.php | 18 +-- htdocs/commande/fiche.php | 16 +-- htdocs/compta/facture.php | 18 +-- htdocs/compta/paiement/fiche.php | 2 +- htdocs/conf/conf.php.example | 12 ++ htdocs/expedition/fiche.php | 2 +- htdocs/fichinter/fiche.php | 2 +- htdocs/fourn/commande/fiche.php | 12 +- htdocs/install/etape0.php | 30 ++-- htdocs/install/etape1.php | 21 +-- htdocs/install/inc.php | 2 +- htdocs/install/upgrade2.php | 204 ++++++++++++++++++++++------ htdocs/langs/fr_FR/install.lang | 4 + htdocs/lib/CMailFile.class.php | 5 +- htdocs/lib/databases/mysql.lib.php | 3 +- htdocs/lib/databases/mysqli.lib.php | 3 +- htdocs/lib/functions.inc.php | 2 +- htdocs/livraison/fiche.php | 2 +- htdocs/master.inc.php | 24 ++-- htdocs/translate.class.php | 34 +++-- 20 files changed, 293 insertions(+), 123 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 7bd7e306146..452708c201d 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -129,7 +129,7 @@ if ($_POST['action'] == 'confirm_deleteproductline' && $_POST['confirm'] == 'yes $result=$propal->delete_product($_GET['ligne']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -147,7 +147,7 @@ if ($_POST['action'] == 'confirm_validate' && $_POST['confirm'] == 'yes') $result=$propal->update_price($_GET['propalid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -286,7 +286,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer) // Generation document PDF if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $id, $_REQUEST['model'], $outputlangs); @@ -581,7 +581,7 @@ if ($_POST['action'] == "addligne" && $user->rights->propale->creer) if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -605,7 +605,7 @@ if ($_POST['action'] == 'updateligne' && $user->rights->propale->creer && $_POST if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -625,7 +625,7 @@ if ($_REQUEST['action'] == 'builddoc' && $user->rights->propale->creer) if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -652,7 +652,7 @@ if ($_GET['action'] == 'del_ligne' && $user->rights->propale->creer && !$conf->g $propal->delete_product($_GET['ligne']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -710,7 +710,7 @@ if ($_GET['action'] == 'up' && $user->rights->propale->creer) $propal->line_up($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); @@ -724,7 +724,7 @@ if ($_GET['action'] == 'down' && $user->rights->propale->creer) $propal->line_down($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs); diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index f541dad50ae..1c3365da7d7 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -319,7 +319,7 @@ if ($_POST['action'] == 'addligne' && $user->rights->commande->creer) if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -346,7 +346,7 @@ if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POS { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -373,7 +373,7 @@ if ($_GET['action'] == 'deleteline' && $user->rights->commande->creer && !$conf- $result = $commande->delete_line($_GET['lineid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } commande_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); @@ -425,7 +425,7 @@ if ($_POST['action'] == 'confirm_deleteproductline' && $_POST['confirm'] == 'yes $commande->delete_line($_GET['lineid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } commande_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); @@ -455,7 +455,7 @@ if ($_GET['action'] == 'up' && $user->rights->commande->creer) $commande->line_up($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -470,7 +470,7 @@ if ($_GET['action'] == 'down' && $user->rights->commande->creer) $commande->line_down($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -495,7 +495,7 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=commande_pdf_create($db, $commande->id,$commande->modelpdf,$outputlangs); @@ -1759,7 +1759,7 @@ else { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=commande_pdf_create($db, $_REQUEST['id'], '', $_REQUEST['model'], $outputlangs); diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index a905c3b215d..16a39170c41 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -187,7 +187,7 @@ if ($_POST['action'] == 'confirm_valid' && $_POST['confirm'] == 'yes' && $user-> { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); @@ -245,7 +245,7 @@ if ($_POST['action'] == 'confirm_deleteproductline' && $_POST['confirm'] == 'yes $fac->deleteline($_GET['rowid'], $user); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); @@ -837,7 +837,7 @@ if ($_POST['action'] == 'updateligne' && $user->rights->facture->creer && $_POST if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); @@ -860,7 +860,7 @@ if ($_GET['action'] == 'deleteline' && $user->rights->facture->creer && ! $conf- { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } // facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); @@ -884,7 +884,7 @@ if ($_GET['action'] == 'up' && $user->rights->facture->creer) $fac->line_up($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); @@ -898,7 +898,7 @@ if ($_GET['action'] == 'down' && $user->rights->facture->creer) $fac->line_down($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); @@ -1088,7 +1088,7 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } @@ -2864,7 +2864,7 @@ else { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=facture_pdf_create($db, $fac->id, '', $_REQUEST['model'], $outputlangs); @@ -2920,7 +2920,7 @@ else { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=facture_pdf_create($db, $fac->id, '', $_REQUEST['model'], $outputlangs); diff --git a/htdocs/compta/paiement/fiche.php b/htdocs/compta/paiement/fiche.php index 85e0436e5d0..d0464280d23 100644 --- a/htdocs/compta/paiement/fiche.php +++ b/htdocs/compta/paiement/fiche.php @@ -86,7 +86,7 @@ if ($_POST['action'] == 'confirm_valide' && $_POST['confirm'] == 'yes' && $user- $fac->fetch($id); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs); diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 186d526f61b..1ca801ada16 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -93,6 +93,18 @@ $dolibarr_main_db_pass=""; $dolibarr_main_db_type=""; +# +# +# +$dolibarr_main_db_character_set=""; + + +# +# +# +$character_set_client="ISO-8859-1"; + + # dolibarr_main_authentication # This parameter contains the way authentication is done. # If value "ldap" is used, you must also set parameters dolibarr_main_auth_ldap_* diff --git a/htdocs/expedition/fiche.php b/htdocs/expedition/fiche.php index 4d66741eefa..643ddd7f327 100644 --- a/htdocs/expedition/fiche.php +++ b/htdocs/expedition/fiche.php @@ -152,7 +152,7 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=expedition_pdf_create($db,$expedition->id,$expedition->modelpdf,$outputlangs); diff --git a/htdocs/fichinter/fiche.php b/htdocs/fichinter/fiche.php index 47c7d6b303b..3e52a75e1ed 100644 --- a/htdocs/fichinter/fiche.php +++ b/htdocs/fichinter/fiche.php @@ -131,7 +131,7 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=fichinter_pdf_create($db, $_REQUEST['id'], $_REQUEST['model'], $outputlangs); diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index a25d7389822..48e33b493a9 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -144,7 +144,7 @@ if ($_POST['action'] == 'addligne' && $user->rights->fournisseur->commande->cree { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } supplier_order_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -176,7 +176,7 @@ if ($_POST['action'] == 'updateligne' && $user->rights->fournisseur->commande->c { if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } supplier_order_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -203,7 +203,7 @@ if ($_GET['action'] == 'deleteline' && $user->rights->fournisseur->commande->cre $result = $commande->delete_line($_GET['lineid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } supplier_order_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); @@ -302,7 +302,7 @@ if ($_GET['action'] == 'up' && $user->rights->fournisseur->commande->creer) $commande->line_up($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } supplier_order_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -317,7 +317,7 @@ if ($_GET['action'] == 'down' && $user->rights->fournisseur->commande->creer) $commande->line_down($_GET['rowid']); if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } supplier_order_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); @@ -343,7 +343,7 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=supplier_order_pdf_create($db, $commande->id,$commande->modelpdf,$outputlangs); diff --git a/htdocs/install/etape0.php b/htdocs/install/etape0.php index c84ff24fb23..a0b410116bc 100644 --- a/htdocs/install/etape0.php +++ b/htdocs/install/etape0.php @@ -35,13 +35,21 @@ $langs->setDefaultLang($setuplang); $langs->load("admin"); $langs->load("install"); -pHeader($langs->trans("ConfigurationFile"),"etape1"); - $error = 0; /* * Actions */ + + + +/* + * Affichage page + */ + +pHeader($langs->trans("ConfigurationFile"),"etape1"); + +// On reporte champ formulaire pr�c�dent pour propagation if ($_POST["action"] == "set") { umask(0); @@ -50,6 +58,7 @@ if ($_POST["action"] == "set") echo '<input type="hidden" name="'.$cle.'" value="'.$valeur.'">'; } } + /** * R�cuparation des information de connexion */ @@ -57,13 +66,13 @@ $userroot=isset($_POST["db_user_root"])?$_POST["db_user_root"]:""; $passroot=isset($_POST["db_pass_root"])?$_POST["db_pass_root"]:""; // R�pertoire des pages dolibarr $main_dir=isset($_POST["main_dir"])?trim($_POST["main_dir"]):''; + /** * Si l'utilisateur n'est pas cr�� d�j� cr��, on se connecte � l'aide du login root' */ require_once($main_dir."/lib/databases/".$_POST["db_type"].".lib.php"); if (isset($_POST["db_create_user"]) && $_POST["db_create_user"] == "on") { - $databasefortest=$conf->db->name; if ($_POST["db_type"] == 'mysql' ||$_POST["db_type"] == 'mysqli') { @@ -77,10 +86,11 @@ if (isset($_POST["db_create_user"]) && $_POST["db_create_user"] == "on") } if ($db->error) { - print $langs->trans("ThisPHPDoesNotSupportTypeBase",$conf->db->type); + print '<div class="error">'.$db->error.'</div>'; $error++; } + /* * Si creation database demand�e, il est possible de faire un choix */ @@ -97,11 +107,10 @@ if ($db->connected){ <tr><td valign="top" class="label" colspan="3"><?php echo $langs->trans("CharsetChoice");?></td></tr> <tr> <td valign="top" class="label"><?php echo $langs->trans("CharacterSetClient"); ?></td> - <td valign="top" class="label"><select name="character_set_client"/><option>ISO-8859-1</option><option>ISO-8859-15</option><option>UTF-8</option><option>cp866</option><option>cp1251</option><option>cp1252</option><option>KOI8-R</option><option>BIG5</option><option>GB2312</option><option>BIG5-HKSCS</option><option>Shift_JIS</option><option>EUC-JP</option></select></td> + <td valign="top" class="label"><select name="character_set_client"><option>ISO-8859-1</option><option>ISO-8859-15</option><option>UTF-8</option><option>cp866</option><option>cp1251</option><option>cp1252</option><option>KOI8-R</option><option>BIG5</option><option>GB2312</option><option>BIG5-HKSCS</option><option>Shift_JIS</option><option>EUC-JP</option></select></td> <td class="label"><div class="comment"><?php echo $langs->trans("CharacterSetClientComment"); ?></div></td> </tr> - <?php - include($_POST["db_type"].'.php');?> + <?php include($_POST["db_type"].'.php');?> <?php }else{ @@ -116,5 +125,10 @@ if ($db->connected){ print $langs->trans("ErrorGoBackAndCorrectParameters").'<br><br>'; } } -pFooter($err,$setuplang); + +?> +</table> + +<?php +pFooter($error,$setuplang); ?> \ No newline at end of file diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index 37d7e1ccb4a..9717b0357bf 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -135,11 +135,11 @@ if ($_POST["action"] == "set") fputs($fp, '$dolibarr_main_db_type="'.$_POST["db_type"].'";'); fputs($fp,"\n"); - /* Choix des charsets*/ - fputs($fp, '$character_set_client="'.$_POST["character_set_client"].'";'); + fputs($fp, '$dolibarr_main_db_character_set="'.$_POST["character_set_database"].'";'); fputs($fp,"\n"); - fputs($fp, '$character_set_database="'.$_POST["character_set_database"].'";'); + /* Choix des charsets*/ + fputs($fp, '$character_set_client="'.$_POST["character_set_client"].'";'); fputs($fp,"\n"); fputs($fp, '$collation_connection="'.$_POST["collation_connection"].'";'); @@ -279,7 +279,7 @@ if ($_POST["action"] == "set") $db = new DoliDb($conf->db->type,$conf->db->host,$userroot,$passroot,$databasefortest); if ($db->error) { - print $langs->trans("ThisPHPDoesNotSupportTypeBase",$conf->db->type); + print '<div class="error">'.$db->error.'</div>'; $error++; } @@ -333,9 +333,9 @@ if ($_POST["action"] == "set") // Affiche aide diagnostique print '<tr><td colspan="2"><br>'; - print 'Vous avez demand� la cr�ation du login Dolibarr "<b>'.$dolibarr_main_db_user.'</b>", mais pour cela, '; - print 'Dolibarr doit se connecter sur le serveur "<b>'.$dolibarr_main_db_host.'</b>" via le super utilisateur "<b>'.$userroot.'</b>".<br>'; - print 'La connexion ayant �chou�, les param�tres du serveur ou du super utilisateur sont peut-etre incorrects.<br>'; + print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot); + print '<br>'; + print $langs->trans("BecauseConnectionFailedParametersMayBeWrong").'<br><br>'; print $langs->trans("ErrorGoBackAndCorrectParameters").'<br><br>'; print '</td></tr>'; @@ -392,9 +392,10 @@ if ($_POST["action"] == "set") print '</tr>'; // Affiche aide diagnostique - print '<tr><td colspan="2"><br>Vous avez demand� la cr�ation de la base Dolibarr "<b>'.$dolibarr_main_db_name.'</b>", mais pour cela, '; - print 'Dolibarr doit se connecter sur le serveur "<b>'.$dolibarr_main_db_host.'</b>" via le super utilisateur "<b>'.$userroot.'</b>".<br>'; - print 'La connexion ayant �chou�, les param�tres du serveur ou du super utilisateur sont peut-etre incorrects.<br>'; + print '<tr><td colspan="2"><br>'; + print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot); + print '<br>'; + print $langs->trans("BecauseConnectionFailedParametersMayBeWrong").'<br><br>'; print $langs->trans("ErrorGoBackAndCorrectParameters").'<br><br>'; print '</td></tr>'; diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 0aa484776c1..d8307654a6e 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -87,7 +87,7 @@ if (get_magic_quotes_gpc()) // Defini objet langs -$langs = new Translate('../langs'); +$langs = new Translate('../langs',$conf); $langs->setDefaultLang('auto'); $langs->setPhpLang(); diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 4f27a70a0a5..adc34fbe03a 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -177,7 +177,9 @@ if (isset($_POST['action']) && $_POST['action'] == 'upgrade') migrate_delete_old_files($db,$langs,$conf); // Script pour V2.1 -> V2.2 - migrate_paiements_orphelins($db,$langs,$conf); + migrate_paiements_orphelins_1($db,$langs,$conf); + + migrate_paiements_orphelins_2($db,$langs,$conf); // On commit dans tous les cas. // La proc�dure etant con�ue pour pouvoir passer plusieurs fois quelquesoit la situation. @@ -281,7 +283,7 @@ function migrate_paiements($db,$langs,$conf) * Pour verifier s'il reste des orphelins: * select * from llx_paiement as p left join llx_paiement_facture as pf on pf.fk_paiement=p.rowid WHERE pf.rowid IS NULL AND (p.fk_facture = 0 OR p.fk_facture IS NULL) */ -function migrate_paiements_orphelins($db,$langs,$conf) +function migrate_paiements_orphelins_1($db,$langs,$conf) { print '<tr><td colspan="4">'; @@ -299,16 +301,16 @@ function migrate_paiements_orphelins($db,$langs,$conf) $sql.= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL)"; $resql = $db->query($sql); + $row = array(); if ($resql) { $i = $j = 0; - $row = array(); $num = $db->num_rows($resql); while ($i < $num) { $obj = $db->fetch_object($resql); - if ($obj->pamount == $obj->bamount) // Pour etre sur d'avoir bon cas + if ($obj->pamount == $obj->bamount && $obj->socid) // Pour etre sur d'avoir bon cas { $row[$j]['paymentid'] = $obj->rowid ; // paymentid $row[$j]['pamount'] = $obj->pamount; @@ -325,50 +327,154 @@ function migrate_paiements_orphelins($db,$langs,$conf) dolibarr_print_error($db); } - if ($num) + if (sizeof($row)) { - print $langs->trans('MigrationPaymentsNumberToUpdate', $num)."<br>\n"; - if ($db->begin()) + print $langs->trans('MigrationPaymentsNumberToUpdate', sizeof($row))."<br>\n"; + $db->begin(); + + $res = 0; + for ($i = 0 ; $i < sizeof($row) ; $i++) { - $res = 0; - for ($i = 0 ; $i < sizeof($row) ; $i++) + print '* '.$row[$i]['datec'].' paymentid='.$row[$i]['paymentid'].' '.$row[$i]['pamount'].' fk_bank='.$row[$i]['fk_bank'].' '.$row[$i]['bamount'].' socid='.$row[$i]['socid'].'<br>'; + + // On cherche facture sans lien paiement et du meme montant et pour meme societe. + $sql=" SELECT distinct f.rowid from ".MAIN_DB_PREFIX."facture as f"; + $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; + $sql.=" WHERE f.fk_statut in (2,3) AND fk_soc = ".$row[$i]['socid']." AND total_ttc = ".$row[$i]['pamount']; + $sql.=" AND pf.fk_facture IS NULL"; + $sql.=" ORDER BY f.fk_statut"; + //print $sql.'<br>'; + $resql=$db->query($sql); + if ($resql) { - //print '* '.$row[$i]['datec'].' paymentid='.$row[$i]['paymentid'].' '.$row[$i]['pamount'].' fk_bank='.$row[$i]['fk_bank'].' '.$row[$i]['bamount'].' socid='.$row[$i]['socid'].'<br>'; - // On cherche facture du meme montant pour meme societe. - // Si y en a plusieurs, on prend la premiere sans lien vers un paiement - if ($row[$i]['socid'] > 0) + $num = $db->num_rows($resql); + //print 'Nb of invoice found for this amount and company :'.$num.'<br>'; + if ($num >= 1) { - $sql=" SELECT distinct f.rowid from ".MAIN_DB_PREFIX."facture as f"; - $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; - $sql.=" WHERE f.fk_statut in (2,3) AND fk_soc = ".$row[$i]['socid']." AND total_ttc = ".$row[$i]['pamount']; - $sql.=" AND pf.fk_facture IS NULL"; - $sql.=" ORDER BY f.fk_statut"; - print $sql.'<br>'; - $resql=$db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - //print 'Nb of invoice found for this amount and company :'.$num.'<br>'; - if ($num >= 1) - { - $obj=$db->fetch_object($resql); - $facid=$obj->rowid; - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."paiement_facture (fk_facture, fk_paiement, amount)"; - $sql .= " VALUES (".$facid.",".$row[$i]['paymentid'].",".$row[$i]['pamount'].")"; - $res += $db->query($sql); - - print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."<br>\n"; - } - } - else - { - print 'ERROR'; - } + $obj=$db->fetch_object($resql); + $facid=$obj->rowid; + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."paiement_facture (fk_facture, fk_paiement, amount)"; + $sql .= " VALUES (".$facid.",".$row[$i]['paymentid'].",".$row[$i]['pamount'].")"; + $res += $db->query($sql); + + print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."<br>\n"; } - } + } + else + { + print 'ERROR'; + } + } + + if ($res > 0) + { + print $langs->trans('MigrationSuccessfullUpdate')."<br>"; + } + else + { + print $langs->trans('MigrationPaymentsNothingToUpdate')."<br>\n"; } + $db->commit(); + } + else + { + print $langs->trans('MigrationPaymentsNothingToUpdate')."<br>\n"; + } + + print '</td></tr>'; +} + + +/** + * Corrige paiement orphelins (liens paumes suite a bugs) + * Pour verifier s'il reste des orphelins: + * select * from llx_paiement as p left join llx_paiement_facture as pf on pf.fk_paiement=p.rowid WHERE pf.rowid IS NULL AND (p.fk_facture = 0 OR p.fk_facture IS NULL) + */ +function migrate_paiements_orphelins_2($db,$langs,$conf) +{ + print '<tr><td colspan="4">'; + + print '<br>'; + print '<b>'.$langs->trans('MigrationPaymentsUpdate')."</b><br>\n"; + + // Tous les enregistrements qui sortent de cette requete devrait avoir un pere dans llx_paiement_facture + $sql = "SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount,"; + $sql.= " bu2.url_id as socid"; + $sql.= " FROM (".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."bank_url as bu, ".MAIN_DB_PREFIX."bank as b)"; + $sql.= " left join llx_paiement_facture as pf on pf.fk_paiement=p.rowid"; + $sql.= " left join llx_bank_url as bu2 on (bu.fk_bank=bu2.fk_bank AND bu2.type='company')"; + $sql.= " WHERE pf.rowid IS NULL AND (p.fk_bank=bu.fk_bank AND bu.type='payment') AND bu.fk_bank = b.rowid"; + $sql.= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL)"; + $resql = $db->query($sql); + + $row = array(); + if ($resql) + { + $i = $j = 0; + $num = $db->num_rows($resql); + + while ($i < $num) + { + $obj = $db->fetch_object($resql); + if ($obj->pamount == $obj->bamount && $obj->socid) // Pour etre sur d'avoir bon cas + { + $row[$j]['paymentid'] = $obj->rowid ; // paymentid + $row[$j]['pamount'] = $obj->pamount; + $row[$j]['fk_bank'] = $obj->fk_bank; + $row[$j]['bamount'] = $obj->bamount; + $row[$j]['socid'] = $obj->socid; + $row[$j]['datec'] = $obj->datec; + $j++; + } + $i++; + } + } + else { + dolibarr_print_error($db); + } + + if (sizeof($row)) + { + print $langs->trans('MigrationPaymentsNumberToUpdate', sizeof($row))."<br>\n"; + $db->begin(); + + $res = 0; + for ($i = 0 ; $i < sizeof($row) ; $i++) + { + print '* '.$row[$i]['datec'].' paymentid='.$row[$i]['paymentid'].' '.$row[$i]['pamount'].' fk_bank='.$row[$i]['fk_bank'].' '.$row[$i]['bamount'].' socid='.$row[$i]['socid'].'<br>'; + + // On cherche facture sans lien paiement et du meme montant et pour meme societe. + $sql=" SELECT distinct f.rowid from ".MAIN_DB_PREFIX."facture as f"; + $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; + $sql.=" WHERE f.fk_statut in (2,3) AND fk_soc = ".$row[$i]['socid']." AND total_ttc = ".$row[$i]['pamount']; + $sql.=" AND pf.fk_facture IS NULL"; + $sql.=" ORDER BY f.fk_statut"; + //print $sql.'<br>'; + $resql=$db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + //print 'Nb of invoice found for this amount and company :'.$num.'<br>'; + if ($num >= 1) + { + $obj=$db->fetch_object($resql); + $facid=$obj->rowid; + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."paiement_facture (fk_facture, fk_paiement, amount)"; + $sql .= " VALUES (".$facid.",".$row[$i]['paymentid'].",".$row[$i]['pamount'].")"; + $res += $db->query($sql); + + print $langs->trans('MigrationProcessPaymentUpdate', 'facid='.$facid.'-paymentid='.$row[$i]['paymentid'].'-amount='.$row[$i]['pamount'])."<br>\n"; + } + } + else + { + print 'ERROR'; + } + } + if ($res > 0) { print $langs->trans('MigrationSuccessfullUpdate')."<br>"; @@ -377,6 +483,8 @@ function migrate_paiements_orphelins($db,$langs,$conf) { print $langs->trans('MigrationPaymentsNothingToUpdate')."<br>\n"; } + + $db->commit(); } else { @@ -387,6 +495,20 @@ function migrate_paiements_orphelins($db,$langs,$conf) } +function migrate_paiements_orphelins_3($db,$langs,$conf) +{ + +/* +select p.rowid from llx_paiement as p left join llx_paiement_facture as pf on pf.fk_paiement=p.rowid WHERE pf.rowid IS NULL AND (p.fk_facture = 0 OR p.fk_facture IS NULL) +Poru chaque rep, test si +select count(*) from llx_bank where rowid = obj->fk_bank +select count(*) from llx_bank_url where url_id = 128 and type='payment' +Si partout 0, on efface ligne de llx_paiement +*/ + +} + + /* * Mise a jour des contrats (gestion du contrat + detail de contrat) */ diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 12cf38cc01e..345b23214e1 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -1,4 +1,5 @@ # Dolibarr language file - fr_FR - install +CHARSET=ISO-8859-1 InstallEasy=Nous avons fait en sorte que l'installation soit le plus simple possible, vous n'avez qu'� suivre les �tapes une � une. MiscellanousChecks=V�rification de pr�requis DolibarrWelcome=Bienvenue sur Dolibarr @@ -107,7 +108,10 @@ CollationConnection=Collation utilis CollationConnectionComment=Veuillez choisir la collation que vous d�sirez choisir pour la cr�ation de la base de donn�es.<br/> Ce param�tre n'est pas s�lectionnable si votre base est d�j� cr��e. CharacterSetDatabase=Codage utilis� pour la base de donn�es CharacterSetDatabaseComment=Veuillez choisir le codage que vous d�sirez choisir pour la cr�ation de la base de donn�es.<br/> Ce param�tre n'est pas s�lectionnable si votre base est d�j� cr��e. +YouAskDatabaseCreationSoDolibarrNeedToConnect=Vous avez demand� la cr�ation du login Dolibarr <b>%s</b>, mais pour cela, Dolibarr doit se connecter sur le serveur <b>%s</b> via le super utilisateur <b>%s</b>. +BecauseConnectionFailedParametersMayBeWrong=La connexion ayant �chou�, les param�tres du serveur ou du super utilisateur sont peut-etre incorrects. + ######### # upgrade ######### diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index e752758c518..432c54b90e1 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -244,7 +244,8 @@ class CMailFile */ function write_smtpheaders() { - $out = ""; + global $conf; + $out = ""; // Sender //$out .= "X-Sender: ".getValidAddress($this->addr_from,2).$this->eol; @@ -266,7 +267,7 @@ class CMailFile if ($this->msgishtml) { - $out.= "Content-Type: text/html; charset=".$_SESSION['charset'].$this->eol; + $out.= "Content-Type: text/html; charset=".$conf->charset_output.$this->eol; $out.= "Content-Transfer-Encoding: 8bit".$this->eol; } else diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php index 7e96da2c05a..0bb300db0d9 100644 --- a/htdocs/lib/databases/mysql.lib.php +++ b/htdocs/lib/databases/mysql.lib.php @@ -164,8 +164,9 @@ class DoliDb // host, login ou password incorrect $this->connected = 0; $this->ok = 0; + $this->error=mysql_error(); dolibarr_syslog("DoliDB::DoliDB : Erreur Connect mysql_error=".mysql_error()); - } + } // Si connexion serveur ok et si connexion base demand�e, on essaie connexion base if ($this->connected && $name) diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php index 1f969e3fa5c..cbd583ead56 100644 --- a/htdocs/lib/databases/mysqli.lib.php +++ b/htdocs/lib/databases/mysqli.lib.php @@ -166,7 +166,8 @@ class DoliDb // host, login ou password incorrect $this->connected = 0; $this->ok = 0; - dolibarr_syslog("DoliDB::DoliDB : Erreur Connect"); + $this->error=mysql_error(); + dolibarr_syslog("DoliDB::DoliDB : Erreur Connect mysql_error=".mysql_error()); } // Si connexion serveur ok et si connexion base demand�e, on essaie connexion base diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index e095a8a482e..7aa15409b60 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -1299,7 +1299,7 @@ function dolibarr_print_error($db='',$error='') if (! $langs) { require_once(DOL_DOCUMENT_ROOT ."/translate.class.php"); - $langs = new Translate(DOL_DOCUMENT_ROOT ."/langs", "en_US"); + $langs = new Translate(DOL_DOCUMENT_ROOT ."/langs", $conf); } $langs->load("main"); diff --git a/htdocs/livraison/fiche.php b/htdocs/livraison/fiche.php index 0abc9386b1c..988ccd00c04 100644 --- a/htdocs/livraison/fiche.php +++ b/htdocs/livraison/fiche.php @@ -146,7 +146,7 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post if ($_REQUEST['lang_id']) { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } $result=delivery_order_pdf_create($db, $_REQUEST['id'],$_REQUEST['model'],$outputlangs); diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 78e175ed6b2..f83aa2c3e6b 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -105,16 +105,22 @@ if ($dolibarr_main_db_encrypted_pass) $dolibarr_main_db_pass = dolibarr_decode($ require_once(DOL_DOCUMENT_ROOT."/conf/conf.class.php"); $conf = new Conf(); +// On defini tous les parametres de conf $conf->db->host = $dolibarr_main_db_host; $conf->db->name = $dolibarr_main_db_name; $conf->db->user = $dolibarr_main_db_user; $conf->db->pass = $dolibarr_main_db_pass; +if (! isset($dolibarr_main_db_type) && ! $dolibarr_main_db_type) $dolibarr_main_db_type='mysql'; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' $conf->db->type = $dolibarr_main_db_type; -if (! $conf->db->type) { $conf->db->type = 'mysql'; } // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' -// Defini prefix -if (isset($_SERVER["LLX_DBNAME"])) $dolibarr_main_db_prefix=$_SERVER["LLX_DBNAME"]; +if (! isset($dolibarr_main_db_charset) && ! $dolibarr_main_db_charset) $dolibarr_main_db_charset='ISO-8859-1'; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' +$conf->db->character_set=$dolibarr_main_db_charset; +if (! isset($character_set_client) || ! $character_set_client) $character_set_client='ISO-8859-1'; +$conf->character_set_client=$character_set_client; if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_'; $conf->db->prefix = $dolibarr_main_db_prefix; + +// Defini prefix +if (isset($_SERVER["LLX_DBNAME"])) $dolibarr_main_db_prefix=$_SERVER["LLX_DBNAME"]; define('MAIN_DB_PREFIX',$dolibarr_main_db_prefix); // Detection browser @@ -134,17 +140,7 @@ require_once(DOL_DOCUMENT_ROOT ."/lib/databases/".$conf->db->type.".lib.php"); * Creation objet $langs */ require_once(DOL_DOCUMENT_ROOT ."/translate.class.php"); -$langs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - -/* - * - */ -require_once(DOL_DOCUMENT_ROOT ."/conf/conf.class.php"); -if ($character_set_client ){ - $_SESSION['charset'] = $character_set_client; -}else{ - $_SESSION['charset'] =$langs->trans("charset"); -} +$langs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); // A mettre apres lecture de la conf /* * Creation objet $db diff --git a/htdocs/translate.class.php b/htdocs/translate.class.php index 1b0faac9c9d..27738a3782f 100644 --- a/htdocs/translate.class.php +++ b/htdocs/translate.class.php @@ -40,16 +40,22 @@ class Translate { var $tab_loaded=array(); // Tableau pour signaler les fichiers deja charg�s var $tab_translate=array(); // Tableau des traductions - var $charset='ISO-8859-1'; // Codage du contenu du fichier langue + var $charset_inputfile='ISO-8859-1'; // Codage du contenu du fichier langue + var $charset_output='ISO-8859-1'; // Codage par defaut de la sortie de la m�thode trans /** * \brief Constructeur de la classe * \param dir Repertoire racine des fichiers de traduction + * \param conf Objet qui contient la config Dolibarr */ - function Translate($dir = "") + function Translate($dir = "",$conf) { - $this->charset=$_SESSION['charset']; + // Si charset output defini + if (isset($conf->character_set_client) && $conf->character_set_client) + { + $this->charset_output=$conf->character_set_client; + } $this->dir=$dir; } @@ -183,7 +189,21 @@ class Translate { if (! $this->getTransFromTab($key)) { if (isset($tab[1])) $value=trim(ereg_replace('\\\n',"\n",$tab[1])); - $this->setTransFromTab($key,$value); + + if (eregi('^CHARSET$',$key)) + { + // On est tombe sur une balise qui declare le format du fichier lu + $this->charset_inputfile=strtoupper($value); + //print 'File '.$file_lang.' has format '.$this->charset_inputfile.'<br>'; + } + else + { + // On stocke toujours dans le tableau Tab en ISO + if ($this->charset_inputfile == 'ISO-8859-1') $value=$value; + if ($this->charset_inputfile == 'UTF-8') $value=utf8_decode($value); + + $this->setTransFromTab($key,$value); + } } } } @@ -237,9 +257,7 @@ class Translate { $newstr=ereg_replace('"','__quot__',$newstr); // Cryptage en html de la chaine - $this->load("main"); - $charset=sprintf($this->tab_translate["charset"]); - $newstr=htmlentities($newstr,ENT_QUOTES,$charset); + $newstr=htmlentities($newstr,ENT_QUOTES,$this->charset_output); // On restaure les tags HTML $newstr=ereg_replace('__lt__','<',$newstr); @@ -315,7 +333,7 @@ class Translate { function lang_header() { //header("Content-Type: text/html; charset=$charset"); - $texte = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$this->charset\">\n"; + $texte = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$this->charset_output."\">\n"; return $texte; } -- GitLab