From b0c7b640e58498b541c7729e19b21381b269d994 Mon Sep 17 00:00:00 2001 From: opensides Date: Thu, 15 Jul 2004 22:17:39 +0000 Subject: [PATCH] ajout des commentaires pour doxygen --- .../html/CMailFile_8class_8php-source.html | 260 +-- doc/dev/php/html/files.html | 8 +- .../php/html/functions_8inc_8php-source.html | 2056 ++++++++--------- doc/dev/php/html/globals.html | 62 +- doc/dev/php/html/globals_func.html | 62 +- doc/dev/php/html/graph_legend.html | 2 +- doc/dev/php/html/index.html | 2 +- doc/dev/php/html/ldap_8lib_8php-source.html | 2 +- doc/dev/php/html/ldap_8lib_8php.html | 2 +- doc/dev/php/html/mysql_8lib_8php-source.html | 516 ++--- doc/dev/php/html/mysql_8lib_8php.html | 10 +- doc/dev/php/html/price_8lib_8php-source.html | 6 +- doc/dev/php/html/price_8lib_8php.html | 6 +- doc/dev/php/html/thermometer_8php-source.html | 2 +- doc/dev/php/html/thermometer_8php.html | 2 +- .../php/html/webcal_8class_8php-source.html | 2 +- doc/dev/php/html/webcal_8class_8php.html | 2 +- doc/dev/php/latex/doxygen.sty | 4 +- doc/dev/php/latex/files.tex | 6 +- doc/dev/php/latex/mysql_8lib_8php.aux | 12 +- doc/dev/php/latex/mysql_8lib_8php.tex | 9 +- doc/dev/php/latex/price_8lib_8php.aux | 18 +- doc/dev/php/latex/price_8lib_8php.tex | 4 +- doc/dev/php/latex/refman.aux | 42 +- doc/dev/php/latex/refman.idx | 161 +- doc/dev/php/latex/refman.ilg | 6 +- doc/dev/php/latex/refman.ind | 271 ++- doc/dev/php/latex/refman.out | 24 +- doc/dev/php/latex/refman.pdf | Bin 35081 -> 142682 bytes doc/dev/php/latex/refman.tex | 10 +- doc/dev/php/latex/refman.toc | 123 +- doc/dev/php/latex/thermometer_8php.aux | 18 +- doc/dev/php/latex/webcal_8class_8php.aux | 12 +- htdocs/lib/CMailFile.class.php | 38 +- htdocs/lib/functions.inc.php | 437 ++-- htdocs/lib/mysql.lib.php | 87 +- 36 files changed, 2471 insertions(+), 1813 deletions(-) diff --git a/doc/dev/php/html/CMailFile_8class_8php-source.html b/doc/dev/php/html/CMailFile_8class_8php-source.html index 918e2496854..a2d3f73a0ba 100644 --- a/doc/dev/php/html/CMailFile_8class_8php-source.html +++ b/doc/dev/php/html/CMailFile_8class_8php-source.html @@ -5,7 +5,7 @@
Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier
-

htdocs/lib/CMailFile.class.php

00001 <?php +

htdocs/lib/CMailFile.class.php

Aller à la documentation de ce fichier.
00001 <?php 00002 /* notes from Dan Potter: 00003 Sure. I changed a few other things in here too though. One is that I let 00004 you specify what the destination filename is (i.e., what is shows up as in @@ -25,142 +25,132 @@ 00018 */ 00019 /* Note: if you don't have base64_encode on your sytem it will not work */ 00020 -00021 /* -00022 Éric Seigne <eric.seigne@ryxeo.com> 2004.01.08 -00023 - ajout de la gestion du Cc -00024 - ajout de l'expédition de plusieurs fichiers -00025 -00026 Laurent Destailleur 2004.02.10 -00027 - Correction d'un disfonctionnement suite à modif précédente sur la gestion -00028 des attachements multi-fichiers -00029 */ -00030 -00031 // simple class that encapsulates mail() with addition of mime file attachment. -00032 class CMailFile -00033 { -00034 var $subject; -00035 var $addr_to; -00036 var $addr_cc; -00037 var $text_body; -00038 var $text_encoded; -00039 var $mime_headers; -00040 var $mime_boundary = "--==================_846811060==_"; -00041 var $smtp_headers; -00042 -00043 // CMail("sujet","email_to","email_from","email_msg",tableau du path de fichiers,tableau de type mime,tableau de noms fichiers,"chaine cc") -00044 function CMailFile($subject,$to,$from,$msg,$filename_list,$mimetype_list,$mimefilename_list,$addr_cc = "") -00045 { -00046 $this->subject = $subject; -00047 $this->addr_to = $to; -00048 $this->smtp_headers = $this->write_smtpheaders($from,$addr_cc); -00049 $this->text_body = $this->write_body($msg, $filename_list); -00050 if (count($filename_list)) { -00051 $this->mime_headers = $this->write_mimeheaders($filename_list, $mimefilename_list); -00052 $this->text_encoded = $this->attach_file($filename_list,$mimetype_list,$mimefilename_list); -00053 } -00054 } -00055 -00056 function attach_file($filename_list,$mimetype_list,$mimefilename_list) -00057 { -00058 for ($i = 0; $i < count($filename_list); $i++) { -00059 $encoded = $this->encode_file($filename_list[$i]); -00060 if ($mimefilename_list[$i]) $filename_list[$i] = $mimefilename_list[$i]; -00061 $out = $out . "--" . $this->mime_boundary . "\n"; -00062 if (! $mimetype_list[$i]) { $mimetype_list[$i] = "application/octet-stream"; } -00063 $out = $out . "Content-type: " . $mimetype_list[$i] . "; name=\"$filename_list[$i]\";\n"; -00064 $out = $out . "Content-Transfer-Encoding: base64\n"; -00065 $out = $out . "Content-disposition: attachment; filename=\"$filename_list[$i]\"\n\n"; -00066 $out = $out . $encoded . "\n"; -00067 } -00068 $out = $out . "--" . $this->mime_boundary . "--" . "\n"; -00069 return $out; -00070 // added -- to notify email client attachment is done -00071 } -00072 -00073 function encode_file($sourcefile) -00074 { -00075 // print "<pre> on encode $sourcefile </pre>\n"; -00076 if (is_readable($sourcefile)) -00077 { -00078 $fd = fopen($sourcefile, "r"); -00079 $contents = fread($fd, filesize($sourcefile)); -00080 $encoded = my_chunk_split(base64_encode($contents)); -00081 fclose($fd); -00082 } -00083 return $encoded; -00084 } -00085 -00086 function sendfile() -00087 { -00088 $headers .= $this->smtp_headers . $this->mime_headers; -00089 $message = $this->text_body . $this->text_encoded; -00090 return mail($this->addr_to,$this->subject,stripslashes($message),$headers); +00039 // simple class that encapsulates mail() with addition of mime file attachment. +00040 class CMailFile +00041 { +00042 var $subject; +00043 var $addr_to; +00044 var $addr_cc; +00045 var $text_body; +00046 var $text_encoded; +00047 var $mime_headers; +00048 var $mime_boundary = "--==================_846811060==_"; +00049 var $smtp_headers; +00050 +00063 // CMail("sujet","email_to","email_from","email_msg",tableau du path de fichiers,tableau de type mime,tableau de noms fichiers,"chaine cc") +00064 function CMailFile($subject,$to,$from,$msg,$filename_list,$mimetype_list,$mimefilename_list,$addr_cc = "") +00065 { +00066 $this->subject = $subject; +00067 $this->addr_to = $to; +00068 $this->smtp_headers = $this->write_smtpheaders($from,$addr_cc); +00069 $this->text_body = $this->write_body($msg, $filename_list); +00070 if (count($filename_list)) { +00071 $this->mime_headers = $this->write_mimeheaders($filename_list, $mimefilename_list); +00072 $this->text_encoded = $this->attach_file($filename_list,$mimetype_list,$mimefilename_list); +00073 } +00074 } +00075 +00076 function attach_file($filename_list,$mimetype_list,$mimefilename_list) +00077 { +00078 for ($i = 0; $i < count($filename_list); $i++) { +00079 $encoded = $this->encode_file($filename_list[$i]); +00080 if ($mimefilename_list[$i]) $filename_list[$i] = $mimefilename_list[$i]; +00081 $out = $out . "--" . $this->mime_boundary . "\n"; +00082 if (! $mimetype_list[$i]) { $mimetype_list[$i] = "application/octet-stream"; } +00083 $out = $out . "Content-type: " . $mimetype_list[$i] . "; name=\"$filename_list[$i]\";\n"; +00084 $out = $out . "Content-Transfer-Encoding: base64\n"; +00085 $out = $out . "Content-disposition: attachment; filename=\"$filename_list[$i]\"\n\n"; +00086 $out = $out . $encoded . "\n"; +00087 } +00088 $out = $out . "--" . $this->mime_boundary . "--" . "\n"; +00089 return $out; +00090 // added -- to notify email client attachment is done 00091 } -00092 -00093 function write_body($msgtext, $filename_list) +00092 +00093 function encode_file($sourcefile) 00094 { -00095 if (count($filename_list)) -00096 { -00097 $out = "--" . $this->mime_boundary . "\n"; -00098 $out = $out . "Content-Type: text/plain; charset=\"iso8859-15\"\n\n"; -00099 // $out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n"; -00100 } -00101 $out = $out . $msgtext . "\n"; -00102 return $out; -00103 } -00104 -00105 function write_mimeheaders($filename_list, $mimefilename_list) { -00106 $out = "MIME-version: 1.0\n"; -00107 $out = $out . "Content-type: multipart/mixed; "; -00108 $out = $out . "boundary=\"$this->mime_boundary\"\n"; -00109 $out = $out . "Content-transfer-encoding: 7BIT\n"; -00110 for($i = 0; $i < count($filename_list); $i++) { -00111 if ($mimefilename_list[$i]) $filename_list[$i] = $mimefilename_list[$i]; -00112 $out = $out . "X-attachments: $filename_list[$i];\n\n"; -00113 } -00114 return $out; -00115 } -00116 -00117 function write_smtpheaders($addr_from,$addr_cc) -00118 { -00119 $out = "From: $addr_from\n"; -00120 if($addr_cc != "") -00121 $out = $out . "Cc: $addr_cc\n"; -00122 $out = $out . "Reply-To: $addr_from\n"; -00123 $out = $out . "X-Mailer: Dolibarr version " . DOL_VERSION ."\n"; -00124 $out = $out . "X-Sender: $addr_from\n"; -00125 return $out; -00126 } -00127 } -00128 -00129 // usage - mimetype example "image/gif" -00130 // $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype); -00131 // $mailfile->sendfile(); -00132 -00133 // Splits a string by RFC2045 semantics (76 chars per line, end with \r\n). -00134 // This is not in all PHP versions so I define one here manuall. -00135 function my_chunk_split($str) -00136 { -00137 $stmp = $str; -00138 $len = strlen($stmp); -00139 $out = ""; -00140 while ($len > 0) { -00141 if ($len >= 76) { -00142 $out = $out . substr($stmp, 0, 76) . "\r\n"; -00143 $stmp = substr($stmp, 76); -00144 $len = $len - 76; -00145 } -00146 else { -00147 $out = $out . $stmp . "\r\n"; -00148 $stmp = ""; $len = 0; -00149 } -00150 } -00151 return $out; -00152 } -00153 -00154 // end script -00155 ?> -

Généré le Thu Jul 15 20:50:37 2004 pour dolibarr par +00095 // print "<pre> on encode $sourcefile </pre>\n"; +00096 if (is_readable($sourcefile)) +00097 { +00098 $fd = fopen($sourcefile, "r"); +00099 $contents = fread($fd, filesize($sourcefile)); +00100 $encoded = my_chunk_split(base64_encode($contents)); +00101 fclose($fd); +00102 } +00103 return $encoded; +00104 } +00105 +00106 function sendfile() +00107 { +00108 $headers .= $this->smtp_headers . $this->mime_headers; +00109 $message = $this->text_body . $this->text_encoded; +00110 return mail($this->addr_to,$this->subject,stripslashes($message),$headers); +00111 } +00112 +00113 function write_body($msgtext, $filename_list) +00114 { +00115 if (count($filename_list)) +00116 { +00117 $out = "--" . $this->mime_boundary . "\n"; +00118 $out = $out . "Content-Type: text/plain; charset=\"iso8859-15\"\n\n"; +00119 // $out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n"; +00120 } +00121 $out = $out . $msgtext . "\n"; +00122 return $out; +00123 } +00124 +00125 function write_mimeheaders($filename_list, $mimefilename_list) { +00126 $out = "MIME-version: 1.0\n"; +00127 $out = $out . "Content-type: multipart/mixed; "; +00128 $out = $out . "boundary=\"$this->mime_boundary\"\n"; +00129 $out = $out . "Content-transfer-encoding: 7BIT\n"; +00130 for($i = 0; $i < count($filename_list); $i++) { +00131 if ($mimefilename_list[$i]) $filename_list[$i] = $mimefilename_list[$i]; +00132 $out = $out . "X-attachments: $filename_list[$i];\n\n"; +00133 } +00134 return $out; +00135 } +00136 +00137 function write_smtpheaders($addr_from,$addr_cc) +00138 { +00139 $out = "From: $addr_from\n"; +00140 if($addr_cc != "") +00141 $out = $out . "Cc: $addr_cc\n"; +00142 $out = $out . "Reply-To: $addr_from\n"; +00143 $out = $out . "X-Mailer: Dolibarr version " . DOL_VERSION ."\n"; +00144 $out = $out . "X-Sender: $addr_from\n"; +00145 return $out; +00146 } +00147 } +00148 +00149 // usage - mimetype example "image/gif" +00150 // $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype); +00151 // $mailfile->sendfile(); +00152 +00153 // Splits a string by RFC2045 semantics (76 chars per line, end with \r\n). +00154 // This is not in all PHP versions so I define one here manuall. +00155 function my_chunk_split($str) +00156 { +00157 $stmp = $str; +00158 $len = strlen($stmp); +00159 $out = ""; +00160 while ($len > 0) { +00161 if ($len >= 76) { +00162 $out = $out . substr($stmp, 0, 76) . "\r\n"; +00163 $stmp = substr($stmp, 76); +00164 $len = $len - 76; +00165 } +00166 else { +00167 $out = $out . $stmp . "\r\n"; +00168 $stmp = ""; $len = 0; +00169 } +00170 } +00171 return $out; +00172 } +00173 +00174 // end script +00175 ?> +

Généré le Fri Jul 16 00:31:06 2004 pour dolibarr par doxygen 1.3.7
diff --git a/doc/dev/php/html/files.html b/doc/dev/php/html/files.html index 8dcb03adef0..37126c8ec9a 100644 --- a/doc/dev/php/html/files.html +++ b/doc/dev/php/html/files.html @@ -6,15 +6,15 @@

dolibarr Liste des fichiers

Liste de tous les fichiers documentés avec une brève description: - - + + - +
htdocs/lib/CMailFile.class.php [code]
htdocs/lib/functions.inc.php [code]
htdocs/lib/CMailFile.class.php [code]Classe permettant d'envoyer des attachements par mail
htdocs/lib/functions.inc.php [code]Ensemble de fonctions de base de dolibarr sous forme d'include
htdocs/lib/ldap.lib.php [code]Librairie contenant les fonctions pour accèder au serveur ldap
htdocs/lib/mysql.lib.php [code]Classes permettant de gérér la database de dolibarr
htdocs/lib/mysql.lib.php [code]Classe permettant de gérér la database de dolibarr
htdocs/lib/price.lib.php [code]Librairie contenant les fonctions pour calculer un prix
htdocs/lib/thermometer.php [code]Classe permettant d'afficher un thermometre
htdocs/lib/webcal.class.php [code]Classe permettant d'acceder a la database webcalendar
-
Généré le Thu Jul 15 20:50:37 2004 pour dolibarr par +
Généré le Fri Jul 16 00:31:06 2004 pour dolibarr par doxygen 1.3.7
diff --git a/doc/dev/php/html/functions_8inc_8php-source.html b/doc/dev/php/html/functions_8inc_8php-source.html index b7bc4826934..22e4378b494 100644 --- a/doc/dev/php/html/functions_8inc_8php-source.html +++ b/doc/dev/php/html/functions_8inc_8php-source.html @@ -5,7 +5,7 @@ -

htdocs/lib/functions.inc.php

00001 <?PHP +

htdocs/lib/functions.inc.php

Aller à la documentation de ce fichier.
00001 <?PHP 00002 /* Copyright (C) 2000-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> 00003 * Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org> 00004 * Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net> @@ -30,1081 +30,1011 @@ 00023 * 00024 */ 00025 -00026 $yn[0] = "non"; -00027 $yn[1] = "oui"; -00028 -00029 Function dolibarr_syslog($message) -00030 { -00031 define_syslog_variables(); -00032 -00033 openlog("dolibarr", LOG_PID | LOG_PERROR, LOG_USER); # LOG_USER au lieu de LOG_LOCAL0 car non accepté par tous les PHP -00034 -00035 syslog(LOG_WARNING, $message); -00036 -00037 closelog(); -00038 } -00039 -00040 Function dolibarr_fiche_head($links, $active=0) -00041 { -00042 print "<!-- fiche --><div class=\"tabs\">\n"; -00043 -00044 for ($i = 0 ; $i < sizeof($links) ; $i++) -00045 { -00046 if ($links[$i][2] == 'image') -00047 { -00048 print '<a class="tabimage" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; -00049 } -00050 else -00051 { -00052 if ($i == $active) -00053 { -00054 print '<a id="active" class="tab" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; -00055 } -00056 else -00057 { -00058 print '<a class="tab" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; -00059 } -00060 } -00061 } -00062 -00063 print "</div>\n"; -00064 print "<div class=\"tabBar\">\n<br>\n"; -00065 } +00036 $yn[0] = "non"; +00037 $yn[1] = "oui"; +00038 +00044 function dolibarr_syslog($message) +00045 { +00046 define_syslog_variables(); +00047 +00048 openlog("dolibarr", LOG_PID | LOG_PERROR, LOG_USER); # LOG_USER au lieu de LOG_LOCAL0 car non accepté par tous les PHP +00049 +00050 syslog(LOG_WARNING, $message); +00051 +00052 closelog(); +00053 } +00054 +00063 function dolibarr_fiche_head($links, $active=0) +00064 { +00065 print "<!-- fiche --><div class=\"tabs\">\n"; 00066 -00067 -00068 Function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='') -00069 // Ajoute ou modifie un parametre dans la table llx_const -00070 // Retour: 0=KO, 1=OK -00071 { -00072 $sql = "REPLACE INTO llx_const SET name = '$name', value='$value', visible=$visible, type='$type', note='$note'"; -00073 -00074 if ($db->query($sql)) -00075 { -00076 return 1; -00077 } -00078 else -00079 { -00080 return 0; -00081 } -00082 } -00083 -00084 Function dolibarr_del_const($db, $name) -00085 // Supprime un parametre de la table llx_const -00086 // Retour: 0=KO, 1=OK -00087 { -00088 $sql = "DELETE FROM llx_const WHERE name='$name'"; -00089 -00090 if ($db->query($sql)) -00091 { -00092 return 1; -00093 } -00094 else -00095 { -00096 return 0; -00097 } -00098 } -00099 -00100 Function dolibarr_print_ca($ca) -00101 { -00102 // Permet d'avoir une fonction commune du formatage des nombres -00103 if ($ca > 1000) -00104 { -00105 $cat = round(($ca / 1000),2); -00106 $cat = "$cat Keuros"; -00107 } -00108 else -00109 { -00110 $cat = round($ca,2); -00111 $cat = "$cat euros"; -00112 } -00113 -00114 if ($ca > 1000000) -00115 { -00116 $cat = round(($ca / 1000000),2); -00117 $cat = "$cat Meuros"; -00118 } -00119 -00120 return $cat; -00121 } -00122 -00123 Function dolibarr_print_date($time,$format="%d %b %Y") -00124 { -00125 // Permet d'avoir une fonction commune du formatage d'affichage des date -00126 return strftime($format,$time); -00127 } -00128 -00129 Function dolibarr_print_object_info($object) -00130 { -00131 print "Créé par : " . $object->user_creation->fullname . '<br>'; -00132 print "Date de création : " . strftime("%A %d %B %Y %H:%M:%S",$object->date_creation) . '<br>'; -00133 print "Modifié par : " . $object->user_modification->fullname . '<br>'; -00134 print "Date de modification : " . strftime("%A %d %B %Y %H:%M:%S",$object->date_modification) . '<br>'; -00135 } -00136 -00137 Function dolibarr_print_phone($phone) -00138 { -00139 // Permet d'avoir une fonction commune du formatage d'affichage des tel/fax -00140 if (strlen(trim($phone)) == 10) -00141 { -00142 return substr($phone,0,2)." ".substr($phone,2,2)." ".substr($phone,4,2)." ".substr($phone,6,2)." ".substr($phone,8,2); -00143 } -00144 else -00145 { -00146 return $phone; -00147 } -00148 } -00149 -00150 Function img_file($alt = "Voir") -00151 { -00152 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/file.png" border="0" alt="'.$alt.'">'; -00153 } -00154 -00155 Function img_file_new($alt = "Voir") -00156 { -00157 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/filenew.png" border="0" alt="'.$alt.'">'; -00158 } -00159 -00160 -00161 Function img_pdf($alt = "Voir") -00162 { -00163 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/pdf.png" border="0" alt="'.$alt.'">'; +00067 for ($i = 0 ; $i < sizeof($links) ; $i++) +00068 { +00069 if ($links[$i][2] == 'image') +00070 { +00071 print '<a class="tabimage" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; +00072 } +00073 else +00074 { +00075 if ($i == $active) +00076 { +00077 print '<a id="active" class="tab" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; +00078 } +00079 else +00080 { +00081 print '<a class="tab" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; +00082 } +00083 } +00084 } +00085 +00086 print "</div>\n"; +00087 print "<div class=\"tabBar\">\n<br>\n"; +00088 } +00089 +00103 function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='') +00104 { +00105 $sql = "REPLACE INTO llx_const SET name = '$name', value='$value', visible=$visible, type='$type', note='$note'"; +00106 +00107 if ($db->query($sql)) +00108 { +00109 return 1; +00110 } +00111 else +00112 { +00113 return 0; +00114 } +00115 } +00116 +00124 function dolibarr_del_const($db, $name) +00125 { +00126 $sql = "DELETE FROM llx_const WHERE name='$name'"; +00127 +00128 if ($db->query($sql)) +00129 { +00130 return 1; +00131 } +00132 else +00133 { +00134 return 0; +00135 } +00136 } +00137 +00144 function dolibarr_print_ca($ca) +00145 { +00146 if ($ca > 1000) +00147 { +00148 $cat = round(($ca / 1000),2); +00149 $cat = "$cat Keuros"; +00150 } +00151 else +00152 { +00153 $cat = round($ca,2); +00154 $cat = "$cat euros"; +00155 } +00156 +00157 if ($ca > 1000000) +00158 { +00159 $cat = round(($ca / 1000000),2); +00160 $cat = "$cat Meuros"; +00161 } +00162 +00163 return $cat; 00164 } 00165 -00166 Function img_warning($alt = "Voir") -00167 { -00168 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/warning.png" border="0" alt="'.$alt.'">'; -00169 } -00170 -00171 Function img_delete($alt = "Supprimer") -00172 { -00173 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/delete.png" border="0" alt="'.$alt.'" title="Supprimer">'; -00174 } -00175 -00176 Function img_info($alt = "Informations") -00177 { -00178 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/info.png" border="0" alt="'.$alt.'" title="Informations">'; -00179 } -00180 -00181 -00182 Function img_edit($alt = "Modifier") -00183 { -00184 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/edit.png" border="0" alt="'.$alt.'" title="Modifier">'; -00185 } -00186 -00187 Function img_phone_in($alt = "Modifier") -00188 { -00189 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/call.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; +00173 function dolibarr_print_date($time,$format="%d %b %Y") +00174 { +00175 return strftime($format,$time); +00176 } +00177 +00178 +00184 function dolibarr_print_object_info($object) +00185 { +00186 print "Créé par : " . $object->user_creation->fullname . '<br>'; +00187 print "Date de création : " . strftime("%A %d %B %Y %H:%M:%S",$object->date_creation) . '<br>'; +00188 print "Modifié par : " . $object->user_modification->fullname . '<br>'; +00189 print "Date de modification : " . strftime("%A %d %B %Y %H:%M:%S",$object->date_modification) . '<br>'; 00190 } 00191 -00192 Function img_phone_out($alt = "Modifier") -00193 { -00194 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/call_out.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; -00195 } -00196 -00197 -00198 Function img_alerte($alt = "Alerte") -00199 { -00200 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/alerte.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; -00201 } -00202 -00203 -00204 Function img_next($alt = "Suivant") -00205 { -00206 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/next.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; -00207 } -00208 -00209 Function img_previous($alt = "Précédent") -00210 { -00211 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/previous.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; -00212 } -00213 -00214 -00215 function loginFunction() -00216 { -00220 print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; -00221 print "\n<html><head><title>Dolibarr Authentification</title>"; -00222 print '<style type="text/css"> -00223 body { -00224 font-size:14px; -00225 font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; -00226 background-color: #cac8c0; -00227 margin-left: 30%; -00228 margin-right: 30%; -00229 margin-top: 10%; -00230 margin-bottom: 1%; -00231 } -00232 div.main { -00233 background-color: white; -00234 text-align: left; -00235 border: solid black 1px; -00236 } -00237 div.main-inside { -00238 background-color: white; -00239 padding-left: 20px; -00240 padding-right: 50px; -00241 text-align: center; -00242 margin-bottom: 50px; -00243 margin-top: 30px; -00244 } -00245 div.footer { -00246 background-color: #dcdff4; -00247 font-size: 10px; -00248 border-top: solid black 1px; -00249 padding-left: 5px; -00250 text-align: center; -00251 } -00252 div.header { -00253 background-color: #dcdff4; -00254 border-bottom: solid black 1px; -00255 padding-left: 5px; -00256 text-align: center; -00257 } -00258 div.footer p { -00259 margin: 0px; -00260 } -00261 a:link,a:visited,a:active { -00262 text-decoration:none; -00263 color:blue; -00264 } -00265 a:hover { -00266 text-decoration:underline; -00267 color:blue; -00268 } -00269 </style> -00270 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> -00271 <script language="javascript"> -00272 function donnefocus(){ -00273 document.identification.username.focus(); -00274 } -00275 </script> -00276 </head> -00277 <body onload="donnefocus();"> -00278 <div class="main"> -00279 <div class="header">'; -00280 print 'Dolibarr '.DOL_VERSION; -00281 print ' -00282 </div> -00283 <div class="main-inside"> -00284 '; -00285 -00286 echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '" name="identification">'; -00287 print '<table><tr>'; -00288 print '<td>Login : </td><td><input type="text" name="username"></td></tr>';; -00289 print '<tr><td>Password : </td><td><input type="password" name="password"></td></tr>'; -00290 -00291 echo '</table> -00292 <p align="center"><input value="Login" type="submit"> -00293 </form>'; -00294 } -00295 /* -00296 * -00297 * -00298 */ -00299 function accessforbidden() -00300 { -00301 llxHeader(); -00302 print "Accés interdit"; -00303 llxFooter(); -00304 exit(0); -00305 } -00306 -00307 function doliMoveFileUpload($src_file, $dest_file) -00308 { -00309 $file_name = $dest_file; -00310 -00311 if (substr($file_name, strlen($file_name) -3 , 3) == 'php') -00312 { -00313 $file_name = $dest_file . ".txt"; -00314 } -00315 -00316 return move_uploaded_file($src_file, $file_name); -00317 } -00318 -00319 function dolibarr_user_page_param($db, &$user) -00320 { -00321 foreach ($GLOBALS["_GET"] as $key=>$value) -00322 { -00323 if ($key == "sortfield") -00324 { -00325 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; -00326 $sql .= " SET fk_user =".$user->id; -00327 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; -00328 $sql .= " ,param='sortfield'"; -00329 $sql .= " ,value='".urlencode($value)."'"; -00330 -00331 $db->query($sql); -00332 $user->page_param["sortfield"] = $value; -00333 } -00334 -00335 // print $key . "=".$value . "<br>"; -00336 -00337 if ($key == "sortorder") -00338 { -00339 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; -00340 $sql .= " SET fk_user =".$user->id; -00341 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; -00342 $sql .= " ,param='sortorder'"; -00343 $sql .= " ,value='".urlencode($value)."'"; -00344 -00345 $db->query($sql); -00346 $user->page_param["sortorder"] = $value; -00347 } -00348 if ($key == "begin") -00349 { -00350 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; -00351 $sql .= " SET fk_user =".$user->id; -00352 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; -00353 $sql .= " ,param='begin'"; -00354 $sql .= " ,value='".$value."'"; -00355 -00356 $db->query($sql); -00357 $user->page_param["begin"] = $value; -00358 } -00359 if ($key == "page") -00360 { -00361 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; -00362 $sql .= " SET fk_user =".$user->id; -00363 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; -00364 $sql .= " ,param='page'"; -00365 $sql .= " ,value='".$value."'"; -00366 -00367 $db->query($sql); -00368 $user->page_param["page"] = $value; -00369 } -00370 } -00371 } -00372 -00373 function transcoS2L($zonein,$devise) -00374 { -00375 // Open source offert par <A HREF="mailto:alainfloch@free.fr?subject=chif2let">alainfloch@free.fr</A> 28/10/2001, sans garantie. -00376 // début de la fonction de transcodification de somme en toutes lettres -00377 -00378 /* $zonein = "123,56"; -00379 * $devise = "E"; // préciser F si francs , sinon ce sera de l'euro -00380 * $r = transcoS2L($zonein,$devise); // appeler la fonction -00381 * echo "résultat vaut $r<br>"; -00382 * $zonelettresM = strtoupper($r); // si vous voulez la même zone mais tout en majuscules -00383 * echo "résultat en Majuscules vaut $zonelettresM<br>"; -00384 * $zonein = "1,01"; -00385 * $r = transcoS2L($zonein,$devise); -00386 * echo "résultat vaut $r<br>"; -00387 */ +00199 function dolibarr_print_phone($phone) +00200 { +00201 if (strlen(trim($phone)) == 10) +00202 { +00203 return substr($phone,0,2)." ".substr($phone,2,2)." ".substr($phone,4,2)." ".substr($phone,6,2)." ".substr($phone,8,2); +00204 } +00205 else +00206 { +00207 return $phone; +00208 } +00209 } +00210 +00211 function img_file($alt = "Voir") +00212 { +00213 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/file.png" border="0" alt="'.$alt.'">'; +00214 } +00215 +00216 function img_file_new($alt = "Voir") +00217 { +00218 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/filenew.png" border="0" alt="'.$alt.'">'; +00219 } +00220 +00221 +00222 function img_pdf($alt = "Voir") +00223 { +00224 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/pdf.png" border="0" alt="'.$alt.'">'; +00225 } +00226 +00227 function img_warning($alt = "Voir") +00228 { +00229 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/warning.png" border="0" alt="'.$alt.'">'; +00230 } +00231 +00232 function img_delete($alt = "Supprimer") +00233 { +00234 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/delete.png" border="0" alt="'.$alt.'" title="Supprimer">'; +00235 } +00236 +00237 function img_info($alt = "Informations") +00238 { +00239 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/info.png" border="0" alt="'.$alt.'" title="Informations">'; +00240 } +00241 +00242 +00243 function img_edit($alt = "Modifier") +00244 { +00245 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/edit.png" border="0" alt="'.$alt.'" title="Modifier">'; +00246 } +00247 +00248 function img_phone_in($alt = "Modifier") +00249 { +00250 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/call.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; +00251 } +00252 +00253 function img_phone_out($alt = "Modifier") +00254 { +00255 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/call_out.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; +00256 } +00257 +00258 +00259 function img_alerte($alt = "Alerte") +00260 { +00261 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/alerte.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; +00262 } +00263 +00264 +00265 function img_next($alt = "Suivant") +00266 { +00267 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/next.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; +00268 } +00269 +00270 function img_previous($alt = "Précédent") +00271 { +00272 return '<img src="'.DOL_URL_ROOT.'/theme/'.MAIN_THEME.'/img/previous.png" border="0" alt="'.$alt.'" title="'.$alt.'">'; +00273 } +00274 +00281 function loginfunction() +00282 { +00283 print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; +00284 print "\n<html><head><title>Dolibarr Authentification</title>"; +00285 print '<style type="text/css"> +00286 body { +00287 font-size:14px; +00288 font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; +00289 background-color: #cac8c0; +00290 margin-left: 30%; +00291 margin-right: 30%; +00292 margin-top: 10%; +00293 margin-bottom: 1%; +00294 } +00295 div.main { +00296 background-color: white; +00297 text-align: left; +00298 border: solid black 1px; +00299 } +00300 div.main-inside { +00301 background-color: white; +00302 padding-left: 20px; +00303 padding-right: 50px; +00304 text-align: center; +00305 margin-bottom: 50px; +00306 margin-top: 30px; +00307 } +00308 div.footer { +00309 background-color: #dcdff4; +00310 font-size: 10px; +00311 border-top: solid black 1px; +00312 padding-left: 5px; +00313 text-align: center; +00314 } +00315 div.header { +00316 background-color: #dcdff4; +00317 border-bottom: solid black 1px; +00318 padding-left: 5px; +00319 text-align: center; +00320 } +00321 div.footer p { +00322 margin: 0px; +00323 } +00324 a:link,a:visited,a:active { +00325 text-decoration:none; +00326 color:blue; +00327 } +00328 a:hover { +00329 text-decoration:underline; +00330 color:blue; +00331 } +00332 </style> +00333 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> +00334 <script language="javascript"> +00335 function donnefocus(){ +00336 document.identification.username.focus(); +00337 } +00338 </script> +00339 </head> +00340 <body onload="donnefocus();"> +00341 <div class="main"> +00342 <div class="header">'; +00343 print 'Dolibarr '.DOL_VERSION; +00344 print ' +00345 </div> +00346 <div class="main-inside"> +00347 '; +00348 +00349 echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '" name="identification">'; +00350 print '<table><tr>'; +00351 print '<td>Login : </td><td><input type="text" name="username"></td></tr>';; +00352 print '<tr><td>Password : </td><td><input type="password" name="password"></td></tr>'; +00353 +00354 echo '</table> +00355 <p align="center"><input value="Login" type="submit"> +00356 </form>'; +00357 } +00358 +00363 function accessforbidden() +00364 { +00365 llxHeader(); +00366 print "Accés interdit"; +00367 llxFooter(); +00368 exit(0); +00369 } +00370 +00377 function doliMoveFileUpload($src_file, $dest_file) +00378 { +00379 $file_name = $dest_file; +00380 +00381 if (substr($file_name, strlen($file_name) -3 , 3) == 'php') +00382 { +00383 $file_name = $dest_file . ".txt"; +00384 } +00385 +00386 return move_uploaded_file($src_file, $file_name); +00387 } 00388 00389 -00390 if ($devise == "F") -00391 { -00392 $unite_singulier = " franc "; -00393 $unite_pluriel = " francs "; -00394 $cent_singulier = " centime"; -00395 } -00396 else -00397 { -00398 $unite_singulier = " euro "; -00399 $unite_pluriel = " euros "; -00400 $cent_singulier = " centime"; -00401 } -00402 -00403 $arr1_99 = array("zéro","un","deux","trois", -00404 "quatre","cinq","six","sept", -00405 "huit","neuf","dix","onze","douze", -00406 "treize","quatorze","quinze","seize", -00407 "dix-sept","dix-huit","dix-neuf","vingt "); -00408 -00409 $arr1_99[30] = "trente "; -00410 $arr1_99[40] = "quarante "; -00411 $arr1_99[50] = "cinquante "; -00412 $arr1_99[60] = "soixante "; -00413 $arr1_99[70] = "soixante-dix "; -00414 $arr1_99[71] = "soixante et onze"; -00415 $arr1_99[80] = "quatre-vingts "; -00416 $i = 22; -00417 while ($i < 63) {// initialise la table -00418 $arr1_99[$i - 1] = $arr1_99[$i - 2]." et un"; -00419 $j = 0; -00420 while ($j < 8) { -00421 $k = $i + $j; -00422 $arr1_99[$k] = $arr1_99[$i - 2].$arr1_99[$j + 2]; -00423 $j++; -00424 } -00425 $i = $i + 10; -00426 } // fin initialise la table -00427 -00428 $i = 12; -00429 while ($i < 20) {// initialise la table (suite) -00430 $j = 60 + $i; -00431 $arr1_99[$j] = "soixante-".$arr1_99[$i]; -00432 $i++; -00433 } // fin initialise la table (suite) -00434 -00435 $i = 1; -00436 while ($i < 20) {// initialise la table (fin) -00437 $j = 80 + $i; -00438 $arr1_99[$j] = "quatre-vingt-".$arr1_99[$i]; -00439 $i++; -00440 } // fin initialise la table (fin) -00441 // echo "Pour une valeur en entrée = $zonein<br>"; //pour ceux qui ne croient que ce qu'ils voient ! -00442 // quelques petits controles s'imposent !! -00443 $valid = "[a-zA-Z\&\é\"\'\(\-\è\_\ç\à\)\=\;\:\!\*\$\^<>]"; -00444 if (ereg($valid,$zonein)) -00445 { -00446 $r = "<b>la chaîne ".$zonein." n'est pas valide</b>"; -00447 return($r); -00448 } -00449 $zone = explode(" ",$zonein); // supprimer les blancs séparateurs -00450 $zonein = implode("",$zone); // reconcatène la zone input -00451 $zone = explode(".",$zonein); // supprimer les points séparateurs -00452 $zonein = implode("",$zone); // reconcatène la zone input, ça c'est fort ! merci PHP -00453 $virg = strpos($zonein,",",1); // à la poursuite de la virgule -00454 $i = strlen($zonein); // et de la longueur de la zone input -00455 if ($virg == 0) { // ya pas de virgule -00456 if ($i > 7) -00457 { -00458 $r = "<b>la chaîne ".$zonein." est trop longue (maxi = 9 millions)</b>"; -00459 return($r); -00460 } -00461 $deb = 7 - $i; -00462 $zoneanaly = substr($zonechiffres,0,$deb).$zonein.",00"; -00463 } -00464 else -00465 { //ya une virgule -00466 $ti = explode(",",$zonein); // mettre de côté ce qu'il y a devant la virgule -00467 $i = strlen($ti[0]); // en controler la longueur -00468 $zonechiffres = "0000000,00"; -00469 if ($i > 7) -00470 { -00471 $r = "<b>la chaîne ".$zonein." est trop longue (maxi = 9 millions,00)</b>"; -00472 return($r); -00473 } -00474 $deb = 7 - $i; -00475 $zoneanaly = substr($zonechiffres,0,$deb).$zonein; -00476 } -00477 $M= substr($zoneanaly,0,1); -00478 if ($M != 0) -00479 { // qui veut gagner des millions -00480 $r = $arr1_99[$M]." million"; -00481 if ($M ==1) $r = $r." "; -00482 else $r = $r."s "; -00483 if (substr($zoneanaly,1,6)==0) -00484 { -00485 if ($devise == 'F') $r = $r." de "; -00486 else $r = $r."d'"; -00487 } -00488 } -00489 $CM= substr($zoneanaly,1,1); -00490 if ($CM == 1) -00491 { // qui veut gagner des centaines de mille -00492 $r = $r." cent "; -00493 } -00494 else -00495 { // ya des centaines de mille -00496 if ($CM > 1) -00497 { -00498 $r = $r. $arr1_99[$CM]." cent "; -00499 } -00500 } // fin du else ya des centaines de mille -00501 $MM= substr($zoneanaly,2,2); -00502 if (substr($zoneanaly,2,1)==0){ $MM = substr($zoneanaly,3,1);} // enlever le zéro des milliers cause indexation -00503 if ($MM ==0 && $CM > 0) -00504 { -00505 $r = $r."mille "; -00506 } -00507 if ($MM != 0) -00508 { -00509 if ($MM == 80) -00510 { -00511 $r = $r."quatre-vingt mille "; -00512 } -00513 else -00514 { -00515 if ($MM > 1 ) -00516 { -00517 $r = $r.$arr1_99[$MM]." mille "; -00518 } -00519 else -00520 { -00521 if ($CM == 0) $r = $r." mille "; -00522 else +00390 function dolibarr_user_page_param($db, &$user) +00391 { +00392 foreach ($GLOBALS["_GET"] as $key=>$value) +00393 { +00394 if ($key == "sortfield") +00395 { +00396 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; +00397 $sql .= " SET fk_user =".$user->id; +00398 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; +00399 $sql .= " ,param='sortfield'"; +00400 $sql .= " ,value='".urlencode($value)."'"; +00401 +00402 $db->query($sql); +00403 $user->page_param["sortfield"] = $value; +00404 } +00405 +00406 // print $key . "=".$value . "<br>"; +00407 +00408 if ($key == "sortorder") +00409 { +00410 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; +00411 $sql .= " SET fk_user =".$user->id; +00412 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; +00413 $sql .= " ,param='sortorder'"; +00414 $sql .= " ,value='".urlencode($value)."'"; +00415 +00416 $db->query($sql); +00417 $user->page_param["sortorder"] = $value; +00418 } +00419 if ($key == "begin") +00420 { +00421 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; +00422 $sql .= " SET fk_user =".$user->id; +00423 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; +00424 $sql .= " ,param='begin'"; +00425 $sql .= " ,value='".$value."'"; +00426 +00427 $db->query($sql); +00428 $user->page_param["begin"] = $value; +00429 } +00430 if ($key == "page") +00431 { +00432 $sql = "REPLACE INTO ".MAIN_DB_PREFIX."user_param "; +00433 $sql .= " SET fk_user =".$user->id; +00434 $sql .= " ,page='".$GLOBALS["SCRIPT_URL"] . "'"; +00435 $sql .= " ,param='page'"; +00436 $sql .= " ,value='".$value."'"; +00437 +00438 $db->query($sql); +00439 $user->page_param["page"] = $value; +00440 } +00441 } +00442 } +00443 +00451 function transcoS2L($zonein,$devise) +00452 { +00453 // Open source offert par <A HREF="mailto:alainfloch@free.fr?subject=chif2let">alainfloch@free.fr</A> 28/10/2001, sans garantie. +00454 // début de la fonction de transcodification de somme en toutes lettres +00455 +00456 /* $zonein = "123,56"; +00457 * $devise = "E"; // préciser F si francs , sinon ce sera de l'euro +00458 * $r = transcoS2L($zonein,$devise); // appeler la fonction +00459 * echo "résultat vaut $r<br>"; +00460 * $zonelettresM = strtoupper($r); // si vous voulez la même zone mais tout en majuscules +00461 * echo "résultat en Majuscules vaut $zonelettresM<br>"; +00462 * $zonein = "1,01"; +00463 * $r = transcoS2L($zonein,$devise); +00464 * echo "résultat vaut $r<br>"; +00465 */ +00466 +00467 +00468 if ($devise == "F") +00469 { +00470 $unite_singulier = " franc "; +00471 $unite_pluriel = " francs "; +00472 $cent_singulier = " centime"; +00473 } +00474 else +00475 { +00476 $unite_singulier = " euro "; +00477 $unite_pluriel = " euros "; +00478 $cent_singulier = " centime"; +00479 } +00480 +00481 $arr1_99 = array("zéro","un","deux","trois", +00482 "quatre","cinq","six","sept", +00483 "huit","neuf","dix","onze","douze", +00484 "treize","quatorze","quinze","seize", +00485 "dix-sept","dix-huit","dix-neuf","vingt "); +00486 +00487 $arr1_99[30] = "trente "; +00488 $arr1_99[40] = "quarante "; +00489 $arr1_99[50] = "cinquante "; +00490 $arr1_99[60] = "soixante "; +00491 $arr1_99[70] = "soixante-dix "; +00492 $arr1_99[71] = "soixante et onze"; +00493 $arr1_99[80] = "quatre-vingts "; +00494 $i = 22; +00495 while ($i < 63) {// initialise la table +00496 $arr1_99[$i - 1] = $arr1_99[$i - 2]." et un"; +00497 $j = 0; +00498 while ($j < 8) { +00499 $k = $i + $j; +00500 $arr1_99[$k] = $arr1_99[$i - 2].$arr1_99[$j + 2]; +00501 $j++; +00502 } +00503 $i = $i + 10; +00504 } // fin initialise la table +00505 +00506 $i = 12; +00507 while ($i < 20) {// initialise la table (suite) +00508 $j = 60 + $i; +00509 $arr1_99[$j] = "soixante-".$arr1_99[$i]; +00510 $i++; +00511 } // fin initialise la table (suite) +00512 +00513 $i = 1; +00514 while ($i < 20) {// initialise la table (fin) +00515 $j = 80 + $i; +00516 $arr1_99[$j] = "quatre-vingt-".$arr1_99[$i]; +00517 $i++; +00518 } // fin initialise la table (fin) +00519 // echo "Pour une valeur en entrée = $zonein<br>"; //pour ceux qui ne croient que ce qu'ils voient ! +00520 // quelques petits controles s'imposent !! +00521 $valid = "[a-zA-Z\&\é\"\'\(\-\è\_\ç\à\)\=\;\:\!\*\$\^<>]"; +00522 if (ereg($valid,$zonein)) 00523 { -00524 $r = $r.$arr1_99[$MM]." mille "; -00525 } -00526 } -00527 } -00528 } -00529 $C2= substr($zoneanaly,5,2); -00530 if (substr($zoneanaly,5,1)==0){ $C2 = substr($zoneanaly,6,1);} // enlever le zéro des centaines cause indexation -00531 $C1= substr($zoneanaly,4,1); -00532 if ($C2 ==0 && $C1 > 1) -00533 { -00534 $r = $r.$arr1_99[$C1]." cents "; -00535 } -00536 else -00537 { -00538 if ($C1 == 1) $r = $r." cent "; -00539 else -00540 { -00541 if ($C1 > 1) $r = $r.$arr1_99[$C1]." cent "; -00542 } -00543 } -00544 if ($C2 != 0) -00545 { -00546 $r = $r.$arr1_99[$C2]; -00547 } -00548 if ($virg !=0) -00549 { -00550 if ($ti[0] > 1) $r = $r. $unite_pluriel; else $r = "un ".$unite_singulier; -00551 } -00552 else -00553 { -00554 if ($zonein > 1) $r = $r.$unite_pluriel; else $r = "un ".$unite_singulier; -00555 } -00556 $UN= substr($zoneanaly,8,2); -00557 if ($UN != "00") -00558 { -00559 $cts = $UN; -00560 if (substr($UN,0,1)==0){ $cts = substr($UN,1,1);} // enlever le zéro des centimes cause indexation -00561 $r = $r." et ". $arr1_99[$cts].$cent_singulier; -00562 if ($UN > 1) $r =$r."s"; // accorde au pluriel -00563 } -00564 $r1 = ltrim($r); // enleve quelques blancs possibles en début de zone -00565 $r = ucfirst($r1); // met le 1er caractère en Majuscule, c'est + zoli -00566 return($r); // retourne le résultat -00567 } // fin fonction transcoS2L -00568 -00569 -00570 -00571 function print_liste_field_titre($name, $file, $field, $begin="", $options="") -00572 { -00573 global $conf; -00574 -00575 print $name."&nbsp;"; -00576 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=asc&amp;begin='.$begin.$options.'">'; -00577 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" border="0" alt="A-Z"></a>'; -00578 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=desc&amp;begin='.$begin.$options.'">'; -00579 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1uparrow.png" border="0" alt="Z-A"></a>'; -00580 } -00581 -00582 function print_liste_field_titre_new($name, $file, $field, $begin="", $options="", $td="", $sortfield="") -00583 { -00584 /* -00585 * idem à la fonction ci dessus mais ajoute des fonctionnalités -00586 * -00587 * -00588 */ -00589 global $conf; -00590 if ($sortfield == $field) -00591 { -00592 print '<td class="menusel" '. $td.'>'; -00593 } -00594 else -00595 { -00596 print '<td '. $td.'>'; -00597 } -00598 print $name."&nbsp;"; -00599 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=asc&amp;begin='.$begin.$options.'">'; -00600 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" border="0" alt="A-Z"></a>'; -00601 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=desc&amp;begin='.$begin.$options.'">'; -00602 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1uparrow.png" border="0" alt="Z-A"></a>'; -00603 print "</td>"; -00604 } -00605 -00606 /* -00607 * -00608 */ -00609 function print_titre($titre) -00610 { -00611 print '<div class="titre">'.$titre.'</div>'; -00612 } -00613 /* -00614 * Idem que print_titre mais offre en plus possibilité de mettre un text à droite -00615 */ -00616 function print_fiche_titre($titre, $mesg='') -00617 { -00618 print "\n".'<table width="100%" border="0" cellpadding="3" cellspacing="0">'; -00619 print '<tr><td><div class="titre" valign="middle">'.$titre.'</div></td>'; -00620 if (strlen($mesg)) -00621 { -00622 print '<td align="right" valign="middle"><b>'.$mesg.'</b></td>'; -00623 } -00624 print '</tr></table>'."\n"; -00625 } -00626 -00627 /* -00628 * -00629 * -00630 */ -00631 function dol_delete_file($file) -00632 { -00633 return unlink($file); -00634 } -00635 -00636 /* -00637 * -00638 * -00639 */ -00640 function block_access() -00641 { -00642 llxHeader(); -00643 print "Accés refusé"; -00644 llxFooter(); -00645 } +00524 $r = "<b>la chaîne ".$zonein." n'est pas valide</b>"; +00525 return($r); +00526 } +00527 $zone = explode(" ",$zonein); // supprimer les blancs séparateurs +00528 $zonein = implode("",$zone); // reconcatène la zone input +00529 $zone = explode(".",$zonein); // supprimer les points séparateurs +00530 $zonein = implode("",$zone); // reconcatène la zone input, ça c'est fort ! merci PHP +00531 $virg = strpos($zonein,",",1); // à la poursuite de la virgule +00532 $i = strlen($zonein); // et de la longueur de la zone input +00533 if ($virg == 0) { // ya pas de virgule +00534 if ($i > 7) +00535 { +00536 $r = "<b>la chaîne ".$zonein." est trop longue (maxi = 9 millions)</b>"; +00537 return($r); +00538 } +00539 $deb = 7 - $i; +00540 $zoneanaly = substr($zonechiffres,0,$deb).$zonein.",00"; +00541 } +00542 else +00543 { //ya une virgule +00544 $ti = explode(",",$zonein); // mettre de côté ce qu'il y a devant la virgule +00545 $i = strlen($ti[0]); // en controler la longueur +00546 $zonechiffres = "0000000,00"; +00547 if ($i > 7) +00548 { +00549 $r = "<b>la chaîne ".$zonein." est trop longue (maxi = 9 millions,00)</b>"; +00550 return($r); +00551 } +00552 $deb = 7 - $i; +00553 $zoneanaly = substr($zonechiffres,0,$deb).$zonein; +00554 } +00555 $M= substr($zoneanaly,0,1); +00556 if ($M != 0) +00557 { // qui veut gagner des millions +00558 $r = $arr1_99[$M]." million"; +00559 if ($M ==1) $r = $r." "; +00560 else $r = $r."s "; +00561 if (substr($zoneanaly,1,6)==0) +00562 { +00563 if ($devise == 'F') $r = $r." de "; +00564 else $r = $r."d'"; +00565 } +00566 } +00567 $CM= substr($zoneanaly,1,1); +00568 if ($CM == 1) +00569 { // qui veut gagner des centaines de mille +00570 $r = $r." cent "; +00571 } +00572 else +00573 { // ya des centaines de mille +00574 if ($CM > 1) +00575 { +00576 $r = $r. $arr1_99[$CM]." cent "; +00577 } +00578 } // fin du else ya des centaines de mille +00579 $MM= substr($zoneanaly,2,2); +00580 if (substr($zoneanaly,2,1)==0){ $MM = substr($zoneanaly,3,1);} // enlever le zéro des milliers cause indexation +00581 if ($MM ==0 && $CM > 0) +00582 { +00583 $r = $r."mille "; +00584 } +00585 if ($MM != 0) +00586 { +00587 if ($MM == 80) +00588 { +00589 $r = $r."quatre-vingt mille "; +00590 } +00591 else +00592 { +00593 if ($MM > 1 ) +00594 { +00595 $r = $r.$arr1_99[$MM]." mille "; +00596 } +00597 else +00598 { +00599 if ($CM == 0) $r = $r." mille "; +00600 else +00601 { +00602 $r = $r.$arr1_99[$MM]." mille "; +00603 } +00604 } +00605 } +00606 } +00607 $C2= substr($zoneanaly,5,2); +00608 if (substr($zoneanaly,5,1)==0){ $C2 = substr($zoneanaly,6,1);} // enlever le zéro des centaines cause indexation +00609 $C1= substr($zoneanaly,4,1); +00610 if ($C2 ==0 && $C1 > 1) +00611 { +00612 $r = $r.$arr1_99[$C1]." cents "; +00613 } +00614 else +00615 { +00616 if ($C1 == 1) $r = $r." cent "; +00617 else +00618 { +00619 if ($C1 > 1) $r = $r.$arr1_99[$C1]." cent "; +00620 } +00621 } +00622 if ($C2 != 0) +00623 { +00624 $r = $r.$arr1_99[$C2]; +00625 } +00626 if ($virg !=0) +00627 { +00628 if ($ti[0] > 1) $r = $r. $unite_pluriel; else $r = "un ".$unite_singulier; +00629 } +00630 else +00631 { +00632 if ($zonein > 1) $r = $r.$unite_pluriel; else $r = "un ".$unite_singulier; +00633 } +00634 $UN= substr($zoneanaly,8,2); +00635 if ($UN != "00") +00636 { +00637 $cts = $UN; +00638 if (substr($UN,0,1)==0){ $cts = substr($UN,1,1);} // enlever le zéro des centimes cause indexation +00639 $r = $r." et ". $arr1_99[$cts].$cent_singulier; +00640 if ($UN > 1) $r =$r."s"; // accorde au pluriel +00641 } +00642 $r1 = ltrim($r); // enleve quelques blancs possibles en début de zone +00643 $r = ucfirst($r1); // met le 1er caractère en Majuscule, c'est + zoli +00644 return($r); // retourne le résultat +00645 } // fin fonction transcoS2L 00646 -00647 /* -00648 * -00649 * -00650 */ -00651 -00652 function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $form='', $num=-1) -00653 { -00654 global $conf; -00655 -00656 if ($num > $conf->liste_limit or $num == -1) -00657 { -00658 $nextpage = 1; -00659 } -00660 else -00661 { -00662 $nextpage = 0; -00663 } -00664 -00665 print '<table width="100%" border="0" cellpadding="3" cellspacing="0">'; -00666 -00667 if ($page > 0) -00668 { -00669 print '<tr><td><div class="titre">'.$titre.' - page '.($page+1).'</div></td>'; -00670 } -00671 else -00672 { -00673 print '<tr><td><div class="titre">'.$titre.'</div></td>'; -00674 } -00675 -00676 if ($form) -00677 { -00678 print '<td align="left">'.$form.'</td>'; -00679 } -00680 -00681 print '<td align="right">'; -00682 -00683 if (strlen($sortfield)) -00684 { -00685 $options .= "&amp;sortfield=$sortfield"; -00686 } -00687 -00688 if (strlen($sortorder)) -00689 { -00690 $options .= "&amp;sortorder=$sortorder"; -00691 } -00692 -00693 // affichage des fleches de navigation -00694 -00695 print_fleche_navigation($page,$file,$options, $nextpage); -00696 -00697 print '</td></tr></table>'; -00698 } -00699 -00700 /* -00701 * fonction servant a afficher les fleches de navigation dans les -00702 * pages de liste -00703 */ -00704 function print_fleche_navigation($page,$file,$options='', $nextpage) -00705 { -00706 global $conf; -00707 if ($page > 0) -00708 { -00709 print '<a href="'.$file.'?page='.($page-1).$options.'"><img alt="Page précédente" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1leftarrow.png" border="0"></a>'; -00710 } -00711 -00712 if ($nextpage > 0) -00713 { -00714 print '<a href="'.$file.'?page='.($page+1).$options.'"><img alt="Page suivante" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1rightarrow.png" border="0"></a>'; -00715 } -00716 } -00717 /* -00718 * -00719 * -00720 */ -00721 function print_oui_non($value) -00722 { -00723 if ($value) +00658 function print_liste_field_titre($name, $file, $field, $begin="", $options="") +00659 { +00660 global $conf; +00661 +00662 print $name."&nbsp;"; +00663 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=asc&amp;begin='.$begin.$options.'">'; +00664 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" border="0" alt="A-Z"></a>'; +00665 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=desc&amp;begin='.$begin.$options.'">'; +00666 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1uparrow.png" border="0" alt="Z-A"></a>'; +00667 } +00668 +00684 function print_liste_field_titre_new($name, $file, $field, $begin="", $options="", $td="", $sortfield="") +00685 { +00686 global $conf; +00687 if ($sortfield == $field) +00688 { +00689 print '<td class="menusel" '. $td.'>'; +00690 } +00691 else +00692 { +00693 print '<td '. $td.'>'; +00694 } +00695 print $name."&nbsp;"; +00696 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=asc&amp;begin='.$begin.$options.'">'; +00697 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" border="0" alt="A-Z"></a>'; +00698 print '<a href="'.$file.'?sortfield='.$field.'&amp;sortorder=desc&amp;begin='.$begin.$options.'">'; +00699 print '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1uparrow.png" border="0" alt="Z-A"></a>'; +00700 print "</td>"; +00701 } +00702 +00708 function print_titre($titre) +00709 { +00710 print '<div class="titre">'.$titre.'</div>'; +00711 } +00712 +00719 function print_fiche_titre($titre, $mesg='') +00720 { +00721 print "\n".'<table width="100%" border="0" cellpadding="3" cellspacing="0">'; +00722 print '<tr><td><div class="titre" valign="middle">'.$titre.'</div></td>'; +00723 if (strlen($mesg)) 00724 { -00725 print '<option value="0">non'; -00726 print '<option value="1" selected>oui'; -00727 } -00728 else -00729 { -00730 print '<option value="0" selected>non'; -00731 print '<option value="1">oui'; -00732 } -00733 } -00734 /* -00735 * -00736 * -00737 */ -00738 function print_date_select($set_time='') -00739 { -00740 if (! $set_time) -00741 { -00742 $set_time = time(); -00743 } -00744 -00745 $strmonth[1] = "Janvier"; -00746 $strmonth[2] = "F&eacute;vrier"; -00747 $strmonth[3] = "Mars"; -00748 $strmonth[4] = "Avril"; -00749 $strmonth[5] = "Mai"; -00750 $strmonth[6] = "Juin"; -00751 $strmonth[7] = "Juillet"; -00752 $strmonth[8] = "Ao&ucirc;t"; -00753 $strmonth[9] = "Septembre"; -00754 $strmonth[10] = "Octobre"; -00755 $strmonth[11] = "Novembre"; -00756 $strmonth[12] = "D&eacute;cembre"; -00757 -00758 $smonth = 1; $endmonth = 12; -00759 $sday = 1; $endday = 31; -00760 -00761 $cday = date("d", $set_time); -00762 $cmonth = date("n", $set_time); -00763 $syear = date("Y", $set_time); -00764 -00765 print "<select name=\"reday\">"; -00766 -00767 for ($day = 1 ; $day <= $endday ; $day++) -00768 { -00769 if ($day == $cday) -00770 { -00771 print "<option value=\"$day\" selected>$day"; -00772 } -00773 else -00774 { -00775 print "<option value=\"$day\">$day"; -00776 } -00777 } -00778 -00779 print "</select>"; -00780 -00781 -00782 print "<select name=\"remonth\">"; -00783 for ($month = $smonth ; $month <= $endmonth ; $month++) -00784 { -00785 if ($month == $cmonth) -00786 { -00787 print "<option value=\"$month\" selected>" . $strmonth[$month]; -00788 } -00789 else -00790 { -00791 print "<option value=\"$month\">" . $strmonth[$month]; -00792 } -00793 } -00794 print "</select>"; -00795 -00796 print "<select name=\"reyear\">"; -00797 -00798 for ($year = $syear - 2; $year < $syear + 5 ; $year++) -00799 { -00800 if ($year == $syear) -00801 { -00802 print "<option value=\"$year\" SELECTED>$year"; -00803 } -00804 else -00805 { -00806 print "<option value=\"$year\">$year"; -00807 } -00808 } -00809 print "</select>\n"; -00810 -00811 } -00812 /* -00813 * -00814 * -00815 */ -00816 function print_heure_select($prefix,$begin=1,$end=23) { -00817 -00818 print '<select name="'.$prefix.'hour">'; -00819 for ($hour = $begin ; $hour <= $end ; $hour++) { -00820 print "<option value=\"$hour\">$hour"; -00821 } -00822 print "</select>&nbsp;H&nbsp;"; -00823 print '<select name="'.$prefix.'min">'; -00824 for ($min = 0 ; $min < 60 ; $min=$min+5) { -00825 if ($min < 10) { -00826 $min = "0" . $min; -00827 } -00828 print "<option value=\"$min\">$min"; -00829 } -00830 print "</select>\n"; -00831 } -00832 /* -00833 * -00834 * -00835 */ -00836 function print_duree_select($prefix) -00837 { -00838 print '<select name="'.$prefix.'hour">'; -00839 print "<option value=\"0\">0"; -00840 print "<option value=\"1\" SELECTED>1"; -00841 -00842 for ($hour = 2 ; $hour < 13 ; $hour++) -00843 { -00844 print "<option value=\"$hour\">$hour"; -00845 } -00846 print "</select>&nbsp;H&nbsp;"; -00847 print '<select name="'.$prefix.'min">'; -00848 for ($min = 0 ; $min < 55 ; $min=$min+5) -00849 { -00850 print "<option value=\"$min\">$min"; -00851 } -00852 print "</select>\n"; -00853 } -00854 -00855 /* -00856 * Return an amount with format "9 999.99" -00857 * Fonction utilisée dans les pdf et les pages -00858 * html -00859 */ -00860 function price($amount, $html=0) -00861 { -00862 if ($html) -00863 { -00864 -00865 $dec='.'; $thousand=' '; -00866 return ereg_replace(' ','&nbsp;',number_format($amount, 2, $dec, $thousand)); -00867 -00868 } -00869 else -00870 { -00871 return number_format($amount, 2, '.', ' '); -00872 } -00873 -00874 } -00875 -00876 function francs($euros) -00877 { -00878 return price($euros * 6.55957); -00879 } +00725 print '<td align="right" valign="middle"><b>'.$mesg.'</b></td>'; +00726 } +00727 print '</tr></table>'."\n"; +00728 } +00729 +00735 function dol_delete_file($file) +00736 { +00737 return unlink($file); +00738 } +00739 +00744 function block_access() +00745 { +00746 llxHeader(); +00747 print "Accés refusé"; +00748 llxFooter(); +00749 } +00750 +00751 /* +00752 * +00753 * +00754 */ +00755 +00756 function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $form='', $num=-1) +00757 { +00758 global $conf; +00759 +00760 if ($num > $conf->liste_limit or $num == -1) +00761 { +00762 $nextpage = 1; +00763 } +00764 else +00765 { +00766 $nextpage = 0; +00767 } +00768 +00769 print '<table width="100%" border="0" cellpadding="3" cellspacing="0">'; +00770 +00771 if ($page > 0) +00772 { +00773 print '<tr><td><div class="titre">'.$titre.' - page '.($page+1).'</div></td>'; +00774 } +00775 else +00776 { +00777 print '<tr><td><div class="titre">'.$titre.'</div></td>'; +00778 } +00779 +00780 if ($form) +00781 { +00782 print '<td align="left">'.$form.'</td>'; +00783 } +00784 +00785 print '<td align="right">'; +00786 +00787 if (strlen($sortfield)) +00788 { +00789 $options .= "&amp;sortfield=$sortfield"; +00790 } +00791 +00792 if (strlen($sortorder)) +00793 { +00794 $options .= "&amp;sortorder=$sortorder"; +00795 } +00796 +00797 // affichage des fleches de navigation +00798 +00799 print_fleche_navigation($page,$file,$options, $nextpage); +00800 +00801 print '</td></tr></table>'; +00802 } +00803 +00812 function print_fleche_navigation($page,$file,$options='', $nextpage) +00813 { +00814 global $conf; +00815 if ($page > 0) +00816 { +00817 print '<a href="'.$file.'?page='.($page-1).$options.'"><img alt="Page précédente" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1leftarrow.png" border="0"></a>'; +00818 } +00819 +00820 if ($nextpage > 0) +00821 { +00822 print '<a href="'.$file.'?page='.($page+1).$options.'"><img alt="Page suivante" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1rightarrow.png" border="0"></a>'; +00823 } +00824 } +00825 +00832 function print_oui_non($value) +00833 { +00834 if ($value) +00835 { +00836 print '<option value="0">non'; +00837 print '<option value="1" selected>oui'; +00838 } +00839 else +00840 { +00841 print '<option value="0" selected>non'; +00842 print '<option value="1">oui'; +00843 } +00844 } +00845 +00852 function print_date_select($set_time='') +00853 { +00854 if (! $set_time) +00855 { +00856 $set_time = time(); +00857 } +00858 +00859 $strmonth[1] = "Janvier"; +00860 $strmonth[2] = "F&eacute;vrier"; +00861 $strmonth[3] = "Mars"; +00862 $strmonth[4] = "Avril"; +00863 $strmonth[5] = "Mai"; +00864 $strmonth[6] = "Juin"; +00865 $strmonth[7] = "Juillet"; +00866 $strmonth[8] = "Ao&ucirc;t"; +00867 $strmonth[9] = "Septembre"; +00868 $strmonth[10] = "Octobre"; +00869 $strmonth[11] = "Novembre"; +00870 $strmonth[12] = "D&eacute;cembre"; +00871 +00872 $smonth = 1; $endmonth = 12; +00873 $sday = 1; $endday = 31; +00874 +00875 $cday = date("d", $set_time); +00876 $cmonth = date("n", $set_time); +00877 $syear = date("Y", $set_time); +00878 +00879 print "<select name=\"reday\">"; 00880 -00881 function tva($euros, $taux=19.6) -00882 { -00883 $taux = $taux / 100 ; -00884 -00885 return sprintf("%01.2f",($euros * $taux)); -00886 } -00887 function inctva($euros, $taux=1.196) -00888 { -00889 return sprintf("%01.2f",($euros * $taux)); -00890 } -00891 +00881 for ($day = 1 ; $day <= $endday ; $day++) +00882 { +00883 if ($day == $cday) +00884 { +00885 print "<option value=\"$day\" selected>$day"; +00886 } +00887 else +00888 { +00889 print "<option value=\"$day\">$day"; +00890 } +00891 } 00892 -00893 /* -00894 * -00895 * -00896 */ -00897 function stat_print($basename,$bc1,$bc2,$ftc, $jour) { -00898 -00899 $db = pg_Connect("","","","","$basename"); -00900 if (!$db) { -00901 echo "Pas de connexion a la base\n"; -00902 exit ; -00903 } -00904 -00905 $offset = $jour * 9; -00906 -00907 $sql="SELECT s.date, s.nb, l.libelle FROM stat_base as s, stat_cat as l WHERE s.cat = l.id ORDER by s.date DESC, s.cat ASC LIMIT 9 OFFSET $offset"; -00908 -00909 $result = $db->query($sql); -00910 if (!$result) { -00911 print "Erreur SELECT<br><h1>$sql</h1><br>"; -00912 return 1; -00913 } -00914 -00915 print "<table border=1 cellspacing=0 cellpadding=2>"; -00916 print "<tr><td><font color=\"white\">base <b>$basename</b></font></td>"; -00917 print "<td><font color=\"white\">libelle</font></td>"; -00918 print "</tr>"; -00919 -00920 $num = $db->num_rows(); -00921 $i = 0; -00922 -00923 $tag = 1; -00924 while ( $i < $num) { -00925 $obj = $db->fetch_object( $i); -00926 -00927 $tag = !$tag; -00928 -00929 print "<TR><TD>$obj->date</TD><TD>$obj->libelle</TD>\n"; -00930 print "<TD align=\"center\">$obj->nb</TD></TR>\n"; -00931 $i++; -00932 } -00933 print "</TABLE>"; -00934 $db->free(); -00935 -00936 $db->close(); -00937 -00938 } -00939 -00940 function tab_count($basename,$bc1,$bc2,$ftc) { -00941 -00942 $db = pg_Connect("","","","","$basename"); -00943 if (!$db) { -00944 echo "Pas de connexion a la base\n"; -00945 exit ; -00946 } -00947 -00948 $sql="SELECT count(*) AS nbcv from candidat WHERE active=1"; -00949 $result = $db->query($sql); -00950 if (!$result) { -00951 print "Erreur SELECT<br><h1>$sql</h1><br>"; -00952 return 1; -00953 } -00954 print "<table border=0 bgcolor=black cellspacing=0 cellpadding=0><tr><td>"; -00955 -00956 print "<table border=0 cellspacing=1 cellpadding=1>"; -00957 print "<tr><td><font color=\"white\">base <b>$basename</b></font></td>"; -00958 print "<td><font color=\"white\">libelle</font></td>"; -00959 print "</tr>"; -00960 $nbcv = $db->result( $i, "nbcv"); -00961 -00962 print "<tr $bc1><td><b>$ftc Nombre de CV</font></b></td>\n"; -00963 print "<td align=\"center\">$ftc $nbcv</td>\n"; -00964 print "</tr>\n"; -00965 $db->free(); -00966 -00967 $sql="SELECT count(*) AS nbcv from offre WHERE active=1"; -00968 -00969 $result = $db->query($sql); -00970 if (!$result) { -00971 print "Erreur SELECT<br><h1>$sql</h1><br>"; -00972 } -00973 $nbcv = $db->result( $i, "nbcv"); -00974 -00975 print "<tr $bc2><td><b>$ftc Nombre d'offre</font></b></td>"; -00976 print "<td align=\"center\">$ftc $nbcv</td>"; -00977 print "</tr>"; -00978 -00979 $db->free(); -00980 -00981 -00982 $sql="SELECT count(*) AS nbcv from candidat WHERE active=0"; -00983 -00984 $result = $db->query($sql); -00985 if (!$result) { -00986 print "Erreur SELECT<br><h1>$sql</h1><br>"; -00987 } -00988 -00989 $nbcv = $db->result( $i, "nbcv"); -00990 -00991 print "<tr $bc1><td><b>$ftc Nombre de CV inactifs</font></b></td>\n"; -00992 print "<td align=\"center\">$ftc $nbcv</td>"; -00993 print "</tr>"; -00994 -00995 $db->free(); -00996 -00997 -00998 $sql="SELECT count(*) AS nbcv from offre WHERE active=0"; -00999 -01000 $result = $db->query($sql); -01001 if (!$result) { -01002 print "Erreur SELECT<br><h1>$sql</h1><br>"; -01003 } -01004 -01005 $nbcv = $db->result( $i, "nbcv"); -01006 -01007 print "<tr $bc2><td><b>$ftc Nombre d'offres inactives</font></b></td>\n"; -01008 print "<td align=\"center\">$ftc $nbcv</td>\n"; -01009 print "</tr>\n"; -01010 -01011 $db->free(); -01012 -01013 $sql="SELECT count(*) AS nbsoc from logsoc"; -01014 -01015 $result = $db->query($sql); -01016 if (!$result) { -01017 print "Erreur SELECT<br><h1>$sql</h1><br>"; -01018 } -01019 -01020 $nbsoc = $db->result( $i, "nbsoc"); -01021 -01022 print "<tr $bc1><td><b>$ftc Nombre de logins societes</font></b></td>\n"; -01023 print "<td align=\"center\">$ftc $nbsoc</td>"; -01024 print "</tr>"; -01025 -01026 print "</td></tr></table></td></tr></table>"; -01027 -01028 $db->close(); -01029 -01030 } -01031 -01032 /* -01033 * logfile : permet de logguer dans un fichier -01034 * cette fonction ne fonctionenra que si et seulement si le fichier de -01035 * la constante globale MAIN_DEBUG existe et vaut 1 -01036 */ -01037 function logfile($str,$log="/var/log/dolibarr/dolibarr.log") -01038 { -01039 if (defined("MAIN_DEBUG") && MAIN_DEBUG ==1) -01040 { -01041 if (!file_exists($log)) -01042 { -01043 if (!$file=fopen($log,"w")) -01044 { -01045 return 0; -01046 } -01047 } -01048 else -01049 { -01050 if (!$file=fopen($log,"a+")) -01051 { -01052 return 0; -01053 } -01054 } -01055 $logentry=date("[d/M/Y:H:i:s] ").$str."\n"; -01056 if(!fwrite($file,$logentry)) { -01057 fclose($file); -01058 return 0; -01059 } -01060 fclose($file); -01061 return 1; -01062 } -01063 } -01064 -01065 /* -01066 * Fonctions reprise sur spip -01067 * http://www.uzine.net/spip/ -01068 */ -01069 function creer_pass_aleatoire($longueur = 8, $sel = "") { -01070 $seed = (double) (microtime() + 1) * time(); -01071 srand($seed); -01072 -01073 for ($i = 0; $i < $longueur; $i++) { -01074 if (!$s) { -01075 if (!$s) $s = rand(); -01076 $s = substr(md5(uniqid($s).$sel), 0, 16); -01077 } -01078 $r = unpack("Cr", pack("H2", $s.$s)); -01079 $x = $r['r'] & 63; -01080 if ($x < 10) $x = chr($x + 48); -01081 else if ($x < 36) $x = chr($x + 55); -01082 else if ($x < 62) $x = chr($x + 61); -01083 else if ($x == 63) $x = '/'; -01084 else $x = '.'; -01085 $pass .= $x; -01086 $s = substr($s, 2); -01087 } -01088 return $pass; -01089 } +00893 print "</select>"; +00894 +00895 +00896 print "<select name=\"remonth\">"; +00897 for ($month = $smonth ; $month <= $endmonth ; $month++) +00898 { +00899 if ($month == $cmonth) +00900 { +00901 print "<option value=\"$month\" selected>" . $strmonth[$month]; +00902 } +00903 else +00904 { +00905 print "<option value=\"$month\">" . $strmonth[$month]; +00906 } +00907 } +00908 print "</select>"; +00909 +00910 print "<select name=\"reyear\">"; +00911 +00912 for ($year = $syear - 2; $year < $syear + 5 ; $year++) +00913 { +00914 if ($year == $syear) +00915 { +00916 print "<option value=\"$year\" SELECTED>$year"; +00917 } +00918 else +00919 { +00920 print "<option value=\"$year\">$year"; +00921 } +00922 } +00923 print "</select>\n"; +00924 +00925 } +00935 function print_heure_select($prefix,$begin=1,$end=23) { +00936 +00937 print '<select name="'.$prefix.'hour">'; +00938 for ($hour = $begin ; $hour <= $end ; $hour++) { +00939 print "<option value=\"$hour\">$hour"; +00940 } +00941 print "</select>&nbsp;H&nbsp;"; +00942 print '<select name="'.$prefix.'min">'; +00943 for ($min = 0 ; $min < 60 ; $min=$min+5) { +00944 if ($min < 10) { +00945 $min = "0" . $min; +00946 } +00947 print "<option value=\"$min\">$min"; +00948 } +00949 print "</select>\n"; +00950 } +00951 +00957 function print_duree_select($prefix) +00958 { +00959 print '<select name="'.$prefix.'hour">'; +00960 print "<option value=\"0\">0"; +00961 print "<option value=\"1\" SELECTED>1"; +00962 +00963 for ($hour = 2 ; $hour < 13 ; $hour++) +00964 { +00965 print "<option value=\"$hour\">$hour"; +00966 } +00967 print "</select>&nbsp;H&nbsp;"; +00968 print '<select name="'.$prefix.'min">'; +00969 for ($min = 0 ; $min < 55 ; $min=$min+5) +00970 { +00971 print "<option value=\"$min\">$min"; +00972 } +00973 print "</select>\n"; +00974 } +00975 +00985 function price($amount, $html=0) +00986 { +00987 if ($html) +00988 { +00989 +00990 $dec='.'; $thousand=' '; +00991 return ereg_replace(' ','&nbsp;',number_format($amount, 2, $dec, $thousand)); +00992 +00993 } +00994 else +00995 { +00996 return number_format($amount, 2, '.', ' '); +00997 } +00998 +00999 } +01000 +01007 function francs($euros) +01008 { +01009 return price($euros * 6.55957); +01010 } +01011 +01018 function tva($euros, $taux=19.6) +01019 { +01020 $taux = $taux / 100 ; +01021 +01022 return sprintf("%01.2f",($euros * $taux)); +01023 } +01024 +01031 function inctva($euros, $taux=1.196) +01032 { +01033 return sprintf("%01.2f",($euros * $taux)); +01034 } +01035 +01046 function stat_print($basename,$bc1,$bc2,$ftc, $jour) { +01047 +01048 $db = pg_Connect("","","","","$basename"); +01049 if (!$db) { +01050 echo "Pas de connexion a la base\n"; +01051 exit ; +01052 } +01053 +01054 $offset = $jour * 9; +01055 +01056 $sql="SELECT s.date, s.nb, l.libelle FROM stat_base as s, stat_cat as l WHERE s.cat = l.id ORDER by s.date DESC, s.cat ASC LIMIT 9 OFFSET $offset"; +01057 +01058 $result = $db->query($sql); +01059 if (!$result) { +01060 print "Erreur SELECT<br><h1>$sql</h1><br>"; +01061 return 1; +01062 } +01063 +01064 print "<table border=1 cellspacing=0 cellpadding=2>"; +01065 print "<tr><td><font color=\"white\">base <b>$basename</b></font></td>"; +01066 print "<td><font color=\"white\">libelle</font></td>"; +01067 print "</tr>"; +01068 +01069 $num = $db->num_rows(); +01070 $i = 0; +01071 +01072 $tag = 1; +01073 while ( $i < $num) { +01074 $obj = $db->fetch_object( $i); +01075 +01076 $tag = !$tag; +01077 +01078 print "<TR><TD>$obj->date</TD><TD>$obj->libelle</TD>\n"; +01079 print "<TD align=\"center\">$obj->nb</TD></TR>\n"; +01080 $i++; +01081 } +01082 print "</TABLE>"; +01083 $db->free(); +01084 +01085 $db->close(); +01086 +01087 } +01088 +01089 function tab_count($basename,$bc1,$bc2,$ftc) { 01090 -01091 /* -01092 * Fonctions reprise sur spip -01093 * http://www.uzine.net/spip/ -01094 */ -01095 -01096 function initialiser_sel() { -01097 global $htsalt; -01098 -01099 $htsalt = '$1$'.creer_pass_aleatoire(); -01100 } -01101 -01102 ?> -

Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +01091 $db = pg_Connect("","","","","$basename"); +01092 if (!$db) { +01093 echo "Pas de connexion a la base\n"; +01094 exit ; +01095 } +01096 +01097 $sql="SELECT count(*) AS nbcv from candidat WHERE active=1"; +01098 $result = $db->query($sql); +01099 if (!$result) { +01100 print "Erreur SELECT<br><h1>$sql</h1><br>"; +01101 return 1; +01102 } +01103 print "<table border=0 bgcolor=black cellspacing=0 cellpadding=0><tr><td>"; +01104 +01105 print "<table border=0 cellspacing=1 cellpadding=1>"; +01106 print "<tr><td><font color=\"white\">base <b>$basename</b></font></td>"; +01107 print "<td><font color=\"white\">libelle</font></td>"; +01108 print "</tr>"; +01109 $nbcv = $db->result( $i, "nbcv"); +01110 +01111 print "<tr $bc1><td><b>$ftc Nombre de CV</font></b></td>\n"; +01112 print "<td align=\"center\">$ftc $nbcv</td>\n"; +01113 print "</tr>\n"; +01114 $db->free(); +01115 +01116 $sql="SELECT count(*) AS nbcv from offre WHERE active=1"; +01117 +01118 $result = $db->query($sql); +01119 if (!$result) { +01120 print "Erreur SELECT<br><h1>$sql</h1><br>"; +01121 } +01122 $nbcv = $db->result( $i, "nbcv"); +01123 +01124 print "<tr $bc2><td><b>$ftc Nombre d'offre</font></b></td>"; +01125 print "<td align=\"center\">$ftc $nbcv</td>"; +01126 print "</tr>"; +01127 +01128 $db->free(); +01129 +01130 +01131 $sql="SELECT count(*) AS nbcv from candidat WHERE active=0"; +01132 +01133 $result = $db->query($sql); +01134 if (!$result) { +01135 print "Erreur SELECT<br><h1>$sql</h1><br>"; +01136 } +01137 +01138 $nbcv = $db->result( $i, "nbcv"); +01139 +01140 print "<tr $bc1><td><b>$ftc Nombre de CV inactifs</font></b></td>\n"; +01141 print "<td align=\"center\">$ftc $nbcv</td>"; +01142 print "</tr>"; +01143 +01144 $db->free(); +01145 +01146 +01147 $sql="SELECT count(*) AS nbcv from offre WHERE active=0"; +01148 +01149 $result = $db->query($sql); +01150 if (!$result) { +01151 print "Erreur SELECT<br><h1>$sql</h1><br>"; +01152 } +01153 +01154 $nbcv = $db->result( $i, "nbcv"); +01155 +01156 print "<tr $bc2><td><b>$ftc Nombre d'offres inactives</font></b></td>\n"; +01157 print "<td align=\"center\">$ftc $nbcv</td>\n"; +01158 print "</tr>\n"; +01159 +01160 $db->free(); +01161 +01162 $sql="SELECT count(*) AS nbsoc from logsoc"; +01163 +01164 $result = $db->query($sql); +01165 if (!$result) { +01166 print "Erreur SELECT<br><h1>$sql</h1><br>"; +01167 } +01168 +01169 $nbsoc = $db->result( $i, "nbsoc"); +01170 +01171 print "<tr $bc1><td><b>$ftc Nombre de logins societes</font></b></td>\n"; +01172 print "<td align=\"center\">$ftc $nbsoc</td>"; +01173 print "</tr>"; +01174 +01175 print "</td></tr></table></td></tr></table>"; +01176 +01177 $db->close(); +01178 +01179 } +01180 +01188 function logfile($str,$log="/var/log/dolibarr/dolibarr.log") +01189 { +01190 if (defined("MAIN_DEBUG") && MAIN_DEBUG ==1) +01191 { +01192 if (!file_exists($log)) +01193 { +01194 if (!$file=fopen($log,"w")) +01195 { +01196 return 0; +01197 } +01198 } +01199 else +01200 { +01201 if (!$file=fopen($log,"a+")) +01202 { +01203 return 0; +01204 } +01205 } +01206 $logentry=date("[d/M/Y:H:i:s] ").$str."\n"; +01207 if(!fwrite($file,$logentry)) { +01208 fclose($file); +01209 return 0; +01210 } +01211 fclose($file); +01212 return 1; +01213 } +01214 } +01215 +01224 function creer_pass_aleatoire($longueur = 8, $sel = "") { +01225 $seed = (double) (microtime() + 1) * time(); +01226 srand($seed); +01227 +01228 for ($i = 0; $i < $longueur; $i++) { +01229 if (!$s) { +01230 if (!$s) $s = rand(); +01231 $s = substr(md5(uniqid($s).$sel), 0, 16); +01232 } +01233 $r = unpack("Cr", pack("H2", $s.$s)); +01234 $x = $r['r'] & 63; +01235 if ($x < 10) $x = chr($x + 48); +01236 else if ($x < 36) $x = chr($x + 55); +01237 else if ($x < 62) $x = chr($x + 61); +01238 else if ($x == 63) $x = '/'; +01239 else $x = '.'; +01240 $pass .= $x; +01241 $s = substr($s, 2); +01242 } +01243 return $pass; +01244 } +01245 +01251 function initialiser_sel() { +01252 global $htsalt; +01253 +01254 $htsalt = '$1$'.creer_pass_aleatoire(); +01255 } +01256 +01257 ?> +

Généré le Fri Jul 16 00:31:06 2004 pour dolibarr par doxygen 1.3.7
diff --git a/doc/dev/php/html/globals.html b/doc/dev/php/html/globals.html index 3f40c8e0e63..7bee961ca49 100644 --- a/doc/dev/php/html/globals.html +++ b/doc/dev/php/html/globals.html @@ -6,19 +6,73 @@ +
a | b | c | d | f | i | l | m | p | s | t

-Liste de tous les membres de fichier documentés avec liens vers la documentation:

    + +

    +Liste de tous les membres de fichier documentés avec liens vers la documentation:

    - a -

    +

    - b -

    +

    - c -

    +

    - d -

    +

    - f -

    +

    - i -

    +

    - l -

    +

    - m -

    -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +

    - p -

    +

    - s -

    +

    - t -

    +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/globals_func.html b/doc/dev/php/html/globals_func.html index bfac8900441..aa868cddb86 100644 --- a/doc/dev/php/html/globals_func.html +++ b/doc/dev/php/html/globals_func.html @@ -6,19 +6,73 @@ +
    a | b | c | d | f | i | l | m | p | s | t

    -

    -
    Généré le Thu Jul 15 20:50:39 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:08 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/index.html b/doc/dev/php/html/index.html index 459fed87146..619170f0a95 100644 --- a/doc/dev/php/html/index.html +++ b/doc/dev/php/html/index.html @@ -7,7 +7,7 @@

    dolibarr Documentation

    -

    1.2.0


    Généré le Thu Jul 15 20:50:37 2004 pour dolibarr par +

    1.2.0


    Généré le Fri Jul 16 00:31:06 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/ldap_8lib_8php-source.html b/doc/dev/php/html/ldap_8lib_8php-source.html index 56394b8f501..42328dbc7b9 100644 --- a/doc/dev/php/html/ldap_8lib_8php-source.html +++ b/doc/dev/php/html/ldap_8lib_8php-source.html @@ -83,7 +83,7 @@ 00124 } 00125 00126 ?> -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/ldap_8lib_8php.html b/doc/dev/php/html/ldap_8lib_8php.html index 8ec698c43bf..ada5b430bd7 100644 --- a/doc/dev/php/html/ldap_8lib_8php.html +++ b/doc/dev/php/html/ldap_8lib_8php.html @@ -273,7 +273,7 @@ unbind du serveur ldap. Définition à la ligne 70 du fichier ldap.lib.php. -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/mysql_8lib_8php-source.html b/doc/dev/php/html/mysql_8lib_8php-source.html index 6295874824a..f1054a463da 100644 --- a/doc/dev/php/html/mysql_8lib_8php-source.html +++ b/doc/dev/php/html/mysql_8lib_8php-source.html @@ -29,269 +29,269 @@ 00022 * 00023 */ 00024 -00035 class DoliDb { -00036 var $db, $results, $ok, $connected, $database_selected; -00037 -00038 // Constantes pour code erreurs -00039 var $ERROR_DUPLICATE=1062; -00040 var $ERROR_TABLEEXISTS=1050; -00041 -00051 Function DoliDb($type = 'mysql', $host = '', $user = '', $pass = '', $name = '') -00052 -00053 // Se connecte au serveur et éventuellement à une base (si spécifié) -00054 // Renvoie 1 en cas de succès, 0 sinon -00055 -00056 { -00057 global $conf; +00041 class DoliDb { +00042 var $db, $results, $ok, $connected, $database_selected; +00043 +00044 // Constantes pour code erreurs +00045 var $ERROR_DUPLICATE=1062; +00046 var $ERROR_TABLEEXISTS=1050; +00047 +00057 function DoliDb($type = 'mysql', $host = '', $user = '', $pass = '', $name = '') 00058 -00059 if ($host == '') -00060 { -00061 $host = $conf->db->host; -00062 } -00063 -00064 if ($user == '') -00065 { -00066 $user = $conf->db->user; -00067 } -00068 -00069 if ($pass == '') -00070 { -00071 $pass = $conf->db->pass; -00072 } -00073 -00074 if ($name == '') -00075 { -00076 $name = $conf->db->name; -00077 } -00078 -00079 //print "Name DB: $host,$user,$pass,$name<br>"; -00080 -00081 // Essai connexion serveur -00082 -00083 $this->db = $this->connect($host, $user, $pass); +00059 // Se connecte au serveur et éventuellement à une base (si spécifié) +00060 // Renvoie 1 en cas de succès, 0 sinon +00061 +00062 { +00063 global $conf; +00064 +00065 if ($host == '') +00066 { +00067 $host = $conf->db->host; +00068 } +00069 +00070 if ($user == '') +00071 { +00072 $user = $conf->db->user; +00073 } +00074 +00075 if ($pass == '') +00076 { +00077 $pass = $conf->db->pass; +00078 } +00079 +00080 if ($name == '') +00081 { +00082 $name = $conf->db->name; +00083 } 00084 -00085 if ($this->db) -00086 { -00087 $this->connected = 1; -00088 $this->ok = 1; -00089 } -00090 else -00091 { -00092 $this->connected = 0; -00093 $this->ok = 0; -00094 } -00095 -00096 // Si connexion serveur ok et si connexion base demandée, on essaie connexion base -00097 -00098 if ($this->connected && $name) -00099 { -00100 -00101 if ($this->select_db($name) == 1) -00102 { -00103 $this->database_selected = 1; -00104 $this->ok = 1; -00105 } -00106 else -00107 { -00108 $this->database_selected = 0; -00109 $this->ok = 0; -00110 } -00111 -00112 } -00113 else -00114 { -00115 // Pas de selection de base demandée, mais tout est ok -00116 -00117 $this->database_selected = 0; -00118 $this->ok = 1; -00119 } -00120 -00121 return $this->ok; -00122 } -00123 -00130 Function select_db($database) -00131 { -00132 return mysql_select_db($database, $this->db); -00133 } -00134 -00143 Function connect($host, $login, $passwd) -00144 { -00145 $this->db = @mysql_connect($host, $login, $passwd); -00146 //print "Resultat fonction connect: ".$this->db; -00147 return $this->db; -00148 } -00149 -00156 Function create_db($database) -00157 { -00158 if (mysql_create_db ($database, $this->db)) -00159 { -00160 return 1; -00161 } -00162 else -00163 { -00164 return 0; -00165 } -00166 } -00167 -00173 Function clone() -00174 { -00175 $db2 = new DoliDb("", "", "", "", ""); -00176 $db2->db = $this->db; -00177 return $db2; -00178 } -00179 -00188 Function pconnect($host, $login, $passwd) -00189 { -00190 $this->db = mysql_pconnect($host, $login, $passwd); -00191 return $this->db; -00192 } -00193 -00199 Function close() -00200 { -00201 return mysql_close($this->db); -00202 } -00203 -00210 Function begin($do=1) -00211 { -00212 if ($do) -00213 { -00214 return $this->query("BEGIN"); -00215 } -00216 else -00217 { -00218 return 1; -00219 } -00220 } -00221 -00228 Function commit($do=1) -00229 { -00230 if ($do) -00231 { -00232 return $this->query("COMMIT"); -00233 } -00234 else -00235 { -00236 return 1; -00237 } -00238 } -00239 -00246 Function rollback($do=1) -00247 { -00248 if ($do) -00249 { -00250 return $this->query("ROLLBACK"); -00251 } -00252 else -00253 { -00254 return 1; -00255 } -00256 } -00257 -00266 Function query($query, $limit="", $offset="") -00267 { -00268 $query = trim($query); -00269 //print "<p>$query</p>\n"; -00270 $this->results = mysql_query($query, $this->db); -00271 return $this->results; -00272 } -00273 -00280 Function list_tables($database) -00281 { -00282 $this->results = mysql_list_tables($database, $this->db); -00283 return $this->results; -00284 } -00285 -00293 Function result($nb, $fieldname) -00294 { -00295 return mysql_result($this->results, $nb, $fieldname); -00296 } -00297 -00303 Function free() -00304 { -00305 return mysql_free_result($this->results); -00306 } -00307 -00313 Function fetch_object() -00314 { -00315 return mysql_fetch_object($this->results); -00316 } -00317 -00325 Function plimit($limit=0,$offset=0) -00326 { -00327 if ($offset > 0) -00328 { -00329 return " LIMIT $offset,$limit "; -00330 } -00331 else -00332 { -00333 return " LIMIT $limit "; -00334 } -00335 } -00336 -00337 -00338 Function pdate($fname) -00339 { -00340 return "unix_timestamp($fname)"; +00085 //print "Name DB: $host,$user,$pass,$name<br>"; +00086 +00087 // Essai connexion serveur +00088 +00089 $this->db = $this->connect($host, $user, $pass); +00090 +00091 if ($this->db) +00092 { +00093 $this->connected = 1; +00094 $this->ok = 1; +00095 } +00096 else +00097 { +00098 $this->connected = 0; +00099 $this->ok = 0; +00100 } +00101 +00102 // Si connexion serveur ok et si connexion base demandée, on essaie connexion base +00103 +00104 if ($this->connected && $name) +00105 { +00106 +00107 if ($this->select_db($name) == 1) +00108 { +00109 $this->database_selected = 1; +00110 $this->ok = 1; +00111 } +00112 else +00113 { +00114 $this->database_selected = 0; +00115 $this->ok = 0; +00116 } +00117 +00118 } +00119 else +00120 { +00121 // Pas de selection de base demandée, mais tout est ok +00122 +00123 $this->database_selected = 0; +00124 $this->ok = 1; +00125 } +00126 +00127 return $this->ok; +00128 } +00129 +00136 function select_db($database) +00137 { +00138 return mysql_select_db($database, $this->db); +00139 } +00140 +00149 function connect($host, $login, $passwd) +00150 { +00151 $this->db = @mysql_connect($host, $login, $passwd); +00152 //print "Resultat fonction connect: ".$this->db; +00153 return $this->db; +00154 } +00155 +00162 function create_db($database) +00163 { +00164 if (mysql_create_db ($database, $this->db)) +00165 { +00166 return 1; +00167 } +00168 else +00169 { +00170 return 0; +00171 } +00172 } +00173 +00179 function clone() +00180 { +00181 $db2 = new DoliDb("", "", "", "", ""); +00182 $db2->db = $this->db; +00183 return $db2; +00184 } +00185 +00194 function pconnect($host, $login, $passwd) +00195 { +00196 $this->db = mysql_pconnect($host, $login, $passwd); +00197 return $this->db; +00198 } +00199 +00205 function close() +00206 { +00207 return mysql_close($this->db); +00208 } +00209 +00216 function begin($do=1) +00217 { +00218 if ($do) +00219 { +00220 return $this->query("BEGIN"); +00221 } +00222 else +00223 { +00224 return 1; +00225 } +00226 } +00227 +00234 function commit($do=1) +00235 { +00236 if ($do) +00237 { +00238 return $this->query("COMMIT"); +00239 } +00240 else +00241 { +00242 return 1; +00243 } +00244 } +00245 +00252 function rollback($do=1) +00253 { +00254 if ($do) +00255 { +00256 return $this->query("ROLLBACK"); +00257 } +00258 else +00259 { +00260 return 1; +00261 } +00262 } +00263 +00272 function query($query, $limit="", $offset="") +00273 { +00274 $query = trim($query); +00275 //print "<p>$query</p>\n"; +00276 $this->results = mysql_query($query, $this->db); +00277 return $this->results; +00278 } +00279 +00286 function list_tables($database) +00287 { +00288 $this->results = mysql_list_tables($database, $this->db); +00289 return $this->results; +00290 } +00291 +00299 function result($nb, $fieldname) +00300 { +00301 return mysql_result($this->results, $nb, $fieldname); +00302 } +00303 +00309 function free() +00310 { +00311 return mysql_free_result($this->results); +00312 } +00313 +00319 function fetch_object() +00320 { +00321 return mysql_fetch_object($this->results); +00322 } +00323 +00331 function plimit($limit=0,$offset=0) +00332 { +00333 if ($offset > 0) +00334 { +00335 return " LIMIT $offset,$limit "; +00336 } +00337 else +00338 { +00339 return " LIMIT $limit "; +00340 } 00341 } 00342 -00349 Function idate($fname) -00350 { -00351 return strftime("%Y%m%d%H%M%S",$fname); -00352 } -00353 -00359 Function fetch_array() -00360 { -00361 return mysql_fetch_array($this->results); -00362 } -00363 -00369 Function fetch_row() -00370 { -00371 return mysql_fetch_row($this->results); -00372 } -00373 -00381 Function fetch_field() -00382 { -00383 return mysql_fetch_field($this->results); -00384 } -00385 -00386 -00392 Function num_rows() -00393 { -00394 return mysql_num_rows($this->results); -00395 } -00396 -00402 Function num_fields() -00403 { -00404 return mysql_num_fields($this->results); -00405 } -00406 -00412 Function error() -00413 { -00414 return mysql_error($this->db); -00415 } -00416 -00422 Function errno() -00423 { -00424 // $ERROR_DUPLICATE=1062; -00425 // $ERROR_TABLEEXISTS=1050; -00426 -00427 return mysql_errno($this->db); -00428 } +00343 +00344 function pdate($fname) +00345 { +00346 return "unix_timestamp($fname)"; +00347 } +00348 +00355 function idate($fname) +00356 { +00357 return strftime("%Y%m%d%H%M%S",$fname); +00358 } +00359 +00365 function fetch_array() +00366 { +00367 return mysql_fetch_array($this->results); +00368 } +00369 +00375 function fetch_row() +00376 { +00377 return mysql_fetch_row($this->results); +00378 } +00379 +00384 function fetch_field() +00385 { +00386 return mysql_fetch_field($this->results); +00387 } +00388 +00389 +00395 function num_rows() +00396 { +00397 return mysql_num_rows($this->results); +00398 } +00399 +00405 function num_fields() +00406 { +00407 return mysql_num_fields($this->results); +00408 } +00409 +00415 function error() +00416 { +00417 return mysql_error($this->db); +00418 } +00419 +00425 function errno() +00426 { +00427 // $ERROR_DUPLICATE=1062; +00428 // $ERROR_TABLEEXISTS=1050; 00429 -00435 Function last_insert_id() -00436 { -00437 return mysql_insert_id(); -00438 } -00439 -00445 Function affected_rows() -00446 { -00447 return mysql_affected_rows(); -00448 } -00449 -00450 } -00451 -00452 ?> -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +00430 return mysql_errno($this->db); +00431 } +00432 +00438 function last_insert_id() +00439 { +00440 return mysql_insert_id(); +00441 } +00442 +00448 function affected_rows() +00449 { +00450 return mysql_affected_rows(); +00451 } +00452 +00453 } +00454 +00455 ?> +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/mysql_8lib_8php.html b/doc/dev/php/html/mysql_8lib_8php.html index 1c5612256be..0c148620d54 100644 --- a/doc/dev/php/html/mysql_8lib_8php.html +++ b/doc/dev/php/html/mysql_8lib_8php.html @@ -5,16 +5,20 @@ -

    Référence du fichier htdocs/lib/mysql.lib.php

    Classes permettant de gérér la database de dolibarr. +

    Référence du fichier htdocs/lib/mysql.lib.php

    Classe permettant de gérér la database de dolibarr. Plus de détails...

    Aller au code source de ce fichier. + + + +

    Classes

    class  DoliDb
     Classe permettant de gérér la database de dolibarr. Plus de détails...


    Description détaillée

    -Classes permettant de gérér la database de dolibarr. +Classe permettant de gérér la database de dolibarr.

    Auteur:
    Fabien Seisen

    Rodolphe Quiedeville.

    @@ -22,7 +26,7 @@ Laurent Destailleur.

    Version:
    1.2.
    Ensemble des fonctions permettant de gérer la database de dolibarr.

    -Définition dans le fichier mysql.lib.php.


    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +Définition dans le fichier mysql.lib.php.
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/price_8lib_8php-source.html b/doc/dev/php/html/price_8lib_8php-source.html index a4fe5210060..73eea62d9b4 100644 --- a/doc/dev/php/html/price_8lib_8php-source.html +++ b/doc/dev/php/html/price_8lib_8php-source.html @@ -69,9 +69,9 @@ 00077 $j=0; 00078 $result[5] = array(); 00079 -00080 foreach ($tva as $key => $value) +00080 foreach ($tva as $key => $value) 00081 { -00082 $tva[$key] = round($tva[$key], 2); +00082 $tva[$key] = round($tva[$key], 2); 00083 $total_tva = $total_tva + $tva[$key]; 00084 $result[5][$key] = $tva[$key]; 00085 $j++; @@ -93,7 +93,7 @@ 00101 00102 return $result; 00103 } -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/price_8lib_8php.html b/doc/dev/php/html/price_8lib_8php.html index 46ceee681c0..4b1098a1215 100644 --- a/doc/dev/php/html/price_8lib_8php.html +++ b/doc/dev/php/html/price_8lib_8php.html @@ -70,10 +70,12 @@ permet de calculer un prix.
    Renvoie:
    result

    -Définition à la ligne 38 du fichier price.lib.php. +Définition à la ligne 38 du fichier price.lib.php. +

    +Références tva(). -


    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/thermometer_8php-source.html b/doc/dev/php/html/thermometer_8php-source.html index 34ae1ddc51f..b1f5a20fe3b 100644 --- a/doc/dev/php/html/thermometer_8php-source.html +++ b/doc/dev/php/html/thermometer_8php-source.html @@ -186,7 +186,7 @@ 00197 00198 00199 -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/thermometer_8php.html b/doc/dev/php/html/thermometer_8php.html index 7931db93ec6..b925d99bda0 100644 --- a/doc/dev/php/html/thermometer_8php.html +++ b/doc/dev/php/html/thermometer_8php.html @@ -81,7 +81,7 @@ permet d'afficher un thermometre monetaire. Définition à la ligne 42 du fichier thermometer.php. -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/webcal_8class_8php-source.html b/doc/dev/php/html/webcal_8class_8php-source.html index 34197856cd0..ba9956b78f8 100644 --- a/doc/dev/php/html/webcal_8class_8php-source.html +++ b/doc/dev/php/html/webcal_8class_8php-source.html @@ -107,7 +107,7 @@ 00132 } 00133 } 00134 ?> -
    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/html/webcal_8class_8php.html b/doc/dev/php/html/webcal_8class_8php.html index 7054681d236..b1e7250ee38 100644 --- a/doc/dev/php/html/webcal_8class_8php.html +++ b/doc/dev/php/html/webcal_8class_8php.html @@ -24,7 +24,7 @@ Classe permettant d'acceder a la database webcalendar.
    Version:
    1.2.
    Ensemble des fonctions permettant d'acceder a la database webcalendar.

    -Définition dans le fichier webcal.class.php.


    Généré le Thu Jul 15 20:50:38 2004 pour dolibarr par +Définition dans le fichier webcal.class.php.
    Généré le Fri Jul 16 00:31:07 2004 pour dolibarr par doxygen 1.3.7
    diff --git a/doc/dev/php/latex/doxygen.sty b/doc/dev/php/latex/doxygen.sty index 8687611246c..47a43705399 100644 --- a/doc/dev/php/latex/doxygen.sty +++ b/doc/dev/php/latex/doxygen.sty @@ -10,8 +10,8 @@ {\fancyplain{}{\bfseries\rightmark}} \rhead[\fancyplain{}{\bfseries\leftmark}] {\fancyplain{}{\bfseries\thepage}} -\rfoot[\fancyplain{}{\bfseries\scriptsize G\'{e}n\'{e}r\'{e} le Thu Jul 15 20:50:39 2004 pour dolibarr par Doxygen }]{} -\lfoot[]{\fancyplain{}{\bfseries\scriptsize G\'{e}n\'{e}r\'{e} le Thu Jul 15 20:50:39 2004 pour dolibarr par Doxygen }} +\rfoot[\fancyplain{}{\bfseries\scriptsize G\'{e}n\'{e}r\'{e} le Fri Jul 16 00:31:08 2004 pour dolibarr par Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize G\'{e}n\'{e}r\'{e} le Fri Jul 16 00:31:08 2004 pour dolibarr par Doxygen }} \cfoot{} \newenvironment{CompactList} {\begin{list}{}{ diff --git a/doc/dev/php/latex/files.tex b/doc/dev/php/latex/files.tex index 2cce1195cfc..aefab881d16 100644 --- a/doc/dev/php/latex/files.tex +++ b/doc/dev/php/latex/files.tex @@ -1,9 +1,9 @@ \section{dolibarr Liste des fichiers} Liste de tous les fichiers document\'{e}s avec une br\`{e}ve description:\begin{CompactList} -\item\contentsline{section}{htdocs/lib/{\bf CMail\-File.class.php} }{\pageref{CMailFile_8class_8php}}{} -\item\contentsline{section}{htdocs/lib/{\bf functions.inc.php} }{\pageref{functions_8inc_8php}}{} +\item\contentsline{section}{htdocs/lib/\hyperlink{CMailFile_8class_8php}{CMail\-File.class.php} (Classe permettant d'envoyer des attachements par mail )}{\pageref{CMailFile_8class_8php}}{} +\item\contentsline{section}{htdocs/lib/\hyperlink{functions_8inc_8php}{functions.inc.php} (Ensemble de fonctions de base de dolibarr sous forme d'include )}{\pageref{functions_8inc_8php}}{} \item\contentsline{section}{htdocs/lib/\hyperlink{ldap_8lib_8php}{ldap.lib.php} (Librairie contenant les fonctions pour acc\`{e}der au serveur ldap )}{\pageref{ldap_8lib_8php}}{} -\item\contentsline{section}{htdocs/lib/\hyperlink{mysql_8lib_8php}{mysql.lib.php} (Classes permettant de g\'{e}r\'{e}r la database de dolibarr )}{\pageref{mysql_8lib_8php}}{} +\item\contentsline{section}{htdocs/lib/\hyperlink{mysql_8lib_8php}{mysql.lib.php} (Classe permettant de g\'{e}r\'{e}r la database de dolibarr )}{\pageref{mysql_8lib_8php}}{} \item\contentsline{section}{htdocs/lib/\hyperlink{price_8lib_8php}{price.lib.php} (Librairie contenant les fonctions pour calculer un prix )}{\pageref{price_8lib_8php}}{} \item\contentsline{section}{htdocs/lib/\hyperlink{thermometer_8php}{thermometer.php} (Classe permettant d'afficher un thermometre )}{\pageref{thermometer_8php}}{} \item\contentsline{section}{htdocs/lib/\hyperlink{webcal_8class_8php}{webcal.class.php} (Classe permettant d'acceder a la database webcalendar )}{\pageref{webcal_8class_8php}}{} diff --git a/doc/dev/php/latex/mysql_8lib_8php.aux b/doc/dev/php/latex/mysql_8lib_8php.aux index 0ae5ab5eb7f..00e60da0492 100644 --- a/doc/dev/php/latex/mysql_8lib_8php.aux +++ b/doc/dev/php/latex/mysql_8lib_8php.aux @@ -1,9 +1,9 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {2.2}R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php}{6}{section.2.2}} -\newlabel{mysql_8lib_8php}{{2.2}{6}{R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php\relax }{section.2.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Description d\'{e}taill\'{e}e}{6}{subsection.2.2.1}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php}{33}{section.4.4}} +\newlabel{mysql_8lib_8php}{{4.4}{33}{R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php\relax }{section.4.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}Description d\'{e}taill\'{e}e}{33}{subsection.4.4.1}} \@setckpt{mysql_8lib_8php}{ -\setcounter{page}{7} +\setcounter{page}{34} \setcounter{equation}{0} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -12,8 +12,8 @@ \setcounter{footnote}{0} \setcounter{mpfootnote}{0} \setcounter{part}{0} -\setcounter{chapter}{2} -\setcounter{section}{2} +\setcounter{chapter}{4} +\setcounter{section}{4} \setcounter{subsection}{1} \setcounter{subsubsection}{0} \setcounter{paragraph}{0} diff --git a/doc/dev/php/latex/mysql_8lib_8php.tex b/doc/dev/php/latex/mysql_8lib_8php.tex index 9b80115a721..d7fcbc253ac 100644 --- a/doc/dev/php/latex/mysql_8lib_8php.tex +++ b/doc/dev/php/latex/mysql_8lib_8php.tex @@ -2,13 +2,18 @@ \section{R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php} \label{mysql_8lib_8php}\index{htdocs/lib/mysql.lib.php@{htdocs/lib/mysql.lib.php}} } -Classes permettant de g\'{e}r\'{e}r la database de dolibarr. +Classe permettant de g\'{e}r\'{e}r la database de dolibarr. +\subsection*{Classes} +\begin{CompactItemize} +\item +class \hyperlink{classDoliDb}{Doli\-Db} +\begin{CompactList}\small\item\em Classe permettant de g\'{e}r\'{e}r la database de dolibarr. \item\end{CompactList}\end{CompactItemize} \subsection{Description d\'{e}taill\'{e}e} -Classes permettant de g\'{e}r\'{e}r la database de dolibarr. +Classe permettant de g\'{e}r\'{e}r la database de dolibarr. \begin{Desc} \item[Auteur:]Fabien Seisen diff --git a/doc/dev/php/latex/price_8lib_8php.aux b/doc/dev/php/latex/price_8lib_8php.aux index 65fab0e6967..f25dee4ad58 100644 --- a/doc/dev/php/latex/price_8lib_8php.aux +++ b/doc/dev/php/latex/price_8lib_8php.aux @@ -1,12 +1,12 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {2.3}R\'{e}f\'{e}rence du fichier htdocs/lib/price.lib.php}{7}{section.2.3}} -\newlabel{price_8lib_8php}{{2.3}{7}{R\'{e}f\'{e}rence du fichier htdocs/lib/price.lib.php\relax }{section.2.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Description d\'{e}taill\'{e}e}{7}{subsection.2.3.1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}Documentation des fonctions}{7}{subsection.2.3.2}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2.1}calcul\_\discretionary {-}{}{}price}{7}{subsubsection.2.3.2.1}} -\newlabel{price_8lib_8php_a0}{{2.3.2.1}{7}{calcul\_\-price\relax }{subsubsection.2.3.2.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.5}R\'{e}f\'{e}rence du fichier htdocs/lib/price.lib.php}{34}{section.4.5}} +\newlabel{price_8lib_8php}{{4.5}{34}{R\'{e}f\'{e}rence du fichier htdocs/lib/price.lib.php\relax }{section.4.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.1}Description d\'{e}taill\'{e}e}{34}{subsection.4.5.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.2}Documentation des fonctions}{34}{subsection.4.5.2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.2.1}calcul\_\discretionary {-}{}{}price}{34}{subsubsection.4.5.2.1}} +\newlabel{price_8lib_8php_a0}{{4.5.2.1}{34}{calcul\_\-price\relax }{subsubsection.4.5.2.1}{}} \@setckpt{price_8lib_8php}{ -\setcounter{page}{8} +\setcounter{page}{35} \setcounter{equation}{0} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -15,8 +15,8 @@ \setcounter{footnote}{0} \setcounter{mpfootnote}{0} \setcounter{part}{0} -\setcounter{chapter}{2} -\setcounter{section}{3} +\setcounter{chapter}{4} +\setcounter{section}{5} \setcounter{subsection}{2} \setcounter{subsubsection}{1} \setcounter{paragraph}{0} diff --git a/doc/dev/php/latex/price_8lib_8php.tex b/doc/dev/php/latex/price_8lib_8php.tex index 1fbe322dd95..5603b27c737 100644 --- a/doc/dev/php/latex/price_8lib_8php.tex +++ b/doc/dev/php/latex/price_8lib_8php.tex @@ -42,4 +42,6 @@ permet de calculer un prix. \item[Renvoie:]result \end{Desc} -D\'{e}finition \`{a} la ligne 38 du fichier price.lib.php. \ No newline at end of file +D\'{e}finition \`{a} la ligne 38 du fichier price.lib.php. + +R\'{e}f\'{e}rences tva(). \ No newline at end of file diff --git a/doc/dev/php/latex/refman.aux b/doc/dev/php/latex/refman.aux index 0b09b9e583a..d5574250fd5 100644 --- a/doc/dev/php/latex/refman.aux +++ b/doc/dev/php/latex/refman.aux @@ -19,29 +19,33 @@ \@writefile{toc}{\select@language{french}} \@writefile{lof}{\select@language{french}} \@writefile{lot}{\select@language{french}} -\@writefile{toc}{\contentsline {chapter}{\numberline {1}dolibarr Index des fichiers}{1}{chapter.1}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}dolibarr Index des classes}{1}{chapter.1}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {1.1}dolibarr Liste des fichiers}{1}{section.1.1}} -\@writefile{toc}{\contentsline {chapter}{\numberline {2}dolibarr Documentation des fichiers}{3}{chapter.2}} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}dolibarr Liste des classes}{1}{section.1.1}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}dolibarr Index des fichiers}{3}{chapter.2}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {2.1}R\'{e}f\'{e}rence du fichier htdocs/lib/ldap.lib.php}{3}{section.2.1}} -\newlabel{ldap_8lib_8php}{{2.1}{3}{R\'{e}f\'{e}rence du fichier htdocs/lib/ldap.lib.php\relax }{section.2.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}Description d\'{e}taill\'{e}e}{3}{subsection.2.1.1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Documentation des fonctions}{4}{subsection.2.1.2}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2.1}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}{4}{subsubsection.2.1.2.1}} -\newlabel{ldap_8lib_8php_a1}{{2.1.2.1}{4}{dolibarr\_\-ldap\_\-bind\relax }{subsubsection.2.1.2.1}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2.2}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}{4}{subsubsection.2.1.2.2}} -\newlabel{ldap_8lib_8php_a0}{{2.1.2.2}{4}{dolibarr\_\-ldap\_\-connect\relax }{subsubsection.2.1.2.2}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2.3}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}{4}{subsubsection.2.1.2.3}} -\newlabel{ldap_8lib_8php_a3}{{2.1.2.3}{4}{dolibarr\_\-ldap\_\-getversion\relax }{subsubsection.2.1.2.3}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2.4}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}{4}{subsubsection.2.1.2.4}} -\newlabel{ldap_8lib_8php_a4}{{2.1.2.4}{4}{dolibarr\_\-ldap\_\-setversion\relax }{subsubsection.2.1.2.4}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2.5}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}{5}{subsubsection.2.1.2.5}} -\newlabel{ldap_8lib_8php_a5}{{2.1.2.5}{5}{dolibarr\_\-ldap\_\-unacc\relax }{subsubsection.2.1.2.5}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2.6}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}{5}{subsubsection.2.1.2.6}} -\newlabel{ldap_8lib_8php_a2}{{2.1.2.6}{5}{dolibarr\_\-ldap\_\-unbind\relax }{subsubsection.2.1.2.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}dolibarr Liste des fichiers}{3}{section.2.1}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}dolibarr Documentation des classes}{5}{chapter.3}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}R\'{e}f\'{e}rence de la classe CMail\discretionary {-}{}{}File}{5}{section.3.1}} +\newlabel{classCMailFile}{{3.1}{5}{R\'{e}f\'{e}rence de la classe CMail\-File\relax }{section.3.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Description d\'{e}taill\'{e}e}{5}{subsection.3.1.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Documentation des contructeurs et destructeur}{6}{subsection.3.1.2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2.1}CMailFile}{6}{subsubsection.3.1.2.1}} +\newlabel{classCMailFile_a0}{{3.1.2.1}{6}{CMailFile\relax }{subsubsection.3.1.2.1}{}} +\@input{classDoliDb.aux} +\@input{classWebcal.aux} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}dolibarr Documentation des fichiers}{19}{chapter.4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}R\'{e}f\'{e}rence du fichier htdocs/lib/CMail\discretionary {-}{}{}File.class.php}{19}{section.4.1}} +\newlabel{CMailFile_8class_8php}{{4.1}{19}{R\'{e}f\'{e}rence du fichier htdocs/lib/CMail\-File.class.php\relax }{section.4.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Description d\'{e}taill\'{e}e}{19}{subsection.4.1.1}} +\@input{functions_8inc_8php.aux} +\@input{ldap_8lib_8php.aux} \@input{mysql_8lib_8php.aux} \@input{price_8lib_8php.aux} \@input{thermometer_8php.aux} diff --git a/doc/dev/php/latex/refman.idx b/doc/dev/php/latex/refman.idx index 5fd86bc3ce1..e9c833643ed 100644 --- a/doc/dev/php/latex/refman.idx +++ b/doc/dev/php/latex/refman.idx @@ -1,21 +1,140 @@ -\indexentry{htdocs/lib/ldap.lib.php@{htdocs/lib/ldap.lib.php}|hyperpage}{3} -\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_bind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}|hyperpage}{4} -\indexentry{dolibarr_ldap_bind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}!ldap.lib.php@{ldap.lib.php}|hyperpage}{4} -\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_connect@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}|hyperpage}{4} -\indexentry{dolibarr_ldap_connect@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}!ldap.lib.php@{ldap.lib.php}|hyperpage}{4} -\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_getversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}|hyperpage}{4} -\indexentry{dolibarr_ldap_getversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}!ldap.lib.php@{ldap.lib.php}|hyperpage}{4} -\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_setversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}|hyperpage}{4} -\indexentry{dolibarr_ldap_setversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}!ldap.lib.php@{ldap.lib.php}|hyperpage}{4} -\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_unacc@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}|hyperpage}{5} -\indexentry{dolibarr_ldap_unacc@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}!ldap.lib.php@{ldap.lib.php}|hyperpage}{5} -\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_unbind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}|hyperpage}{5} -\indexentry{dolibarr_ldap_unbind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}!ldap.lib.php@{ldap.lib.php}|hyperpage}{5} -\indexentry{htdocs/lib/mysql.lib.php@{htdocs/lib/mysql.lib.php}|hyperpage}{6} -\indexentry{htdocs/lib/price.lib.php@{htdocs/lib/price.lib.php}|hyperpage}{7} -\indexentry{price.lib.php@{price.lib.php}!calcul_price@{calcul\_\discretionary {-}{}{}price}|hyperpage}{7} -\indexentry{calcul_price@{calcul\_\discretionary {-}{}{}price}!price.lib.php@{price.lib.php}|hyperpage}{7} -\indexentry{htdocs/lib/thermometer.php@{htdocs/lib/thermometer.php}|hyperpage}{8} -\indexentry{thermometer.php@{thermometer.php}!moneyMeter@{moneyMeter}|hyperpage}{8} -\indexentry{moneyMeter@{moneyMeter}!thermometer.php@{thermometer.php}|hyperpage}{8} -\indexentry{htdocs/lib/webcal.class.php@{htdocs/lib/webcal.class.php}|hyperpage}{9} +\indexentry{CMailFile@{CMailFile}|hyperpage}{5} +\indexentry{CMailFile@{CMail\discretionary {-}{}{}File}!CMailFile@{CMailFile}|hyperpage}{6} +\indexentry{CMailFile@{CMailFile}!CMailFile@{CMail\discretionary {-}{}{}File}|hyperpage}{6} +\indexentry{DoliDb@{DoliDb}|hyperpage}{7} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!DoliDb@{DoliDb}|hyperpage}{8} +\indexentry{DoliDb@{DoliDb}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{8} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!affected_rows@{affected\_\discretionary {-}{}{}rows}|hyperpage}{9} +\indexentry{affected_rows@{affected\_\discretionary {-}{}{}rows}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{9} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!begin@{begin}|hyperpage}{9} +\indexentry{begin@{begin}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{9} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!clone@{clone}|hyperpage}{9} +\indexentry{clone@{clone}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{9} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!close@{close}|hyperpage}{9} +\indexentry{close@{close}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{9} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!commit@{commit}|hyperpage}{9} +\indexentry{commit@{commit}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{9} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!connect@{connect}|hyperpage}{10} +\indexentry{connect@{connect}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{10} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!create_db@{create\_\discretionary {-}{}{}db}|hyperpage}{10} +\indexentry{create_db@{create\_\discretionary {-}{}{}db}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{10} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!errno@{errno}|hyperpage}{10} +\indexentry{errno@{errno}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{10} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!error@{error}|hyperpage}{11} +\indexentry{error@{error}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{11} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!fetch_array@{fetch\_\discretionary {-}{}{}array}|hyperpage}{11} +\indexentry{fetch_array@{fetch\_\discretionary {-}{}{}array}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{11} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!fetch_object@{fetch\_\discretionary {-}{}{}object}|hyperpage}{11} +\indexentry{fetch_object@{fetch\_\discretionary {-}{}{}object}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{11} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!fetch_row@{fetch\_\discretionary {-}{}{}row}|hyperpage}{11} +\indexentry{fetch_row@{fetch\_\discretionary {-}{}{}row}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{11} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!free@{free}|hyperpage}{11} +\indexentry{free@{free}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{11} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!idate@{idate}|hyperpage}{12} +\indexentry{idate@{idate}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{12} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!last_insert_id@{last\_\discretionary {-}{}{}insert\_\discretionary {-}{}{}id}|hyperpage}{12} +\indexentry{last_insert_id@{last\_\discretionary {-}{}{}insert\_\discretionary {-}{}{}id}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{12} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!list_tables@{list\_\discretionary {-}{}{}tables}|hyperpage}{12} +\indexentry{list_tables@{list\_\discretionary {-}{}{}tables}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{12} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!num_fields@{num\_\discretionary {-}{}{}fields}|hyperpage}{12} +\indexentry{num_fields@{num\_\discretionary {-}{}{}fields}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{12} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!num_rows@{num\_\discretionary {-}{}{}rows}|hyperpage}{13} +\indexentry{num_rows@{num\_\discretionary {-}{}{}rows}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{13} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!pconnect@{pconnect}|hyperpage}{13} +\indexentry{pconnect@{pconnect}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{13} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!plimit@{plimit}|hyperpage}{13} +\indexentry{plimit@{plimit}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{13} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!query@{query}|hyperpage}{13} +\indexentry{query@{query}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{13} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!result@{result}|hyperpage}{14} +\indexentry{result@{result}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{14} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!rollback@{rollback}|hyperpage}{14} +\indexentry{rollback@{rollback}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{14} +\indexentry{DoliDb@{Doli\discretionary {-}{}{}Db}!select_db@{select\_\discretionary {-}{}{}db}|hyperpage}{14} +\indexentry{select_db@{select\_\discretionary {-}{}{}db}!DoliDb@{Doli\discretionary {-}{}{}Db}|hyperpage}{14} +\indexentry{Webcal@{Webcal}|hyperpage}{16} +\indexentry{Webcal@{Webcal}!add@{add}|hyperpage}{16} +\indexentry{add@{add}!Webcal@{Webcal}|hyperpage}{16} +\indexentry{Webcal@{Webcal}!get_next_id@{get\_\discretionary {-}{}{}next\_\discretionary {-}{}{}id}|hyperpage}{16} +\indexentry{get_next_id@{get\_\discretionary {-}{}{}next\_\discretionary {-}{}{}id}!Webcal@{Webcal}|hyperpage}{16} +\indexentry{htdocs/lib/CMailFile.class.php@{htdocs/lib/CMailFile.class.php}|hyperpage}{19} +\indexentry{htdocs/lib/functions.inc.php@{htdocs/lib/functions.inc.php}|hyperpage}{20} +\indexentry{functions.inc.php@{functions.inc.php}!creer_pass_aleatoire@{creer\_\discretionary {-}{}{}pass\_\discretionary {-}{}{}aleatoire}|hyperpage}{22} +\indexentry{creer_pass_aleatoire@{creer\_\discretionary {-}{}{}pass\_\discretionary {-}{}{}aleatoire}!functions.inc.php@{functions.inc.php}|hyperpage}{22} +\indexentry{functions.inc.php@{functions.inc.php}!dol_delete_file@{dol\_\discretionary {-}{}{}delete\_\discretionary {-}{}{}file}|hyperpage}{22} +\indexentry{dol_delete_file@{dol\_\discretionary {-}{}{}delete\_\discretionary {-}{}{}file}!functions.inc.php@{functions.inc.php}|hyperpage}{22} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_del_const@{dolibarr\_\discretionary {-}{}{}del\_\discretionary {-}{}{}const}|hyperpage}{22} +\indexentry{dolibarr_del_const@{dolibarr\_\discretionary {-}{}{}del\_\discretionary {-}{}{}const}!functions.inc.php@{functions.inc.php}|hyperpage}{22} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_fiche_head@{dolibarr\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}head}|hyperpage}{22} +\indexentry{dolibarr_fiche_head@{dolibarr\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}head}!functions.inc.php@{functions.inc.php}|hyperpage}{22} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_print_ca@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}ca}|hyperpage}{23} +\indexentry{dolibarr_print_ca@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}ca}!functions.inc.php@{functions.inc.php}|hyperpage}{23} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_print_date@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}date}|hyperpage}{23} +\indexentry{dolibarr_print_date@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}date}!functions.inc.php@{functions.inc.php}|hyperpage}{23} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_print_object_info@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}object\_\discretionary {-}{}{}info}|hyperpage}{23} +\indexentry{dolibarr_print_object_info@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}object\_\discretionary {-}{}{}info}!functions.inc.php@{functions.inc.php}|hyperpage}{23} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_print_phone@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}phone}|hyperpage}{23} +\indexentry{dolibarr_print_phone@{dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}phone}!functions.inc.php@{functions.inc.php}|hyperpage}{23} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_set_const@{dolibarr\_\discretionary {-}{}{}set\_\discretionary {-}{}{}const}|hyperpage}{24} +\indexentry{dolibarr_set_const@{dolibarr\_\discretionary {-}{}{}set\_\discretionary {-}{}{}const}!functions.inc.php@{functions.inc.php}|hyperpage}{24} +\indexentry{functions.inc.php@{functions.inc.php}!dolibarr_syslog@{dolibarr\_\discretionary {-}{}{}syslog}|hyperpage}{24} +\indexentry{dolibarr_syslog@{dolibarr\_\discretionary {-}{}{}syslog}!functions.inc.php@{functions.inc.php}|hyperpage}{24} +\indexentry{functions.inc.php@{functions.inc.php}!doliMoveFileUpload@{doliMoveFileUpload}|hyperpage}{24} +\indexentry{doliMoveFileUpload@{doliMoveFileUpload}!functions.inc.php@{functions.inc.php}|hyperpage}{24} +\indexentry{functions.inc.php@{functions.inc.php}!francs@{francs}|hyperpage}{24} +\indexentry{francs@{francs}!functions.inc.php@{functions.inc.php}|hyperpage}{24} +\indexentry{functions.inc.php@{functions.inc.php}!inctva@{inctva}|hyperpage}{25} +\indexentry{inctva@{inctva}!functions.inc.php@{functions.inc.php}|hyperpage}{25} +\indexentry{functions.inc.php@{functions.inc.php}!initialiser_sel@{initialiser\_\discretionary {-}{}{}sel}|hyperpage}{25} +\indexentry{initialiser_sel@{initialiser\_\discretionary {-}{}{}sel}!functions.inc.php@{functions.inc.php}|hyperpage}{25} +\indexentry{functions.inc.php@{functions.inc.php}!logfile@{logfile}|hyperpage}{25} +\indexentry{logfile@{logfile}!functions.inc.php@{functions.inc.php}|hyperpage}{25} +\indexentry{functions.inc.php@{functions.inc.php}!loginfunction@{loginfunction}|hyperpage}{25} +\indexentry{loginfunction@{loginfunction}!functions.inc.php@{functions.inc.php}|hyperpage}{25} +\indexentry{functions.inc.php@{functions.inc.php}!price@{price}|hyperpage}{26} +\indexentry{price@{price}!functions.inc.php@{functions.inc.php}|hyperpage}{26} +\indexentry{functions.inc.php@{functions.inc.php}!print_date_select@{print\_\discretionary {-}{}{}date\_\discretionary {-}{}{}select}|hyperpage}{26} +\indexentry{print_date_select@{print\_\discretionary {-}{}{}date\_\discretionary {-}{}{}select}!functions.inc.php@{functions.inc.php}|hyperpage}{26} +\indexentry{functions.inc.php@{functions.inc.php}!print_duree_select@{print\_\discretionary {-}{}{}duree\_\discretionary {-}{}{}select}|hyperpage}{26} +\indexentry{print_duree_select@{print\_\discretionary {-}{}{}duree\_\discretionary {-}{}{}select}!functions.inc.php@{functions.inc.php}|hyperpage}{26} +\indexentry{functions.inc.php@{functions.inc.php}!print_fiche_titre@{print\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}titre}|hyperpage}{26} +\indexentry{print_fiche_titre@{print\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}titre}!functions.inc.php@{functions.inc.php}|hyperpage}{26} +\indexentry{functions.inc.php@{functions.inc.php}!print_fleche_navigation@{print\_\discretionary {-}{}{}fleche\_\discretionary {-}{}{}navigation}|hyperpage}{27} +\indexentry{print_fleche_navigation@{print\_\discretionary {-}{}{}fleche\_\discretionary {-}{}{}navigation}!functions.inc.php@{functions.inc.php}|hyperpage}{27} +\indexentry{functions.inc.php@{functions.inc.php}!print_heure_select@{print\_\discretionary {-}{}{}heure\_\discretionary {-}{}{}select}|hyperpage}{27} +\indexentry{print_heure_select@{print\_\discretionary {-}{}{}heure\_\discretionary {-}{}{}select}!functions.inc.php@{functions.inc.php}|hyperpage}{27} +\indexentry{functions.inc.php@{functions.inc.php}!print_liste_field_titre@{print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre}|hyperpage}{27} +\indexentry{print_liste_field_titre@{print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre}!functions.inc.php@{functions.inc.php}|hyperpage}{27} +\indexentry{functions.inc.php@{functions.inc.php}!print_liste_field_titre_new@{print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre\_\discretionary {-}{}{}new}|hyperpage}{28} +\indexentry{print_liste_field_titre_new@{print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre\_\discretionary {-}{}{}new}!functions.inc.php@{functions.inc.php}|hyperpage}{28} +\indexentry{functions.inc.php@{functions.inc.php}!print_oui_non@{print\_\discretionary {-}{}{}oui\_\discretionary {-}{}{}non}|hyperpage}{28} +\indexentry{print_oui_non@{print\_\discretionary {-}{}{}oui\_\discretionary {-}{}{}non}!functions.inc.php@{functions.inc.php}|hyperpage}{28} +\indexentry{functions.inc.php@{functions.inc.php}!print_titre@{print\_\discretionary {-}{}{}titre}|hyperpage}{28} +\indexentry{print_titre@{print\_\discretionary {-}{}{}titre}!functions.inc.php@{functions.inc.php}|hyperpage}{28} +\indexentry{functions.inc.php@{functions.inc.php}!stat_print@{stat\_\discretionary {-}{}{}print}|hyperpage}{28} +\indexentry{stat_print@{stat\_\discretionary {-}{}{}print}!functions.inc.php@{functions.inc.php}|hyperpage}{28} +\indexentry{functions.inc.php@{functions.inc.php}!transcoS2L@{transcoS2L}|hyperpage}{29} +\indexentry{transcoS2L@{transcoS2L}!functions.inc.php@{functions.inc.php}|hyperpage}{29} +\indexentry{functions.inc.php@{functions.inc.php}!tva@{tva}|hyperpage}{29} +\indexentry{tva@{tva}!functions.inc.php@{functions.inc.php}|hyperpage}{29} +\indexentry{htdocs/lib/ldap.lib.php@{htdocs/lib/ldap.lib.php}|hyperpage}{30} +\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_bind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}|hyperpage}{30} +\indexentry{dolibarr_ldap_bind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}!ldap.lib.php@{ldap.lib.php}|hyperpage}{30} +\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_connect@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}|hyperpage}{30} +\indexentry{dolibarr_ldap_connect@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}!ldap.lib.php@{ldap.lib.php}|hyperpage}{30} +\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_getversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}|hyperpage}{31} +\indexentry{dolibarr_ldap_getversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}!ldap.lib.php@{ldap.lib.php}|hyperpage}{31} +\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_setversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}|hyperpage}{31} +\indexentry{dolibarr_ldap_setversion@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}!ldap.lib.php@{ldap.lib.php}|hyperpage}{31} +\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_unacc@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}|hyperpage}{31} +\indexentry{dolibarr_ldap_unacc@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}!ldap.lib.php@{ldap.lib.php}|hyperpage}{31} +\indexentry{ldap.lib.php@{ldap.lib.php}!dolibarr_ldap_unbind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}|hyperpage}{31} +\indexentry{dolibarr_ldap_unbind@{dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}!ldap.lib.php@{ldap.lib.php}|hyperpage}{31} +\indexentry{htdocs/lib/mysql.lib.php@{htdocs/lib/mysql.lib.php}|hyperpage}{33} +\indexentry{htdocs/lib/price.lib.php@{htdocs/lib/price.lib.php}|hyperpage}{34} +\indexentry{price.lib.php@{price.lib.php}!calcul_price@{calcul\_\discretionary {-}{}{}price}|hyperpage}{34} +\indexentry{calcul_price@{calcul\_\discretionary {-}{}{}price}!price.lib.php@{price.lib.php}|hyperpage}{34} +\indexentry{htdocs/lib/thermometer.php@{htdocs/lib/thermometer.php}|hyperpage}{35} +\indexentry{thermometer.php@{thermometer.php}!moneyMeter@{moneyMeter}|hyperpage}{35} +\indexentry{moneyMeter@{moneyMeter}!thermometer.php@{thermometer.php}|hyperpage}{35} +\indexentry{htdocs/lib/webcal.class.php@{htdocs/lib/webcal.class.php}|hyperpage}{36} diff --git a/doc/dev/php/latex/refman.ilg b/doc/dev/php/latex/refman.ilg index ed535cbf1e3..b2c076e6109 100644 --- a/doc/dev/php/latex/refman.ilg +++ b/doc/dev/php/latex/refman.ilg @@ -1,6 +1,6 @@ This is makeindex, version 2.13 [07-Mar-1997] (using kpathsea). -Scanning input file refman.idx....done (21 entries accepted, 0 rejected). -Sorting entries....done (105 comparisons). -Generating output file refman.ind....done (60 lines written, 0 warnings). +Scanning input file refman.idx....done (140 entries accepted, 0 rejected). +Sorting entries....done (1078 comparisons). +Generating output file refman.ind....done (289 lines written, 0 warnings). Output written in refman.ind. Transcript written in refman.ilg. diff --git a/doc/dev/php/latex/refman.ind b/doc/dev/php/latex/refman.ind index 8ed07a7aa9b..a70c25100d4 100644 --- a/doc/dev/php/latex/refman.ind +++ b/doc/dev/php/latex/refman.ind @@ -1,60 +1,289 @@ \begin{theindex} + \item {add} + \subitem {Webcal}, \hyperpage{16} + \item {affected\_\discretionary {-}{}{}rows} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{9} + + \indexspace + + \item {begin} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{9} + + \indexspace + \item {calcul\_\discretionary {-}{}{}price} - \subitem {price.lib.php}, \hyperpage{7} + \subitem {price.lib.php}, \hyperpage{34} + \item {clone} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{9} + \item {close} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{9} + \item {CMailFile}, \hyperpage{5} + \subitem {CMail\discretionary {-}{}{}File}, \hyperpage{6} + \item {CMail\discretionary {-}{}{}File} + \subitem {CMailFile}, \hyperpage{6} + \item {commit} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{9} + \item {connect} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{10} + \item {create\_\discretionary {-}{}{}db} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{10} + \item {creer\_\discretionary {-}{}{}pass\_\discretionary {-}{}{}aleatoire} + \subitem {functions.inc.php}, \hyperpage{22} \indexspace + \item {dol\_\discretionary {-}{}{}delete\_\discretionary {-}{}{}file} + \subitem {functions.inc.php}, \hyperpage{22} + \item {dolibarr\_\discretionary {-}{}{}del\_\discretionary {-}{}{}const} + \subitem {functions.inc.php}, \hyperpage{22} + \item {dolibarr\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}head} + \subitem {functions.inc.php}, \hyperpage{22} \item {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind} - \subitem {ldap.lib.php}, \hyperpage{4} + \subitem {ldap.lib.php}, \hyperpage{30} \item {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect} - \subitem {ldap.lib.php}, \hyperpage{4} + \subitem {ldap.lib.php}, \hyperpage{30} \item {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion} - \subitem {ldap.lib.php}, \hyperpage{4} + \subitem {ldap.lib.php}, \hyperpage{31} \item {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion} - \subitem {ldap.lib.php}, \hyperpage{4} + \subitem {ldap.lib.php}, \hyperpage{31} \item {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc} - \subitem {ldap.lib.php}, \hyperpage{5} + \subitem {ldap.lib.php}, \hyperpage{31} \item {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind} - \subitem {ldap.lib.php}, \hyperpage{5} + \subitem {ldap.lib.php}, \hyperpage{31} + \item {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}ca} + \subitem {functions.inc.php}, \hyperpage{23} + \item {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}date} + \subitem {functions.inc.php}, \hyperpage{23} + \item {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}object\_\discretionary {-}{}{}info} + \subitem {functions.inc.php}, \hyperpage{23} + \item {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}phone} + \subitem {functions.inc.php}, \hyperpage{23} + \item {dolibarr\_\discretionary {-}{}{}set\_\discretionary {-}{}{}const} + \subitem {functions.inc.php}, \hyperpage{24} + \item {dolibarr\_\discretionary {-}{}{}syslog} + \subitem {functions.inc.php}, \hyperpage{24} + \item {DoliDb}, \hyperpage{7} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{8} + \item {Doli\discretionary {-}{}{}Db} + \subitem {affected\_\discretionary {-}{}{}rows}, \hyperpage{9} + \subitem {begin}, \hyperpage{9} + \subitem {clone}, \hyperpage{9} + \subitem {close}, \hyperpage{9} + \subitem {commit}, \hyperpage{9} + \subitem {connect}, \hyperpage{10} + \subitem {create\_\discretionary {-}{}{}db}, \hyperpage{10} + \subitem {DoliDb}, \hyperpage{8} + \subitem {errno}, \hyperpage{10} + \subitem {error}, \hyperpage{11} + \subitem {fetch\_\discretionary {-}{}{}array}, \hyperpage{11} + \subitem {fetch\_\discretionary {-}{}{}object}, \hyperpage{11} + \subitem {fetch\_\discretionary {-}{}{}row}, \hyperpage{11} + \subitem {free}, \hyperpage{11} + \subitem {idate}, \hyperpage{12} + \subitem {last\_\discretionary {-}{}{}insert\_\discretionary {-}{}{}id}, + \hyperpage{12} + \subitem {list\_\discretionary {-}{}{}tables}, \hyperpage{12} + \subitem {num\_\discretionary {-}{}{}fields}, \hyperpage{12} + \subitem {num\_\discretionary {-}{}{}rows}, \hyperpage{13} + \subitem {pconnect}, \hyperpage{13} + \subitem {plimit}, \hyperpage{13} + \subitem {query}, \hyperpage{13} + \subitem {result}, \hyperpage{14} + \subitem {rollback}, \hyperpage{14} + \subitem {select\_\discretionary {-}{}{}db}, \hyperpage{14} + \item {doliMoveFileUpload} + \subitem {functions.inc.php}, \hyperpage{24} \indexspace - \item {htdocs/lib/ldap.lib.php}, \hyperpage{3} - \item {htdocs/lib/mysql.lib.php}, \hyperpage{6} - \item {htdocs/lib/price.lib.php}, \hyperpage{7} - \item {htdocs/lib/thermometer.php}, \hyperpage{8} - \item {htdocs/lib/webcal.class.php}, \hyperpage{9} + \item {errno} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{10} + \item {error} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{11} \indexspace + \item {fetch\_\discretionary {-}{}{}array} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{11} + \item {fetch\_\discretionary {-}{}{}object} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{11} + \item {fetch\_\discretionary {-}{}{}row} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{11} + \item {francs} + \subitem {functions.inc.php}, \hyperpage{24} + \item {free} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{11} + \item {functions.inc.php} + \subitem {creer\_\discretionary {-}{}{}pass\_\discretionary {-}{}{}aleatoire}, + \hyperpage{22} + \subitem {dol\_\discretionary {-}{}{}delete\_\discretionary {-}{}{}file}, + \hyperpage{22} + \subitem {dolibarr\_\discretionary {-}{}{}del\_\discretionary {-}{}{}const}, + \hyperpage{22} + \subitem {dolibarr\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}head}, + \hyperpage{22} + \subitem {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}ca}, + \hyperpage{23} + \subitem {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}date}, + \hyperpage{23} + \subitem {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}object\_\discretionary {-}{}{}info}, + \hyperpage{23} + \subitem {dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}phone}, + \hyperpage{23} + \subitem {dolibarr\_\discretionary {-}{}{}set\_\discretionary {-}{}{}const}, + \hyperpage{24} + \subitem {dolibarr\_\discretionary {-}{}{}syslog}, \hyperpage{24} + \subitem {doliMoveFileUpload}, \hyperpage{24} + \subitem {francs}, \hyperpage{24} + \subitem {inctva}, \hyperpage{25} + \subitem {initialiser\_\discretionary {-}{}{}sel}, \hyperpage{25} + \subitem {logfile}, \hyperpage{25} + \subitem {loginfunction}, \hyperpage{25} + \subitem {price}, \hyperpage{26} + \subitem {print\_\discretionary {-}{}{}date\_\discretionary {-}{}{}select}, + \hyperpage{26} + \subitem {print\_\discretionary {-}{}{}duree\_\discretionary {-}{}{}select}, + \hyperpage{26} + \subitem {print\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}titre}, + \hyperpage{26} + \subitem {print\_\discretionary {-}{}{}fleche\_\discretionary {-}{}{}navigation}, + \hyperpage{27} + \subitem {print\_\discretionary {-}{}{}heure\_\discretionary {-}{}{}select}, + \hyperpage{27} + \subitem {print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre}, + \hyperpage{27} + \subitem {print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre\_\discretionary {-}{}{}new}, + \hyperpage{28} + \subitem {print\_\discretionary {-}{}{}oui\_\discretionary {-}{}{}non}, + \hyperpage{28} + \subitem {print\_\discretionary {-}{}{}titre}, \hyperpage{28} + \subitem {stat\_\discretionary {-}{}{}print}, \hyperpage{28} + \subitem {transcoS2L}, \hyperpage{29} + \subitem {tva}, \hyperpage{29} + + \indexspace + + \item {get\_\discretionary {-}{}{}next\_\discretionary {-}{}{}id} + \subitem {Webcal}, \hyperpage{16} + + \indexspace + + \item {htdocs/lib/CMailFile.class.php}, \hyperpage{19} + \item {htdocs/lib/functions.inc.php}, \hyperpage{20} + \item {htdocs/lib/ldap.lib.php}, \hyperpage{30} + \item {htdocs/lib/mysql.lib.php}, \hyperpage{33} + \item {htdocs/lib/price.lib.php}, \hyperpage{34} + \item {htdocs/lib/thermometer.php}, \hyperpage{35} + \item {htdocs/lib/webcal.class.php}, \hyperpage{36} + + \indexspace + + \item {idate} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{12} + \item {inctva} + \subitem {functions.inc.php}, \hyperpage{25} + \item {initialiser\_\discretionary {-}{}{}sel} + \subitem {functions.inc.php}, \hyperpage{25} + + \indexspace + + \item {last\_\discretionary {-}{}{}insert\_\discretionary {-}{}{}id} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{12} \item {ldap.lib.php} \subitem {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}, - \hyperpage{4} + \hyperpage{30} \subitem {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}, - \hyperpage{4} + \hyperpage{30} \subitem {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}, - \hyperpage{4} + \hyperpage{31} \subitem {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}, - \hyperpage{4} + \hyperpage{31} \subitem {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}, - \hyperpage{5} + \hyperpage{31} \subitem {dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}, - \hyperpage{5} + \hyperpage{31} + \item {list\_\discretionary {-}{}{}tables} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{12} + \item {logfile} + \subitem {functions.inc.php}, \hyperpage{25} + \item {loginfunction} + \subitem {functions.inc.php}, \hyperpage{25} \indexspace \item {moneyMeter} - \subitem {thermometer.php}, \hyperpage{8} + \subitem {thermometer.php}, \hyperpage{35} \indexspace + \item {num\_\discretionary {-}{}{}fields} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{12} + \item {num\_\discretionary {-}{}{}rows} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{13} + + \indexspace + + \item {pconnect} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{13} + \item {plimit} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{13} + \item {price} + \subitem {functions.inc.php}, \hyperpage{26} \item {price.lib.php} - \subitem {calcul\_\discretionary {-}{}{}price}, \hyperpage{7} + \subitem {calcul\_\discretionary {-}{}{}price}, \hyperpage{34} + \item {print\_\discretionary {-}{}{}date\_\discretionary {-}{}{}select} + \subitem {functions.inc.php}, \hyperpage{26} + \item {print\_\discretionary {-}{}{}duree\_\discretionary {-}{}{}select} + \subitem {functions.inc.php}, \hyperpage{26} + \item {print\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}titre} + \subitem {functions.inc.php}, \hyperpage{26} + \item {print\_\discretionary {-}{}{}fleche\_\discretionary {-}{}{}navigation} + \subitem {functions.inc.php}, \hyperpage{27} + \item {print\_\discretionary {-}{}{}heure\_\discretionary {-}{}{}select} + \subitem {functions.inc.php}, \hyperpage{27} + \item {print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre} + \subitem {functions.inc.php}, \hyperpage{27} + \item {print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre\_\discretionary {-}{}{}new} + \subitem {functions.inc.php}, \hyperpage{28} + \item {print\_\discretionary {-}{}{}oui\_\discretionary {-}{}{}non} + \subitem {functions.inc.php}, \hyperpage{28} + \item {print\_\discretionary {-}{}{}titre} + \subitem {functions.inc.php}, \hyperpage{28} + + \indexspace + + \item {query} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{13} + + \indexspace + + \item {result} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{14} + \item {rollback} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{14} + + \indexspace + + \item {select\_\discretionary {-}{}{}db} + \subitem {Doli\discretionary {-}{}{}Db}, \hyperpage{14} + \item {stat\_\discretionary {-}{}{}print} + \subitem {functions.inc.php}, \hyperpage{28} \indexspace \item {thermometer.php} - \subitem {moneyMeter}, \hyperpage{8} + \subitem {moneyMeter}, \hyperpage{35} + \item {transcoS2L} + \subitem {functions.inc.php}, \hyperpage{29} + \item {tva} + \subitem {functions.inc.php}, \hyperpage{29} + + \indexspace + + \item {Webcal}, \hyperpage{16} + \subitem {add}, \hyperpage{16} + \subitem {get\_\discretionary {-}{}{}next\_\discretionary {-}{}{}id}, + \hyperpage{16} \end{theindex} diff --git a/doc/dev/php/latex/refman.out b/doc/dev/php/latex/refman.out index e2291484f8a..c8b7589b290 100644 --- a/doc/dev/php/latex/refman.out +++ b/doc/dev/php/latex/refman.out @@ -1,8 +1,16 @@ -\BOOKMARK [0][-]{chapter.1}{dolibarr Index des fichiers}{} -\BOOKMARK [1][-]{section.1.1}{dolibarr Liste des fichiers}{chapter.1} -\BOOKMARK [0][-]{chapter.2}{dolibarr Documentation des fichiers}{} -\BOOKMARK [1][-]{section.2.1}{R\351f\351rence du fichier htdocs/lib/ldap.lib.php}{chapter.2} -\BOOKMARK [1][-]{section.2.2}{R\351f\351rence du fichier htdocs/lib/mysql.lib.php}{chapter.2} -\BOOKMARK [1][-]{section.2.3}{R\351f\351rence du fichier htdocs/lib/price.lib.php}{chapter.2} -\BOOKMARK [1][-]{section.2.4}{R\351f\351rence du fichier htdocs/lib/thermometer.php}{chapter.2} -\BOOKMARK [1][-]{section.2.5}{R\351f\351rence du fichier htdocs/lib/webcal.class.php}{chapter.2} +\BOOKMARK [0][-]{chapter.1}{dolibarr Index des classes}{} +\BOOKMARK [1][-]{section.1.1}{dolibarr Liste des classes}{chapter.1} +\BOOKMARK [0][-]{chapter.2}{dolibarr Index des fichiers}{} +\BOOKMARK [1][-]{section.2.1}{dolibarr Liste des fichiers}{chapter.2} +\BOOKMARK [0][-]{chapter.3}{dolibarr Documentation des classes}{} +\BOOKMARK [1][-]{section.3.1}{R\351f\351rence de la classe CMailFile}{chapter.3} +\BOOKMARK [1][-]{section.3.2}{R\351f\351rence de la classe DoliDb}{chapter.3} +\BOOKMARK [1][-]{section.3.3}{R\351f\351rence de la classe Webcal}{chapter.3} +\BOOKMARK [0][-]{chapter.4}{dolibarr Documentation des fichiers}{} +\BOOKMARK [1][-]{section.4.1}{R\351f\351rence du fichier htdocs/lib/CMailFile.class.php}{chapter.4} +\BOOKMARK [1][-]{section.4.2}{R\351f\351rence du fichier htdocs/lib/functions.inc.php}{chapter.4} +\BOOKMARK [1][-]{section.4.3}{R\351f\351rence du fichier htdocs/lib/ldap.lib.php}{chapter.4} +\BOOKMARK [1][-]{section.4.4}{R\351f\351rence du fichier htdocs/lib/mysql.lib.php}{chapter.4} +\BOOKMARK [1][-]{section.4.5}{R\351f\351rence du fichier htdocs/lib/price.lib.php}{chapter.4} +\BOOKMARK [1][-]{section.4.6}{R\351f\351rence du fichier htdocs/lib/thermometer.php}{chapter.4} +\BOOKMARK [1][-]{section.4.7}{R\351f\351rence du fichier htdocs/lib/webcal.class.php}{chapter.4} diff --git a/doc/dev/php/latex/refman.pdf b/doc/dev/php/latex/refman.pdf index dd9b4d460ca1d0895248aed58e4d779d7811c309..711281f67ce5161649dc6c4d4a5f94e04bda7afc 100644 GIT binary patch literal 142682 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

    ovrbr^qCZATDPiy*Y7f) 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 diff --git a/doc/dev/php/latex/refman.tex b/doc/dev/php/latex/refman.tex index 63854ad7ff3..75f43e68981 100644 --- a/doc/dev/php/latex/refman.tex +++ b/doc/dev/php/latex/refman.tex @@ -35,7 +35,7 @@ \vspace*{1cm} {\large G\'{e}n\'{e}r\'{e} par Doxygen 1.3.7}\\ \vspace*{0.5cm} -{\small Thu Jul 15 20:50:37 2004}\\ +{\small Fri Jul 16 00:31:06 2004}\\ \end{center} \end{titlepage} \clearemptydoublepage @@ -48,9 +48,13 @@ \chapter{dolibarr Index des fichiers} \input{files} \chapter{dolibarr Documentation des classes} -\input{classWebcal} +\input{classCMailFile} +\include{classDoliDb} +\include{classWebcal} \chapter{dolibarr Documentation des fichiers} -\input{ldap_8lib_8php} +\input{CMailFile_8class_8php} +\include{functions_8inc_8php} +\include{ldap_8lib_8php} \include{mysql_8lib_8php} \include{price_8lib_8php} \include{thermometer_8php} diff --git a/doc/dev/php/latex/refman.toc b/doc/dev/php/latex/refman.toc index 00a40d03538..3b3a010c944 100644 --- a/doc/dev/php/latex/refman.toc +++ b/doc/dev/php/latex/refman.toc @@ -1,25 +1,100 @@ \select@language {french} -\contentsline {chapter}{\numberline {1}dolibarr Index des fichiers}{1}{chapter.1} -\contentsline {section}{\numberline {1.1}dolibarr Liste des fichiers}{1}{section.1.1} -\contentsline {chapter}{\numberline {2}dolibarr Documentation des fichiers}{3}{chapter.2} -\contentsline {section}{\numberline {2.1}R\'{e}f\'{e}rence du fichier htdocs/lib/ldap.lib.php}{3}{section.2.1} -\contentsline {subsection}{\numberline {2.1.1}Description d\'{e}taill\'{e}e}{3}{subsection.2.1.1} -\contentsline {subsection}{\numberline {2.1.2}Documentation des fonctions}{4}{subsection.2.1.2} -\contentsline {subsubsection}{\numberline {2.1.2.1}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}{4}{subsubsection.2.1.2.1} -\contentsline {subsubsection}{\numberline {2.1.2.2}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}{4}{subsubsection.2.1.2.2} -\contentsline {subsubsection}{\numberline {2.1.2.3}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}{4}{subsubsection.2.1.2.3} -\contentsline {subsubsection}{\numberline {2.1.2.4}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}{4}{subsubsection.2.1.2.4} -\contentsline {subsubsection}{\numberline {2.1.2.5}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}{5}{subsubsection.2.1.2.5} -\contentsline {subsubsection}{\numberline {2.1.2.6}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}{5}{subsubsection.2.1.2.6} -\contentsline {section}{\numberline {2.2}R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php}{6}{section.2.2} -\contentsline {subsection}{\numberline {2.2.1}Description d\'{e}taill\'{e}e}{6}{subsection.2.2.1} -\contentsline {section}{\numberline {2.3}R\'{e}f\'{e}rence du fichier htdocs/lib/price.lib.php}{7}{section.2.3} -\contentsline {subsection}{\numberline {2.3.1}Description d\'{e}taill\'{e}e}{7}{subsection.2.3.1} -\contentsline {subsection}{\numberline {2.3.2}Documentation des fonctions}{7}{subsection.2.3.2} -\contentsline {subsubsection}{\numberline {2.3.2.1}calcul\_\discretionary {-}{}{}price}{7}{subsubsection.2.3.2.1} -\contentsline {section}{\numberline {2.4}R\'{e}f\'{e}rence du fichier htdocs/lib/thermometer.php}{8}{section.2.4} -\contentsline {subsection}{\numberline {2.4.1}Description d\'{e}taill\'{e}e}{8}{subsection.2.4.1} -\contentsline {subsection}{\numberline {2.4.2}Documentation des fonctions}{8}{subsection.2.4.2} -\contentsline {subsubsection}{\numberline {2.4.2.1}moneyMeter}{8}{subsubsection.2.4.2.1} -\contentsline {section}{\numberline {2.5}R\'{e}f\'{e}rence du fichier htdocs/lib/webcal.class.php}{9}{section.2.5} -\contentsline {subsection}{\numberline {2.5.1}Description d\'{e}taill\'{e}e}{9}{subsection.2.5.1} +\contentsline {chapter}{\numberline {1}dolibarr Index des classes}{1}{chapter.1} +\contentsline {section}{\numberline {1.1}dolibarr Liste des classes}{1}{section.1.1} +\contentsline {chapter}{\numberline {2}dolibarr Index des fichiers}{3}{chapter.2} +\contentsline {section}{\numberline {2.1}dolibarr Liste des fichiers}{3}{section.2.1} +\contentsline {chapter}{\numberline {3}dolibarr Documentation des classes}{5}{chapter.3} +\contentsline {section}{\numberline {3.1}R\'{e}f\'{e}rence de la classe CMail\discretionary {-}{}{}File}{5}{section.3.1} +\contentsline {subsection}{\numberline {3.1.1}Description d\'{e}taill\'{e}e}{5}{subsection.3.1.1} +\contentsline {subsection}{\numberline {3.1.2}Documentation des contructeurs et destructeur}{6}{subsection.3.1.2} +\contentsline {subsubsection}{\numberline {3.1.2.1}CMailFile}{6}{subsubsection.3.1.2.1} +\contentsline {section}{\numberline {3.2}R\'{e}f\'{e}rence de la classe Doli\discretionary {-}{}{}Db}{7}{section.3.2} +\contentsline {subsection}{\numberline {3.2.1}Description d\'{e}taill\'{e}e}{8}{subsection.3.2.1} +\contentsline {subsection}{\numberline {3.2.2}Documentation des contructeurs et destructeur}{8}{subsection.3.2.2} +\contentsline {subsubsection}{\numberline {3.2.2.1}DoliDb}{8}{subsubsection.3.2.2.1} +\contentsline {subsection}{\numberline {3.2.3}Documentation des fonctions membres}{9}{subsection.3.2.3} +\contentsline {subsubsection}{\numberline {3.2.3.1}affected\_\discretionary {-}{}{}rows}{9}{subsubsection.3.2.3.1} +\contentsline {subsubsection}{\numberline {3.2.3.2}begin}{9}{subsubsection.3.2.3.2} +\contentsline {subsubsection}{\numberline {3.2.3.3}clone}{9}{subsubsection.3.2.3.3} +\contentsline {subsubsection}{\numberline {3.2.3.4}close}{9}{subsubsection.3.2.3.4} +\contentsline {subsubsection}{\numberline {3.2.3.5}commit}{10}{subsubsection.3.2.3.5} +\contentsline {subsubsection}{\numberline {3.2.3.6}connect}{10}{subsubsection.3.2.3.6} +\contentsline {subsubsection}{\numberline {3.2.3.7}create\_\discretionary {-}{}{}db}{10}{subsubsection.3.2.3.7} +\contentsline {subsubsection}{\numberline {3.2.3.8}errno}{11}{subsubsection.3.2.3.8} +\contentsline {subsubsection}{\numberline {3.2.3.9}error}{11}{subsubsection.3.2.3.9} +\contentsline {subsubsection}{\numberline {3.2.3.10}fetch\_\discretionary {-}{}{}array}{11}{subsubsection.3.2.3.10} +\contentsline {subsubsection}{\numberline {3.2.3.11}fetch\_\discretionary {-}{}{}object}{11}{subsubsection.3.2.3.11} +\contentsline {subsubsection}{\numberline {3.2.3.12}fetch\_\discretionary {-}{}{}row}{11}{subsubsection.3.2.3.12} +\contentsline {subsubsection}{\numberline {3.2.3.13}free}{12}{subsubsection.3.2.3.13} +\contentsline {subsubsection}{\numberline {3.2.3.14}idate}{12}{subsubsection.3.2.3.14} +\contentsline {subsubsection}{\numberline {3.2.3.15}last\_\discretionary {-}{}{}insert\_\discretionary {-}{}{}id}{12}{subsubsection.3.2.3.15} +\contentsline {subsubsection}{\numberline {3.2.3.16}list\_\discretionary {-}{}{}tables}{12}{subsubsection.3.2.3.16} +\contentsline {subsubsection}{\numberline {3.2.3.17}num\_\discretionary {-}{}{}fields}{13}{subsubsection.3.2.3.17} +\contentsline {subsubsection}{\numberline {3.2.3.18}num\_\discretionary {-}{}{}rows}{13}{subsubsection.3.2.3.18} +\contentsline {subsubsection}{\numberline {3.2.3.19}pconnect}{13}{subsubsection.3.2.3.19} +\contentsline {subsubsection}{\numberline {3.2.3.20}plimit}{13}{subsubsection.3.2.3.20} +\contentsline {subsubsection}{\numberline {3.2.3.21}query}{14}{subsubsection.3.2.3.21} +\contentsline {subsubsection}{\numberline {3.2.3.22}result}{14}{subsubsection.3.2.3.22} +\contentsline {subsubsection}{\numberline {3.2.3.23}rollback}{14}{subsubsection.3.2.3.23} +\contentsline {subsubsection}{\numberline {3.2.3.24}select\_\discretionary {-}{}{}db}{15}{subsubsection.3.2.3.24} +\contentsline {section}{\numberline {3.3}R\'{e}f\'{e}rence de la classe Webcal}{16}{section.3.3} +\contentsline {subsection}{\numberline {3.3.1}Description d\'{e}taill\'{e}e}{16}{subsection.3.3.1} +\contentsline {subsection}{\numberline {3.3.2}Documentation des fonctions membres}{16}{subsection.3.3.2} +\contentsline {subsubsection}{\numberline {3.3.2.1}add}{16}{subsubsection.3.3.2.1} +\contentsline {subsubsection}{\numberline {3.3.2.2}get\_\discretionary {-}{}{}next\_\discretionary {-}{}{}id}{16}{subsubsection.3.3.2.2} +\contentsline {chapter}{\numberline {4}dolibarr Documentation des fichiers}{19}{chapter.4} +\contentsline {section}{\numberline {4.1}R\'{e}f\'{e}rence du fichier htdocs/lib/CMail\discretionary {-}{}{}File.class.php}{19}{section.4.1} +\contentsline {subsection}{\numberline {4.1.1}Description d\'{e}taill\'{e}e}{19}{subsection.4.1.1} +\contentsline {section}{\numberline {4.2}R\'{e}f\'{e}rence du fichier htdocs/lib/functions.inc.php}{20}{section.4.2} +\contentsline {subsection}{\numberline {4.2.1}Description d\'{e}taill\'{e}e}{21}{subsection.4.2.1} +\contentsline {subsection}{\numberline {4.2.2}Documentation des fonctions}{22}{subsection.4.2.2} +\contentsline {subsubsection}{\numberline {4.2.2.1}creer\_\discretionary {-}{}{}pass\_\discretionary {-}{}{}aleatoire}{22}{subsubsection.4.2.2.1} +\contentsline {subsubsection}{\numberline {4.2.2.2}dol\_\discretionary {-}{}{}delete\_\discretionary {-}{}{}file}{22}{subsubsection.4.2.2.2} +\contentsline {subsubsection}{\numberline {4.2.2.3}dolibarr\_\discretionary {-}{}{}del\_\discretionary {-}{}{}const}{22}{subsubsection.4.2.2.3} +\contentsline {subsubsection}{\numberline {4.2.2.4}dolibarr\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}head}{22}{subsubsection.4.2.2.4} +\contentsline {subsubsection}{\numberline {4.2.2.5}dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}ca}{23}{subsubsection.4.2.2.5} +\contentsline {subsubsection}{\numberline {4.2.2.6}dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}date}{23}{subsubsection.4.2.2.6} +\contentsline {subsubsection}{\numberline {4.2.2.7}dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}object\_\discretionary {-}{}{}info}{23}{subsubsection.4.2.2.7} +\contentsline {subsubsection}{\numberline {4.2.2.8}dolibarr\_\discretionary {-}{}{}print\_\discretionary {-}{}{}phone}{23}{subsubsection.4.2.2.8} +\contentsline {subsubsection}{\numberline {4.2.2.9}dolibarr\_\discretionary {-}{}{}set\_\discretionary {-}{}{}const}{24}{subsubsection.4.2.2.9} +\contentsline {subsubsection}{\numberline {4.2.2.10}dolibarr\_\discretionary {-}{}{}syslog}{24}{subsubsection.4.2.2.10} +\contentsline {subsubsection}{\numberline {4.2.2.11}doliMoveFileUpload}{24}{subsubsection.4.2.2.11} +\contentsline {subsubsection}{\numberline {4.2.2.12}francs}{25}{subsubsection.4.2.2.12} +\contentsline {subsubsection}{\numberline {4.2.2.13}inctva}{25}{subsubsection.4.2.2.13} +\contentsline {subsubsection}{\numberline {4.2.2.14}initialiser\_\discretionary {-}{}{}sel}{25}{subsubsection.4.2.2.14} +\contentsline {subsubsection}{\numberline {4.2.2.15}logfile}{25}{subsubsection.4.2.2.15} +\contentsline {subsubsection}{\numberline {4.2.2.16}loginfunction}{26}{subsubsection.4.2.2.16} +\contentsline {subsubsection}{\numberline {4.2.2.17}price}{26}{subsubsection.4.2.2.17} +\contentsline {subsubsection}{\numberline {4.2.2.18}print\_\discretionary {-}{}{}date\_\discretionary {-}{}{}select}{26}{subsubsection.4.2.2.18} +\contentsline {subsubsection}{\numberline {4.2.2.19}print\_\discretionary {-}{}{}duree\_\discretionary {-}{}{}select}{26}{subsubsection.4.2.2.19} +\contentsline {subsubsection}{\numberline {4.2.2.20}print\_\discretionary {-}{}{}fiche\_\discretionary {-}{}{}titre}{27}{subsubsection.4.2.2.20} +\contentsline {subsubsection}{\numberline {4.2.2.21}print\_\discretionary {-}{}{}fleche\_\discretionary {-}{}{}navigation}{27}{subsubsection.4.2.2.21} +\contentsline {subsubsection}{\numberline {4.2.2.22}print\_\discretionary {-}{}{}heure\_\discretionary {-}{}{}select}{27}{subsubsection.4.2.2.22} +\contentsline {subsubsection}{\numberline {4.2.2.23}print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre}{27}{subsubsection.4.2.2.23} +\contentsline {subsubsection}{\numberline {4.2.2.24}print\_\discretionary {-}{}{}liste\_\discretionary {-}{}{}field\_\discretionary {-}{}{}titre\_\discretionary {-}{}{}new}{28}{subsubsection.4.2.2.24} +\contentsline {subsubsection}{\numberline {4.2.2.25}print\_\discretionary {-}{}{}oui\_\discretionary {-}{}{}non}{28}{subsubsection.4.2.2.25} +\contentsline {subsubsection}{\numberline {4.2.2.26}print\_\discretionary {-}{}{}titre}{28}{subsubsection.4.2.2.26} +\contentsline {subsubsection}{\numberline {4.2.2.27}stat\_\discretionary {-}{}{}print}{29}{subsubsection.4.2.2.27} +\contentsline {subsubsection}{\numberline {4.2.2.28}transcoS2L}{29}{subsubsection.4.2.2.28} +\contentsline {subsubsection}{\numberline {4.2.2.29}tva}{29}{subsubsection.4.2.2.29} +\contentsline {section}{\numberline {4.3}R\'{e}f\'{e}rence du fichier htdocs/lib/ldap.lib.php}{30}{section.4.3} +\contentsline {subsection}{\numberline {4.3.1}Description d\'{e}taill\'{e}e}{30}{subsection.4.3.1} +\contentsline {subsection}{\numberline {4.3.2}Documentation des fonctions}{30}{subsection.4.3.2} +\contentsline {subsubsection}{\numberline {4.3.2.1}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}bind}{30}{subsubsection.4.3.2.1} +\contentsline {subsubsection}{\numberline {4.3.2.2}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}connect}{31}{subsubsection.4.3.2.2} +\contentsline {subsubsection}{\numberline {4.3.2.3}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}getversion}{31}{subsubsection.4.3.2.3} +\contentsline {subsubsection}{\numberline {4.3.2.4}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}setversion}{31}{subsubsection.4.3.2.4} +\contentsline {subsubsection}{\numberline {4.3.2.5}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unacc}{31}{subsubsection.4.3.2.5} +\contentsline {subsubsection}{\numberline {4.3.2.6}dolibarr\_\discretionary {-}{}{}ldap\_\discretionary {-}{}{}unbind}{32}{subsubsection.4.3.2.6} +\contentsline {section}{\numberline {4.4}R\'{e}f\'{e}rence du fichier htdocs/lib/mysql.lib.php}{33}{section.4.4} +\contentsline {subsection}{\numberline {4.4.1}Description d\'{e}taill\'{e}e}{33}{subsection.4.4.1} +\contentsline {section}{\numberline {4.5}R\'{e}f\'{e}rence du fichier htdocs/lib/price.lib.php}{34}{section.4.5} +\contentsline {subsection}{\numberline {4.5.1}Description d\'{e}taill\'{e}e}{34}{subsection.4.5.1} +\contentsline {subsection}{\numberline {4.5.2}Documentation des fonctions}{34}{subsection.4.5.2} +\contentsline {subsubsection}{\numberline {4.5.2.1}calcul\_\discretionary {-}{}{}price}{34}{subsubsection.4.5.2.1} +\contentsline {section}{\numberline {4.6}R\'{e}f\'{e}rence du fichier htdocs/lib/thermometer.php}{35}{section.4.6} +\contentsline {subsection}{\numberline {4.6.1}Description d\'{e}taill\'{e}e}{35}{subsection.4.6.1} +\contentsline {subsection}{\numberline {4.6.2}Documentation des fonctions}{35}{subsection.4.6.2} +\contentsline {subsubsection}{\numberline {4.6.2.1}moneyMeter}{35}{subsubsection.4.6.2.1} +\contentsline {section}{\numberline {4.7}R\'{e}f\'{e}rence du fichier htdocs/lib/webcal.class.php}{36}{section.4.7} +\contentsline {subsection}{\numberline {4.7.1}Description d\'{e}taill\'{e}e}{36}{subsection.4.7.1} diff --git a/doc/dev/php/latex/thermometer_8php.aux b/doc/dev/php/latex/thermometer_8php.aux index ee0b031b7f2..86dfb87c879 100644 --- a/doc/dev/php/latex/thermometer_8php.aux +++ b/doc/dev/php/latex/thermometer_8php.aux @@ -1,12 +1,12 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {2.4}R\'{e}f\'{e}rence du fichier htdocs/lib/thermometer.php}{8}{section.2.4}} -\newlabel{thermometer_8php}{{2.4}{8}{R\'{e}f\'{e}rence du fichier htdocs/lib/thermometer.php\relax }{section.2.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}Description d\'{e}taill\'{e}e}{8}{subsection.2.4.1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}Documentation des fonctions}{8}{subsection.2.4.2}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.2.1}moneyMeter}{8}{subsubsection.2.4.2.1}} -\newlabel{thermometer_8php_a0}{{2.4.2.1}{8}{moneyMeter\relax }{subsubsection.2.4.2.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.6}R\'{e}f\'{e}rence du fichier htdocs/lib/thermometer.php}{35}{section.4.6}} +\newlabel{thermometer_8php}{{4.6}{35}{R\'{e}f\'{e}rence du fichier htdocs/lib/thermometer.php\relax }{section.4.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.1}Description d\'{e}taill\'{e}e}{35}{subsection.4.6.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.2}Documentation des fonctions}{35}{subsection.4.6.2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2.1}moneyMeter}{35}{subsubsection.4.6.2.1}} +\newlabel{thermometer_8php_a0}{{4.6.2.1}{35}{moneyMeter\relax }{subsubsection.4.6.2.1}{}} \@setckpt{thermometer_8php}{ -\setcounter{page}{9} +\setcounter{page}{36} \setcounter{equation}{0} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -15,8 +15,8 @@ \setcounter{footnote}{0} \setcounter{mpfootnote}{0} \setcounter{part}{0} -\setcounter{chapter}{2} -\setcounter{section}{4} +\setcounter{chapter}{4} +\setcounter{section}{6} \setcounter{subsection}{2} \setcounter{subsubsection}{1} \setcounter{paragraph}{0} diff --git a/doc/dev/php/latex/webcal_8class_8php.aux b/doc/dev/php/latex/webcal_8class_8php.aux index 1797122cd96..be01a3964c7 100644 --- a/doc/dev/php/latex/webcal_8class_8php.aux +++ b/doc/dev/php/latex/webcal_8class_8php.aux @@ -1,9 +1,9 @@ \relax -\@writefile{toc}{\contentsline {section}{\numberline {2.5}R\'{e}f\'{e}rence du fichier htdocs/lib/webcal.class.php}{9}{section.2.5}} -\newlabel{webcal_8class_8php}{{2.5}{9}{R\'{e}f\'{e}rence du fichier htdocs/lib/webcal.class.php\relax }{section.2.5}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.1}Description d\'{e}taill\'{e}e}{9}{subsection.2.5.1}} +\@writefile{toc}{\contentsline {section}{\numberline {4.7}R\'{e}f\'{e}rence du fichier htdocs/lib/webcal.class.php}{36}{section.4.7}} +\newlabel{webcal_8class_8php}{{4.7}{36}{R\'{e}f\'{e}rence du fichier htdocs/lib/webcal.class.php\relax }{section.4.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.7.1}Description d\'{e}taill\'{e}e}{36}{subsection.4.7.1}} \@setckpt{webcal_8class_8php}{ -\setcounter{page}{10} +\setcounter{page}{37} \setcounter{equation}{0} \setcounter{enumi}{0} \setcounter{enumii}{0} @@ -12,8 +12,8 @@ \setcounter{footnote}{0} \setcounter{mpfootnote}{0} \setcounter{part}{0} -\setcounter{chapter}{2} -\setcounter{section}{5} +\setcounter{chapter}{4} +\setcounter{section}{7} \setcounter{subsection}{1} \setcounter{subsubsection}{0} \setcounter{paragraph}{0} diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index 58d816d3872..38965f95bef 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -18,18 +18,26 @@ to chunk_split */ /* Note: if you don't have base64_encode on your sytem it will not work */ -/* - Éric Seigne 2004.01.08 - - ajout de la gestion du Cc - - ajout de l'expédition de plusieurs fichiers +/*! \file CMailFile.class.php + \brief Classe permettant d'envoyer des attachements par mail + \author Dan Potter. + \author Eric Seigne + \author Laurent Destailleur. + \version 1.2. +*/ - Laurent Destailleur 2004.02.10 - - Correction d'un disfonctionnement suite à modif précédente sur la gestion - des attachements multi-fichiers +/*! \class CMailFile + \brief Classe permettant d'envoyer des attachements par mail + \remarks Eric Seigne 2004.01.08 + \remarks ajout de la gestion des cc: + \remarks ajout de l'expedition de plusieurs fichiers + + \remarks Laurent Destailleur 2004.02.10 + \remarks correction d'un disfonctionnement à la gestion des attachements multiples */ // simple class that encapsulates mail() with addition of mime file attachment. -class CMailFile +class CMailFile { var $subject; var $addr_to; @@ -39,7 +47,19 @@ class CMailFile var $mime_headers; var $mime_boundary = "--==================_846811060==_"; var $smtp_headers; - + + /*! + \brief CMailFile + \param subject + \param to + \param from + \param msg + \param filename_list + \param mimetype_list + \param mimefilename_list + \param addr_cc +*/ + // CMail("sujet","email_to","email_from","email_msg",tableau du path de fichiers,tableau de type mime,tableau de noms fichiers,"chaine cc") function CMailFile($subject,$to,$from,$msg,$filename_list,$mimetype_list,$mimefilename_list,$addr_cc = "") { diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 21dc508ed8b..8333fae518d 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -23,21 +23,44 @@ * */ +/*! \file functions.inc.php + \brief Ensemble de fonctions de base de dolibarr sous forme d'include + \author Rodolphe Quiedeville + \author Jean-Louis Bergamo + \author Laurent Destailleur + \version 1.2. + + Ensemble de fonctions de base de dolibarr sous forme d'include +*/ + $yn[0] = "non"; $yn[1] = "oui"; -Function dolibarr_syslog($message) +/*! + \brief envoi des messages dolibarr dans syslog + \param message message a envoyer a syslog +*/ + +function dolibarr_syslog($message) { define_syslog_variables(); openlog("dolibarr", LOG_PID | LOG_PERROR, LOG_USER); # LOG_USER au lieu de LOG_LOCAL0 car non accepté par tous les PHP - + syslog(LOG_WARNING, $message); closelog(); } -Function dolibarr_fiche_head($links, $active=0) +/*! + \brief header d'une fiche + \param links liens + \param active + \remarks active = 0 par défaut +*/ + + +function dolibarr_fiche_head($links, $active=0) { print "

    \n"; @@ -64,10 +87,20 @@ Function dolibarr_fiche_head($links, $active=0) print "
    \n
    \n"; } +/*! + \brief insertion d'une constantes dans la base de données + \param db base de données + \param name nom de la constante + \param value valeur de la constante + \param type type de constante + \param visible la constante est t'elle visible + \param note explication de la constante + \remarks type = chaine par défaut + \remarks visible = 0 par défaut + \remarks retourne 0 pour raté, 1 pour réussi +*/ -Function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='') -// Ajoute ou modifie un parametre dans la table llx_const -// Retour: 0=KO, 1=OK +function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='') { $sql = "REPLACE INTO llx_const SET name = '$name', value='$value', visible=$visible, type='$type', note='$note'"; @@ -81,12 +114,17 @@ Function dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $not } } -Function dolibarr_del_const($db, $name) -// Supprime un parametre de la table llx_const -// Retour: 0=KO, 1=OK +/*! + \brief effacement d'une constante dans la base de données + \param db base de données + \param name nom de la constante + \remarks retourne 0 pour raté, 1 pour réussi +*/ + +function dolibarr_del_const($db, $name) { $sql = "DELETE FROM llx_const WHERE name='$name'"; - + if ($db->query($sql)) { return 1; @@ -97,9 +135,14 @@ Function dolibarr_del_const($db, $name) } } -Function dolibarr_print_ca($ca) +/*! + \brief formattage des nombres + \param ca valeur a formater + \return cat valeur formatée +*/ + +function dolibarr_print_ca($ca) { - // Permet d'avoir une fonction commune du formatage des nombres if ($ca > 1000) { $cat = round(($ca / 1000),2); @@ -110,7 +153,7 @@ Function dolibarr_print_ca($ca) $cat = round($ca,2); $cat = "$cat euros"; } - + if ($ca > 1000000) { $cat = round(($ca / 1000000),2); @@ -120,13 +163,25 @@ Function dolibarr_print_ca($ca) return $cat; } -Function dolibarr_print_date($time,$format="%d %b %Y") +/*! + \brief formattage de la date + \param time date + \param format format de la date "%d %b %Y" + \remarks retourne la date formatée +*/ + +function dolibarr_print_date($time,$format="%d %b %Y") { - // Permet d'avoir une fonction commune du formatage d'affichage des date return strftime($format,$time); } -Function dolibarr_print_object_info($object) + +/*! + \brief affiche les informations d'un objet + \param object objet a afficher +*/ + +function dolibarr_print_object_info($object) { print "Créé par : " . $object->user_creation->fullname . '
    '; print "Date de création : " . strftime("%A %d %B %Y %H:%M:%S",$object->date_creation) . '
    '; @@ -134,9 +189,15 @@ Function dolibarr_print_object_info($object) print "Date de modification : " . strftime("%A %d %B %Y %H:%M:%S",$object->date_modification) . '
    '; } -Function dolibarr_print_phone($phone) +/*! + \brief formattage du telephone + \param phone numéro de telephone à formater + \return phone numéro de téléphone formaté + \remarks net tient pas en compte le format belge 02/211 34 83 +*/ + +function dolibarr_print_phone($phone) { - // Permet d'avoir une fonction commune du formatage d'affichage des tel/fax if (strlen(trim($phone)) == 10) { return substr($phone,0,2)." ".substr($phone,2,2)." ".substr($phone,4,2)." ".substr($phone,6,2)." ".substr($phone,8,2); @@ -147,76 +208,78 @@ Function dolibarr_print_phone($phone) } } -Function img_file($alt = "Voir") +function img_file($alt = "Voir") { return ''.$alt.''; } -Function img_file_new($alt = "Voir") +function img_file_new($alt = "Voir") { return ''.$alt.''; } -Function img_pdf($alt = "Voir") +function img_pdf($alt = "Voir") { return ''.$alt.''; } -Function img_warning($alt = "Voir") +function img_warning($alt = "Voir") { return ''.$alt.''; } -Function img_delete($alt = "Supprimer") +function img_delete($alt = "Supprimer") { return ''.$alt.''; } -Function img_info($alt = "Informations") +function img_info($alt = "Informations") { return ''.$alt.''; } -Function img_edit($alt = "Modifier") +function img_edit($alt = "Modifier") { return ''.$alt.''; } -Function img_phone_in($alt = "Modifier") +function img_phone_in($alt = "Modifier") { return ''.$alt.''; } -Function img_phone_out($alt = "Modifier") +function img_phone_out($alt = "Modifier") { return ''.$alt.''; } -Function img_alerte($alt = "Alerte") +function img_alerte($alt = "Alerte") { return ''.$alt.''; } -Function img_next($alt = "Suivant") +function img_next($alt = "Suivant") { return ''.$alt.''; } -Function img_previous($alt = "Précédent") +function img_previous($alt = "Précédent") { return ''.$alt.''; } +/*! + \brief fonction de login + \remarks if faut changer le code html dans la fonction pour changer le design + \remarks le css devrait etre pris dans le repetoire de dolibarr et ne pas etre en dur ! +*/ -function loginFunction() +function loginfunction() { - /** - * Change the HTML output so that it fits to your - * application. */ print ''; print "\nDolibarr Authentification"; print '