1 |
fraynaud |
88 |
<?php |
2 |
|
|
/** |
3 |
|
|
* |
4 |
|
|
* |
5 |
|
|
* @package openmairie_exemple |
6 |
|
|
* @version SVN : $Id: pdflettretype.php 278 2010-11-30 07:12:41Z fmichon $ |
7 |
|
|
*/ |
8 |
|
|
// fpdf ne traite pas UTF8 |
9 |
|
|
// donc il faut utiliser decode |
10 |
|
|
include ("../dyn/locales.inc.php"); |
11 |
|
|
require_once "../obj/utils.class.php"; |
12 |
|
|
$f = new utils("nohtml"); |
13 |
|
|
|
14 |
|
|
/** |
15 |
|
|
* |
16 |
|
|
*/ |
17 |
|
|
// Nom de l'objet metier |
18 |
|
|
(isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = ""); |
19 |
|
|
(isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = ""); |
20 |
|
|
|
21 |
|
|
/** |
22 |
|
|
* en utilisant une table courrier (par exemple) |
23 |
|
|
* on peut typer les courriers |
24 |
|
|
* par destinataire |
25 |
|
|
* suivant une date |
26 |
|
|
* avec un complement |
27 |
|
|
* voir openfoncier ou openpersonnalite |
28 |
|
|
* |
29 |
|
|
* cette table est desactivee dans l exemple |
30 |
|
|
* |
31 |
|
|
*/ |
32 |
|
|
|
33 |
|
|
|
34 |
|
|
$sql_courrier="select * from instruction where instruction=".$idx; |
35 |
|
|
$res = $f->db->query($sql_courrier); |
36 |
|
|
$f->isDatabaseError($res); |
37 |
|
|
while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){ |
38 |
|
|
$obj=$row['lettretype']; |
39 |
|
|
//if(CHARSET=='UTF8'){ |
40 |
|
|
// $titre= utf8_decode($lettretype["titre"]); |
41 |
|
|
$destinataire=$row['destinataire']; // *** |
42 |
|
|
$datecourrier=$row['datecourrier']; |
43 |
|
|
$complement=$row['complement']; |
44 |
|
|
$complement2=$row['complement2']; |
45 |
|
|
$complement3=$row['complement3']; |
46 |
|
|
$complement4=$row['complement4']; |
47 |
|
|
$complement5=$row['complement5']; |
48 |
|
|
$complement6=$row['complement6']; |
49 |
|
|
$complement7=$row['complement7']; |
50 |
|
|
$complement8=$row['complement8']; |
51 |
|
|
$complement9=$row['complement9']; |
52 |
|
|
$complement10=$row['complement10']; |
53 |
|
|
$complement11=$row['complement11']; |
54 |
|
|
$complement12=$row['complement12']; |
55 |
|
|
$complement13=$row['complement13']; |
56 |
|
|
$complement14=$row['complement14']; |
57 |
|
|
$complement15=$row['complement15']; |
58 |
|
|
} |
59 |
|
|
|
60 |
|
|
// ligne a desactiver ========================================================================== |
61 |
|
|
//$destinataire =""; |
62 |
|
|
//$datecourrier=date('d/m/Y'); |
63 |
|
|
//$complement="<-Ici le complement->"; |
64 |
|
|
// ============================================================================================= |
65 |
|
|
|
66 |
|
|
/* format a voir |
67 |
|
|
if ($f->formatDate=="AAAA-MM-JJ"){ |
68 |
|
|
$valTemp=explode("-",$datecourrier); |
69 |
|
|
$datecourrier = $valTemp[2]."/".$valTemp[1]."/".$valTemp[0]; |
70 |
|
|
} |
71 |
|
|
*/ |
72 |
|
|
|
73 |
|
|
/** |
74 |
|
|
* acces table om_lettretype |
75 |
|
|
*/ |
76 |
|
|
$niveau=''; |
77 |
|
|
// requete SQL |
78 |
|
|
$sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj |
79 |
|
|
$sql.= " and actif ='Oui'"; |
80 |
|
|
$sql.= " and om_collectivite ='".$_SESSION['collectivite']."'"; |
81 |
|
|
$res1 = $f->db->query($sql); |
82 |
|
|
$f->isDatabaseError($res1); |
83 |
|
|
if ($res1->numrows()==0){ |
84 |
|
|
$sql="select om_collectivite from ".DB_PREFIXE."om_collectivite where niveau ='2'"; |
85 |
|
|
$niveau=$f->db->getOne($sql); |
86 |
|
|
//$res1->free(); |
87 |
|
|
$sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj |
88 |
|
|
$sql.= " and actif ='Oui'"; |
89 |
|
|
$sql.= " and om_collectivite ='".$niveau."'"; |
90 |
|
|
$res1 = $f->db->query($sql); |
91 |
|
|
$f->isDatabaseError($res1); |
92 |
|
|
} |
93 |
|
|
|
94 |
|
|
if ($res1->numrows()==0){ |
95 |
|
|
//$res1->free(); |
96 |
|
|
$sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj |
97 |
|
|
$sql.= " and om_collectivite ='".$niveau."'"; |
98 |
|
|
$res1 = $f->db->query($sql); |
99 |
|
|
$f->isDatabaseError($res1); |
100 |
|
|
} |
101 |
|
|
|
102 |
|
|
set_time_limit(180); |
103 |
|
|
//require_once PATH_FPDF."fpdf.php"; |
104 |
|
|
require_once "../php/fpdf/fpdf.php"; // *** mettre le path FPDF |
105 |
|
|
$collectivite = $f->collectivite; // bug array vide |
106 |
|
|
|
107 |
|
|
|
108 |
|
|
class PDF extends FPDF { |
109 |
|
|
/** |
110 |
|
|
* Pied de page |
111 |
|
|
*/ |
112 |
|
|
function Footer() { |
113 |
|
|
// NUMERO DE PAGE |
114 |
|
|
//Positionnement à 1,5 cm du bas |
115 |
|
|
$this->SetY(-15); |
116 |
|
|
// Police Arial italique 8 |
117 |
|
|
$this->SetFont('Arial','I',8); |
118 |
|
|
// Numero de page |
119 |
|
|
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); |
120 |
|
|
} |
121 |
|
|
|
122 |
|
|
} |
123 |
|
|
|
124 |
|
|
|
125 |
|
|
// INSTANCE PDF ================================================ |
126 |
|
|
// orientation P= portrait L=paysage |
127 |
|
|
// unite mm (milimetre) |
128 |
|
|
// format A4 A3 |
129 |
|
|
// ============================================================= |
130 |
|
|
$unite="mm"; |
131 |
|
|
|
132 |
|
|
while ($lettretype =& $res1->fetchRow(DB_FETCHMODE_ASSOC)) { |
133 |
|
|
|
134 |
|
|
$pdf=new PDF($lettretype["orientation"],$unite,$lettretype["format"]); |
135 |
|
|
// methode fpdf calcul nombre de page |
136 |
|
|
$pdf->AliasNbPages(); |
137 |
|
|
// methode de creation de page |
138 |
|
|
$pdf->AddPage(); |
139 |
|
|
// police ====================================================== |
140 |
|
|
// setFont 0 = times, arial |
141 |
|
|
// 1 = I B ou '' |
142 |
|
|
// 2 = 8 .... |
143 |
|
|
// affichage image ============================================= |
144 |
|
|
// image 0 = nom |
145 |
|
|
// 1 = left |
146 |
|
|
// 2 = top |
147 |
|
|
// 3 = width 0=calcul auto |
148 |
|
|
// 4 = hauteur 0=calcul auto |
149 |
|
|
// 5 = type image rien=exetension du fichier |
150 |
|
|
// 6 = lien |
151 |
|
|
// setXY (left,top) ============================================= |
152 |
|
|
// affichage multicell ========================================== |
153 |
|
|
// multicell 0 = width =0 left->droite |
154 |
|
|
// 1 = hauteur de la cellule |
155 |
|
|
// 2 = texte |
156 |
|
|
// 3 = bordure (0 ou 1) |
157 |
|
|
// 4 = align (L C R J) |
158 |
|
|
// 5 = 0 fd transparent |
159 |
|
|
// 1 couleur (parametre à rajouter) |
160 |
|
|
// ============================================================== |
161 |
|
|
$pdf->Image($f->getPathFolderTrs().$lettretype["logo"], |
162 |
|
|
$lettretype["logoleft"], |
163 |
|
|
$lettretype["logotop"], |
164 |
|
|
0, |
165 |
|
|
0, |
166 |
|
|
'', |
167 |
|
|
''); |
168 |
|
|
// variables statiques |
169 |
|
|
$sql = $lettretype['om_sql']; |
170 |
|
|
$titre= $lettretype["titre"]; |
171 |
|
|
$corps= $lettretype["corps"]; |
172 |
|
|
|
173 |
|
|
|
174 |
|
|
// |
175 |
|
|
include("../dyn/varlettretypepdf.inc"); |
176 |
|
|
// |
177 |
|
|
$res = $f->db->query($sql); |
178 |
|
|
$f->isDatabaseError($res); |
179 |
|
|
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) { |
180 |
|
|
// titre |
181 |
|
|
$temp = explode("[",$lettretype["titre"]); |
182 |
|
|
for($i=1;$i<sizeof($temp);$i++){ |
183 |
|
|
$temp1 = explode("]",$temp[$i]); |
184 |
|
|
$titre=str_replace("[".$temp1[0]."]",$row[$temp1[0]],$titre); |
185 |
|
|
} |
186 |
|
|
// |
187 |
|
|
//************************************************ |
188 |
|
|
// traitement attribut affichage <b> dans titre * |
189 |
|
|
// aout 2008 * |
190 |
|
|
//************************************************ |
191 |
|
|
$pos_t=""; |
192 |
|
|
$pos_t = strpos($titre, "<b>"); |
193 |
|
|
if(CHARSET=='UTF8') |
194 |
|
|
$titre= utf8_decode($titre); |
195 |
|
|
if ($pos_t === false) { |
196 |
|
|
// compatibilite :aucun attribut affichage <b> dans corps |
197 |
|
|
//*************************************************************************** |
198 |
|
|
if(trim($titre)!="") { |
199 |
|
|
$pdf->SetFont($lettretype["titrefont"], |
200 |
|
|
$lettretype["titreattribut"], |
201 |
|
|
$lettretype["titretaille"]); |
202 |
|
|
$pdf->SetXY($lettretype["titreleft"], |
203 |
|
|
$lettretype["titretop"]); |
204 |
|
|
$pdf->MultiCell($lettretype["titrelargeur"], |
205 |
|
|
$lettretype["titrehauteur"], |
206 |
|
|
$titre, |
207 |
|
|
$lettretype["titrebordure"], |
208 |
|
|
$lettretype["titrealign"], |
209 |
|
|
0); |
210 |
|
|
} |
211 |
|
|
//**************************************************************************** |
212 |
|
|
// attribut affichage <b> present dans titre |
213 |
|
|
}else{ |
214 |
|
|
$pdf->SetY($lettretype["titretop"]); |
215 |
|
|
$tmptitre=""; |
216 |
|
|
$tmptitre=explode('<b>', $titre); |
217 |
|
|
// |
218 |
|
|
for($y=0;$y<sizeof($tmptitre);$y++){ |
219 |
|
|
$pos1=""; |
220 |
|
|
$pos1 = strpos($tmptitre[$y], "</b>"); |
221 |
|
|
// |
222 |
|
|
if ($pos1 === false) { |
223 |
|
|
if(trim($tmptitre[$y])!="") { |
224 |
|
|
$pdf->SetFont($lettretype["titrefont"],$lettretype["titreattribut"],$lettretype["titretaille"]); |
225 |
|
|
$pdf->SetX($lettretype["titreleft"]); |
226 |
|
|
$pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre[$y],$lettretype["titrebordure"],$lettretype["titrealign"],0); |
227 |
|
|
} |
228 |
|
|
}else{ |
229 |
|
|
$ctrl_fin_b=0; |
230 |
|
|
$ctrl_fin_b=substr_count($tmptitre[$y],"</b>"); |
231 |
|
|
$lettretype["titreattribut"] = str_replace("B","",$lettretype["titreattribut"]); |
232 |
|
|
$lettretype["titreattribut"] = str_replace("b","",$lettretype["titreattribut"]); |
233 |
|
|
if ($ctrl_fin_b>1){ |
234 |
|
|
// nbr </b> superieur a 1 |
235 |
|
|
if(trim($tmptitre[$y])!="") { |
236 |
|
|
$pdf->SetFont($lettretype["titrefont"],"B".$lettretype["titreattribut"],$lettretype["titretaille"]); |
237 |
|
|
$pdf->SetX($lettretype["titreleft"]); |
238 |
|
|
$pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre[$y],$lettretype["titrebordure"],$lettretype["titrealign"],0); |
239 |
|
|
} |
240 |
|
|
}else{ |
241 |
|
|
$tmptitre1 = explode("</b>",$tmptitre[$y]); |
242 |
|
|
// |
243 |
|
|
if(trim($tmptitre1[0])!="") { |
244 |
|
|
$pdf->SetFont($lettretype["titrefont"],"B".$lettretype["titreattribut"],$lettretype["titretaille"]); |
245 |
|
|
$pdf->SetX($lettretype["titreleft"]); |
246 |
|
|
$pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre1[0],$lettretype["titrebordure"],$lettretype["titrealign"],0); |
247 |
|
|
} |
248 |
|
|
if(trim($tmptitre1[1])!=""){ |
249 |
|
|
$pdf->SetFont($lettretype["titrefont"],$lettretype["titreattribut"],$lettretype["titretaille"]); |
250 |
|
|
$pdf->SetX($lettretype["titreleft"]); |
251 |
|
|
$pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre1[1],$lettretype["titrebordure"],$lettretype["titrealign"],0); |
252 |
|
|
} |
253 |
|
|
} |
254 |
|
|
// |
255 |
|
|
} |
256 |
|
|
} |
257 |
|
|
} |
258 |
|
|
// corps |
259 |
|
|
|
260 |
|
|
$temp = explode("[",$lettretype["corps"]); |
261 |
|
|
for($i=1;$i<sizeof($temp);$i++){ |
262 |
|
|
$temp1 = explode("]",$temp[$i]); |
263 |
|
|
$corps=str_replace("[".$temp1[0]."]",$row[$temp1[0]],$corps); |
264 |
|
|
} |
265 |
|
|
//************************************************ |
266 |
|
|
// traitement attribut affichage <b> dans corps * |
267 |
|
|
// aout 2008 * |
268 |
|
|
//************************************************ |
269 |
|
|
$pos=""; |
270 |
|
|
$pos = strpos($corps, "<b>"); |
271 |
|
|
if(CHARSET=='UTF8') |
272 |
|
|
$corps= utf8_decode($corps); |
273 |
|
|
if ($pos === false) { |
274 |
|
|
// compatibilite :aucun attribut affichage dans corps |
275 |
|
|
//*************************************************************************** |
276 |
|
|
if(trim($corps)!="") { |
277 |
|
|
$pdf->SetFont($lettretype["corpsfont"], |
278 |
|
|
$lettretype["corpsattribut"], |
279 |
|
|
$lettretype["corpstaille"]); |
280 |
|
|
$pdf->SetXY($lettretype["corpsleft"], |
281 |
|
|
$lettretype["corpstop"]); |
282 |
|
|
$pdf->MultiCell($lettretype["corpslargeur"], |
283 |
|
|
$lettretype["corpshauteur"] , |
284 |
|
|
$corps."vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv", |
285 |
|
|
$lettretype["corpsbordure"], |
286 |
|
|
$lettretype["corpsalign"], |
287 |
|
|
0); |
288 |
|
|
} |
289 |
|
|
//**************************************************************************** |
290 |
|
|
// attribut affichage <b> present dans corps |
291 |
|
|
}else{ |
292 |
|
|
$pdf->SetXY($lettretype["corpsleft"],$lettretype["corpstop"]); |
293 |
|
|
$tmp=""; |
294 |
|
|
$tmp=explode('<b>', $corps); |
295 |
|
|
// |
296 |
|
|
for($x=0;$x<sizeof($tmp);$x++){ |
297 |
|
|
$pos1=""; |
298 |
|
|
$pos1 = strpos($tmp[$x], "</b>"); |
299 |
|
|
// |
300 |
|
|
if ($pos1 === false) { |
301 |
|
|
if(trim($tmp[$x])!=""){ |
302 |
|
|
$pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]); |
303 |
|
|
$pdf->write($lettretype["corpshauteur"],$tmp[$x]); |
304 |
|
|
} |
305 |
|
|
}else{ |
306 |
|
|
$ctrl_fin_b=0; |
307 |
|
|
$ctrl_fin_b=substr_count($tmp[$x],"</b>"); |
308 |
|
|
$lettretype["corpsattribut"] = str_replace("B","",$lettretype["corpsattribut"]); |
309 |
|
|
$lettretype["corpsattribut"] = str_replace("b","",$lettretype["corpsattribut"]); |
310 |
|
|
if ($ctrl_fin_b>1){ |
311 |
|
|
// nbr </b> superieur a 1 |
312 |
|
|
if(trim($tmp[$x])!=""){ |
313 |
|
|
$pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]); |
314 |
|
|
$pdf->write($lettretype["corpshauteur"],$tmp[$x]); |
315 |
|
|
} |
316 |
|
|
}else{ |
317 |
|
|
$tmp1 = explode("</b>",$tmp[$x]); |
318 |
|
|
// |
319 |
|
|
if(trim($tmp1[0])!=""){ |
320 |
|
|
// |
321 |
|
|
$nbcar=0; |
322 |
|
|
$nbcar=$tmp1[0]; |
323 |
|
|
if( strlen($nbcar)==1) { |
324 |
|
|
// ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs |
325 |
|
|
$pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]); |
326 |
|
|
$pdf->write($lettretype["corpshauteur"]," ".$tmp1[0]." "); |
327 |
|
|
}else{ |
328 |
|
|
$pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]); |
329 |
|
|
$pdf->write($lettretype["corpshauteur"],$tmp1[0]); |
330 |
|
|
} |
331 |
|
|
} |
332 |
|
|
if(trim($tmp1[1])!=""){ |
333 |
|
|
$pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]); |
334 |
|
|
$pdf->write($lettretype["corpshauteur"],$tmp1[1]); |
335 |
|
|
} |
336 |
|
|
} |
337 |
|
|
// |
338 |
|
|
} |
339 |
|
|
} |
340 |
|
|
} |
341 |
|
|
// fermeture pdf |
342 |
|
|
$pdf->Output(); |
343 |
|
|
} |
344 |
|
|
} |
345 |
|
|
?> |