New: changes to support UTF-8 output format

This commit is contained in:
Laurent Destailleur 2008-10-17 00:24:44 +00:00
parent 29a4af0177
commit dd3d8084b8
16 changed files with 217 additions and 148 deletions

View File

@ -79,6 +79,9 @@ class CommActionRapport
global $user,$conf,$langs; global $user,$conf,$langs;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");

View File

@ -80,6 +80,9 @@ Class pdf_expedition_merou extends ModelePdfExpedition
global $user,$conf,$langs; global $user,$conf,$langs;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("companies"); $outputlangs->load("companies");
$outputlangs->load("bills"); $outputlangs->load("bills");

View File

@ -121,6 +121,9 @@ Class pdf_expedition_rouget extends ModelePdfExpedition
global $user,$conf,$langs; global $user,$conf,$langs;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("companies"); $outputlangs->load("companies");
$outputlangs->load("bills"); $outputlangs->load("bills");

View File

@ -111,6 +111,9 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("companies"); $outputlangs->load("companies");
$outputlangs->load("bills"); $outputlangs->load("bills");

View File

@ -86,9 +86,12 @@ class pdf_edison extends ModelePDFCommandes
*/ */
function write_file($com,$outputlangs='') function write_file($com,$outputlangs='')
{ {
global $user,$conf,$langs,$mysco; global $user,$conf,$langs,$mysoc;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("companies"); $outputlangs->load("companies");
$outputlangs->load("bills"); $outputlangs->load("bills");

View File

@ -109,6 +109,9 @@ class pdf_einstein extends ModelePDFCommandes
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");

View File

@ -110,6 +110,9 @@ class pdf_crabe extends ModelePDFFactures
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");

View File

@ -94,6 +94,9 @@ class pdf_huitre extends ModelePDFFactures
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("companies"); $outputlangs->load("companies");
$outputlangs->load("bills"); $outputlangs->load("bills");

View File

@ -98,6 +98,9 @@ class pdf_oursin extends ModelePDFFactures
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("companies"); $outputlangs->load("companies");
$outputlangs->load("bills"); $outputlangs->load("bills");

View File

@ -83,6 +83,9 @@ class pdf_soleil extends ModelePDFFicheinter
global $user,$langs,$conf,$mysoc; global $user,$langs,$conf,$mysoc;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");

View File

@ -109,6 +109,9 @@ class pdf_propale_azur extends ModelePDFPropales
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because FPDF expect text to be encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");

View File

@ -94,6 +94,9 @@ class pdf_propale_jaune extends ModelePDFPropales
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");

View File

@ -101,7 +101,7 @@ function unaccent_isostring($str)
} }
/** /**
* \brief Nettoie chaine de caractere de caracteres speciaux * \brief Nettoie chaine de caractere de ces caracteres speciaux
* \remarks Fonction appelee par exemple pour definir un nom de fichier depuis un identifiant chaine libre * \remarks Fonction appelee par exemple pour definir un nom de fichier depuis un identifiant chaine libre
* \param str String to clean * \param str String to clean
* \param newstr String to replace bad chars by * \param newstr String to replace bad chars by
@ -403,7 +403,7 @@ function dolibarr_time_plus_duree($time,$duration_value,$duration_unit)
/** /**
* \brief Formattage de la date en fonction de la langue $conf->langage * \brief Output date in a string format according to language $conf->language
* \param time GM Timestamps date (or 'YYYY-MM-DD' or 'YYYY-MM-DD HH:MM:SS' in server TZ) * \param time GM Timestamps date (or 'YYYY-MM-DD' or 'YYYY-MM-DD HH:MM:SS' in server TZ)
* \param format Output date format * \param format Output date format
* "%d %b %Y", * "%d %b %Y",
@ -411,11 +411,12 @@ function dolibarr_time_plus_duree($time,$duration_value,$duration_unit)
* "%d/%m/%Y %H:%M:%S", * "%d/%m/%Y %H:%M:%S",
* "day", "daytext", "dayhour", "dayhourldap", "dayhourtext" * "day", "daytext", "dayhour", "dayhourldap", "dayhourtext"
* \param to_gmt false=output string if for local server TZ users, true=output string is for GMT users * \param to_gmt false=output string if for local server TZ users, true=output string is for GMT users
* \param convtooutput true=Output string is encoded into encoding defined into $langs->charset_output.
* \return string Formated date or '' if time is null * \return string Formated date or '' if time is null
*/ */
function dolibarr_print_date($time,$format='',$to_gmt=false) function dolibarr_print_date($time,$format='',$to_gmt=false,$convtooutput=true)
{ {
global $conf; global $conf,$langs;
// Si format non defini, on prend $conf->format_date_text_short sinon %Y-%m-%d %H:%M:%S // Si format non defini, on prend $conf->format_date_text_short sinon %Y-%m-%d %H:%M:%S
if (! $format) $format=(isset($conf->format_date_text_short) ? $conf->format_date_text_short : '%Y-%m-%d %H:%M:%S'); if (! $format) $format=(isset($conf->format_date_text_short) ? $conf->format_date_text_short : '%Y-%m-%d %H:%M:%S');
@ -448,13 +449,14 @@ function dolibarr_print_date($time,$format='',$to_gmt=false)
$smin = $reg[5]; $smin = $reg[5];
$ssec = $reg[6]; $ssec = $reg[6];
return adodb_strftime($format,dolibarr_mktime($shour,$smin,$ssec,$smonth,$sday,$syear),$to_gmt); $ret=adodb_strftime($format,dolibarr_mktime($shour,$smin,$ssec,$smonth,$sday,$syear),$to_gmt);
} }
else else
{ {
// Date is a timestamps // Date is a timestamps
return adodb_strftime($format,$time,$to_gmt); $ret=adodb_strftime($format,$time,$to_gmt);
} }
return ($convtooutput?$langs->convToOuptutCharset($ret):$ret);
} }
@ -2794,11 +2796,11 @@ function make_substitutions($chaine,$substitutionarray)
} }
/* /**
* \brief Formate l'affichage de date de d<EFBFBD>but et de fin * \brief Format output for start and end date
* \param date_start date de d<EFBFBD>but * \param date_start Start date
* \param date_end date de fin * \param date_end End date
* \param format format de l'affichage * \param format Output format
* \remarks Updated by Matelli : added format paramter * \remarks Updated by Matelli : added format paramter
* \remarks See http://matelli.fr/showcases/patchs-dolibarr/update-date-range-format.html for details * \remarks See http://matelli.fr/showcases/patchs-dolibarr/update-date-range-format.html for details
*/ */
@ -2808,15 +2810,15 @@ function print_date_range($date_start,$date_end,$format = '')
if ($date_start && $date_end) if ($date_start && $date_end)
{ {
print ' ('.$langs->trans('DateFromTo',dolibarr_print_date($date_start, $format),dolibarr_print_date($date_end, $format)).')'; print ' ('.$langs->trans('DateFromTo',dolibarr_print_date($date_start, $format, false, false),dolibarr_print_date($date_end, $format, false, false)).')';
} }
if ($date_start && ! $date_end) if ($date_start && ! $date_end)
{ {
print ' ('.$langs->trans('DateFrom',dolibarr_print_date($date_start), $format).')'; print ' ('.$langs->trans('DateFrom',dolibarr_print_date($date_start, $format, false, false)).')';
} }
if (! $date_start && $date_end) if (! $date_start && $date_end)
{ {
print ' ('.$langs->trans('DateUntil',dolibarr_print_date($date_end), $format).')'; print ' ('.$langs->trans('DateUntil',dolibarr_print_date($date_end, $format, false, false)).')';
} }
} }

View File

@ -41,8 +41,13 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
/** \brief Constructor /** \brief Constructor
* \param db Database handler * \param db Database handler
*/ */
function pdf_sirocco($db=0) function pdf_sirocco($db)
{ {
global $conf,$langs,$mysoc;
$langs->load("main");
$langs->load("bills");
$this->db = $db; $this->db = $db;
$this->name = "sirocco"; $this->name = "sirocco";
$this->description = "Modele de bon de réception livraison simple"; $this->description = "Modele de bon de réception livraison simple";
@ -57,6 +62,10 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$this->marge_haute=10; $this->marge_haute=10;
$this->marge_basse=10; $this->marge_basse=10;
// Recupere emmetteur
$this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini
$this->error = ""; $this->error = "";
} }
@ -80,10 +89,16 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
{ {
global $user,$conf,$langs; global $user,$conf,$langs;
$langs->load("main"); if (! is_object($outputlangs)) $outputlangs=$langs;
$langs->load("bills"); // Force output charset to ISO, because, FPDF expect text encoded in ISO
$langs->load("products"); $outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$langs->load("deliveries");
$outputlangs->load("main");
$outputlangs->load("bills");
$outputlangs->load("products");
$outputlangs->load("deliveries");
$outputlangs->setPhpLang();
if ($conf->livraison_bon->dir_output) if ($conf->livraison_bon->dir_output)
{ {
@ -134,7 +149,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$pdf->AddPage(); $pdf->AddPage();
$pdf->SetTitle($delivery->ref); $pdf->SetTitle($delivery->ref);
$pdf->SetSubject($langs->transnoentities("DeliveryOrder")); $pdf->SetSubject($outputlangs->transnoentities("DeliveryOrder"));
$pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetCreator("Dolibarr ".DOL_VERSION);
$pdf->SetAuthor($user->fullname); $pdf->SetAuthor($user->fullname);
@ -178,11 +193,11 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
if($prodser->isservice()) if($prodser->isservice())
{ {
// Un service peur aussi etre livre // Un service peur aussi etre livre
$prefix_prodserv = $langs->transnoentities("Service")." "; $prefix_prodserv = $outputlangs->transnoentities("Service")." ";
} }
else else
{ {
$prefix_prodserv = $langs->transnoentities("Product")." "; $prefix_prodserv = $outputlangs->transnoentities("Product")." ";
} }
$libelleproduitservice=$prefix_prodserv.$prodser->ref." - ".$libelleproduitservice; $libelleproduitservice=$prefix_prodserv.$prodser->ref." - ".$libelleproduitservice;
} }
@ -190,7 +205,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
if ($delivery->lignes[$i]->date_start && $delivery->lignes[$i]->date_end) if ($delivery->lignes[$i]->date_start && $delivery->lignes[$i]->date_end)
{ {
// Affichage duree si il y en a une // Affichage duree si il y en a une
$libelleproduitservice.="<br>".dol_htmlentitiesbr("(".$langs->transnoentities("From")." ".dolibarr_print_date($delivery->lignes[$i]->date_start)." ".$langs->transnoentities("to")." ".dolibarr_print_date($delivery->lignes[$i]->date_end).")",1); $libelleproduitservice.="<br>".dol_htmlentitiesbr("(".$outputlangs->transnoentities("From")." ".dolibarr_print_date($delivery->lignes[$i]->date_start)." ".$outputlangs->transnoentities("to")." ".dolibarr_print_date($delivery->lignes[$i]->date_end).")",1);
} }
$pdf->SetXY (30, $curY ); $pdf->SetXY (30, $curY );
@ -223,16 +238,16 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
if ($nexY > 240 && $i < $nblignes - 1) if ($nexY > 240 && $i < $nblignes - 1)
{ {
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
$pdf->AddPage(); $pdf->AddPage();
$nexY = $iniY; $nexY = $iniY;
$this->_pagehead($pdf, $delivery); $this->_pagehead($pdf, $delivery, $outputlangs);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10); $pdf->SetFont('Arial','', 10);
} }
} }
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
$pdf->Output($file); $pdf->Output($file);
return 1; return 1;
@ -249,7 +264,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
* \brief Affiche la grille des lignes de propales * \brief Affiche la grille des lignes de propales
* \param pdf objet PDF * \param pdf objet PDF
*/ */
function _tableau(&$pdf, $tab_top, $tab_height, $nexY) function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
{ {
global $langs,$conf; global $langs,$conf;
$langs->load("main"); $langs->load("main");
@ -282,16 +297,17 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
} }
/* /**
* \brief Affiche en-tete propale * \brief Affiche en-tete propale
* \param pdf objet PDF * \param pdf objet PDF
* \param fac objet propale * \param fac objet propale
* \param showadress 0=non, 1=oui * \param showadress 0=non, 1=oui
*/ */
function _pagehead(&$pdf, $delivery) function _pagehead(&$pdf, $delivery, $outputlangs)
{ {
global $langs; global $langs;
$langs->load("deliveries");
$outputlangs->load("deliveries");
$pdf->SetXY(10,5); $pdf->SetXY(10,5);
if (defined("MAIN_INFO_SOCIETE_NOM")) if (defined("MAIN_INFO_SOCIETE_NOM"))
{ {
@ -333,9 +349,12 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
/* /*
* if a delivery address is used, use that, else use the client address * if a delivery address is used, use that, else use the client address
*/ */
if ($commande->adresse_livraison_id>0) { if ($commande->adresse_livraison_id>0)
{
$client->fetch_adresse_livraison($commande->adresse_livraison_id); $client->fetch_adresse_livraison($commande->adresse_livraison_id);
} else { }
else
{
$client->fetch($delivery->socid); $client->fetch($delivery->socid);
} }
$delivery->client = $client; $delivery->client = $client;
@ -350,18 +369,25 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$pdf->SetTextColor(200,0,0); $pdf->SetTextColor(200,0,0);
$pdf->SetFont('Arial','B',12); $pdf->SetFont('Arial','B',12);
$pdf->Text(11, 88, $langs->transnoentities("Date")." : " . dolibarr_print_date($delivery->date_valid,"day")); $pdf->Text(11, 88, $outputlangs->transnoentities("Date")." : " . dolibarr_print_date($delivery->date_valid,"day"));
$pdf->Text(11, 94, $langs->transnoentities("DeliveryOrder")." ".$delivery->ref); $pdf->Text(11, 94, $outputlangs->transnoentities("DeliveryOrder")." ".$delivery->ref);
$pdf->SetFont('Arial','B',9); $pdf->SetFont('Arial','B',9);
$commande = new Commande ($this->db); $commande = new Commande ($this->db);
if ($commande->fetch($delivery->commande_id) >0) { if ($commande->fetch($delivery->commande_id) >0)
$pdf->Text(11, 98, $langs->transnoentities("RefOrder")." ".$commande->ref); {
$pdf->Text(11, 98, $outputlangs->transnoentities("RefOrder")." ".$commande->ref);
}
} }
/**
* \brief Affiche le pied de page
* \param pdf objet PDF
*/
function _pagefoot(&$pdf,$outputlangs)
{
return pdf_pagefoot($pdf,$outputlangs,'DELIVERY_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur);
} }
} }
?> ?>

View File

@ -113,6 +113,9 @@ class pdf_typhon extends ModelePDFDeliveryOrder
global $user,$langs,$conf; global $user,$langs,$conf;
if (! is_object($outputlangs)) $outputlangs=$langs; if (! is_object($outputlangs)) $outputlangs=$langs;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
$outputlangs->load("main"); $outputlangs->load("main");
$outputlangs->load("dict"); $outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("companies");
@ -382,7 +385,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
} }
/* /**
* \brief Affiche en-tete bon livraison * \brief Affiche en-tete bon livraison
* \param pdf objet PDF * \param pdf objet PDF
* \param fac objet propale * \param fac objet propale

View File

@ -43,8 +43,8 @@ class Translate {
var $cache_labels=array(); // Cache for labels var $cache_labels=array(); // Cache for labels
var $charset_inputfile='ISO-8859-1'; // Codage used to encode lang files (used if CHARSET not found in file) var $charset_inputfile='ISO-8859-1'; // Codage used by default to encode lang files (used if CHARSET not found in file)
var $charset_output='UTF-8'; // Codage used by defaut for "trans" method output if $conf->character_set_client not defined (character_set_client in conf.php) var $charset_output='UTF-8'; // Codage used by default for "trans" method output if $conf->character_set_client not defined (character_set_client in conf.php)
/** /**
@ -155,10 +155,12 @@ class Translate {
/** /**
* \brief Charge en memoire le tableau de traduction pour un domaine particulier * \brief Load in a memory array, translation key-value for a particular file.
* Si le domaine est deja charge, la fonction ne fait rien * If data for file already loaded, do nothing.
* \param domain Nom du domain (fichier lang) a charger * All data in translation array are stored in ISO-8859-1 format.
* \param alt Utilise le fichier alternatif meme si fichier dans la langue est trouvee * \\TODO Store data arrays in UTF-8 format.
* \param domain File name to load (.lang file)
* \param alt Use alternate file even if file in target language is found
* \return int <0 if KO, >0 if OK * \return int <0 if KO, >0 if OK
* \remarks tab_loaded is completed with $domain key. * \remarks tab_loaded is completed with $domain key.
* Value for key is: 1:Loaded from disk, 2:Not found, 3:Loaded from cache * Value for key is: 1:Loaded from disk, 2:Not found, 3:Loaded from cache