1 |
fraynaud |
178 |
<?php |
2 |
|
|
/** |
3 |
nhaye |
1785 |
* Classe permettant la mise en forme de chaque ligne de l'export SITADEL |
4 |
|
|
* Les méthode retourne des morceaux de lignes en faisant correspondre les valeurs |
5 |
|
|
* du dossier avec les valeurs définie pour l'export SITADEL |
6 |
fmichon |
1515 |
* |
7 |
|
|
* @package openfoncier |
8 |
|
|
* @version SVN : $Id$ |
9 |
fraynaud |
178 |
*/ |
10 |
|
|
|
11 |
|
|
class sitadel { |
12 |
|
|
|
13 |
nhaye |
1785 |
var $dossier; // identifiant du dossier à insérer dans l'export |
14 |
|
|
var $row; // Valeurs du dossier |
15 |
fraynaud |
184 |
var $val; // parametre par defaut |
16 |
|
|
var $parametre; //parametre dossier |
17 |
fraynaud |
190 |
var $DEBUG=0; // 1 = valeur |
18 |
fraynaud |
178 |
|
19 |
nhaye |
1785 |
/** |
20 |
|
|
* Constructeur, initialisation de l'attribut dossier |
21 |
|
|
* |
22 |
|
|
* @param dossier string identifiant du dossier à traiter |
23 |
|
|
*/ |
24 |
fraynaud |
178 |
function sitadel($dossier) { |
25 |
|
|
$this->dossier=$dossier; |
26 |
|
|
}// fin constructeur |
27 |
|
|
|
28 |
nhaye |
1785 |
/** |
29 |
|
|
* Permet de mettre en forme le début de chaque la ligne |
30 |
|
|
* |
31 |
|
|
* @param mouvement string DEPOT, DECISION, SUIVI, TRANSFERT, MODIFICATIF, SUPPRESSION |
32 |
|
|
* @param departement string non utilisé |
33 |
|
|
* @param commune string code commune du dossier |
34 |
|
|
* @param pf_departement string code du département du dossier |
35 |
|
|
* |
36 |
|
|
* @return string entete de la ligne |
37 |
|
|
*/ |
38 |
fraynaud |
193 |
function entete($mouvement, $departement, $commune,$pf_departement){ |
39 |
fraynaud |
178 |
// sitadel : mouv|typpermis|equivalence|dep|commune|andepnumpc|indmod |
40 |
nhaye |
1785 |
// l'equivalence n'est pas utilisée |
41 |
nhaye |
1138 |
$entete=$mouvement."|".$this->row['code']."||".$pf_departement.$departement."|".$commune."|".$this->row['annee']. |
42 |
fraynaud |
178 |
"|".substr($this->dossier,4,5)."|".substr($this->dossier,9,2)."|"; |
43 |
|
|
return $entete; |
44 |
|
|
} |
45 |
|
|
|
46 |
nhaye |
1785 |
/** |
47 |
|
|
* Permet de mettre en forme l'état civil : |
48 |
|
|
* personne morale / physique |
49 |
|
|
* société, siret, civilité, nom, prénom / civilité, nom, prénom |
50 |
|
|
* |
51 |
|
|
* @return string demandeur désigné |
52 |
|
|
*/ |
53 |
fraynaud |
178 |
function etatcivil(){ |
54 |
|
|
// etat civil demandeur |
55 |
|
|
// codemo| |
56 |
|
|
if($this->row['demandeur_categorie']==9 |
57 |
|
|
or $this->row['demandeur_categorie']=="") |
58 |
|
|
$codemo=1;// personne physique |
59 |
|
|
else |
60 |
|
|
$codemo=2;// personne morale |
61 |
|
|
$etatcivil=$codemo."|"; // 1 personne physique ; 2 sinon |
62 |
|
|
// openfoncier civilite (5/8 ok), nom (80/30-> substr), societe (80/50->substr) |
63 |
|
|
// civpart|prenompart|nompart|denopm|rspm|siret|catjur|civrep|prenomrep|nomrep| |
64 |
|
|
// suivant codemo = 1 (personne physique) ou 2 (personne morale) |
65 |
|
|
// demandeur_civilite n est pas normalise Madame ou Monsieur |
66 |
|
|
if($codemo==1){ |
67 |
fraynaud |
185 |
// *civpart*|*prenompart*|nompart|||||| |
68 |
fraynaud |
186 |
$etatcivil.= $this->p('civpart')."|".$this->p('prenompart')."|"; |
69 |
fraynaud |
178 |
$etatcivil.= $this->maj(substr($this->row['demandeur_nom'],0,30))."||||||||"; |
70 |
|
|
}else{ |
71 |
fraynaud |
186 |
//denopm|*rspm*|*siret*|*catjur*|*civrep*|*prenomrep*|nomrep| |
72 |
|
|
$etatcivil.="|||"; // codemo=1 |
73 |
fraynaud |
298 |
$etatcivil.=$this->maj(substr($this->row['demandeur_societe'],0,50))."|"; |
74 |
fraynaud |
178 |
$etatcivil.=$this->maj(substr($this->row['categorie_libelle'],0,30))."|"; |
75 |
fraynaud |
186 |
$etatcivil.=$this->p('rspm')."|".$this->p('siret')."|".$this->p('catjur')."|". |
76 |
|
|
$this->p('civrep')."|".$this->p('prenomrep'); // *** +1 |
77 |
|
|
$etatcivil.=$this->maj(substr($this->row['demandeur_nom'],0,30))."|"; |
78 |
fraynaud |
178 |
} |
79 |
|
|
return $etatcivil; |
80 |
|
|
} |
81 |
|
|
|
82 |
|
|
function adresse(){ |
83 |
|
|
// openfoncier : adresse (80/ 26+38 -> substr sur 2 zones) - cp (5/5 OK) - ville (30/36 -> OK) |
84 |
|
|
// *numvoiemo*|*typvoiemo*|libvoiemo|lieuditmo(+)|communemo|codposmo|*bpmo*|*cedexmo*|*paysmo*|*divetermo| |
85 |
fraynaud |
186 |
$adresse=""; |
86 |
|
|
$adresse = $this->p('numvoiemo')."|".$this->p('typvoiemo')."|". |
87 |
|
|
$adresse.= $this->maj(substr($this->row['demandeur_adresse'],0,26))."|". |
88 |
fraynaud |
181 |
$this->maj(substr($this->row['demandeur_adresse'],26,38))."|"; |
89 |
fraynaud |
186 |
$adresse.= $this->maj($this->row['demandeur_ville'])."|".$this->row['demandeur_cp']."|"; |
90 |
fraynaud |
187 |
$adresse.= $this->p('bpmo')."|".$this->p('cedexmo')."|".$this->p('paysmo')."|".$this->p('divtermo')."|"; |
91 |
|
|
return $adresse; |
92 |
fraynaud |
178 |
} |
93 |
|
|
|
94 |
|
|
|
95 |
|
|
function delegataire(){ |
96 |
|
|
// openFoncier civilite (non normalise monsieur/madame), nom (80/30 substr) |
97 |
|
|
// openfoncier : adresse (80/ 26+38 -> substr sur 2 zones) - cp (5/5 OK) - ville (30/32 -> OK) |
98 |
fraynaud |
186 |
// *civtiers*|*prenomtier*|nomtier|*numvoietiers*|*typvoietiers*| |
99 |
fraynaud |
178 |
// libvoietiers|lieudittier|communetier|codpostier |
100 |
|
|
// |*bptier*|*cedextier*|*paystier*|*divtertier*| |
101 |
|
|
$delegataire=""; |
102 |
|
|
if($this->row['delegataire']=='Oui'){ |
103 |
fraynaud |
186 |
$delegataire.= $this->p('civtier')."|".$this->p('prenomtier'); |
104 |
fraynaud |
178 |
$delegataire.="|".$this->maj(substr($this->row['delegataire_nom'],0,30))."|"; |
105 |
fraynaud |
187 |
$delegataire.= "|".$this->p('typevoietier')."|".$this->maj(substr($this->row['delegataire_adresse'],0,26))."|". |
106 |
fraynaud |
178 |
$this->maj(substr($this->row['delegataire_adresse'],26,38))."|"; |
107 |
|
|
$delegataire.= $this->maj($this->row['delegataire_ville'])."|". |
108 |
fraynaud |
186 |
$this->row['delegataire_cp']."|"; |
109 |
|
|
$delegataire.= $this->p('bptier')."|".$this->p('cedextier')."|"; |
110 |
|
|
$delegataire.= $this->p('paystier')."|".$this->p('divtertier')."|"; |
111 |
fraynaud |
178 |
}else{ |
112 |
fraynaud |
181 |
$delegataire.= "|||||||||||||"; // *** 13 | |
113 |
fraynaud |
178 |
} |
114 |
fraynaud |
187 |
return $delegataire; |
115 |
|
|
} |
116 |
|
|
|
117 |
|
|
function meltel($mouvement){ |
118 |
fraynaud |
178 |
// sitadel : telmo|melmo| |
119 |
fraynaud |
187 |
$meltel=""; |
120 |
|
|
if($mouvement != "Transfert") |
121 |
|
|
$meltel.=$this->row['demandeur_telephone']."|"; |
122 |
|
|
$meltel.= $this->row['demandeur_email']."|"; |
123 |
fraynaud |
193 |
// suivi electronique |
124 |
fraynaud |
187 |
if($this->row['delegataire']=='Oui'){ |
125 |
|
|
$meltel.= "1"; |
126 |
|
|
}else{ |
127 |
|
|
$meltel.= "0"; |
128 |
|
|
} |
129 |
fraynaud |
193 |
// suivi -> fin enr pour transfert (sans |) |
130 |
fraynaud |
187 |
if($mouvement != "Transfert") |
131 |
fraynaud |
190 |
$meltel.= "|"; |
132 |
fraynaud |
187 |
return $meltel; |
133 |
fraynaud |
193 |
} |
134 |
fraynaud |
178 |
|
135 |
|
|
function adresse_terrain(){ |
136 |
|
|
// openfoncier numero (4/5 substr), adresse(80, 26 +38 -> substr), complement (non utilise (80)), cp (5/5 ok), ville (30/32 ok) |
137 |
fraynaud |
187 |
// sitadel : |numvoiete|*typvoiete*|libvoiete|lieudite|communete|codposte|*bpte*|*cedexte*| |
138 |
|
|
// mettre le | en debut pour info du 2eme groupe (suite 1er groupe) |
139 |
fraynaud |
193 |
$adresse=""; |
140 |
fraynaud |
187 |
// |
141 |
|
|
$adresse.= substr($this->row['terrain_numero'],0,4)."|".$this->p('typvoiete')."|"; |
142 |
fraynaud |
186 |
$adresse.= $this->maj(substr($this->row['terrain_adresse'],0,26))."|". |
143 |
fraynaud |
178 |
$this->maj(substr($this->row['terrain_adresse'],26,38))."|"; |
144 |
|
|
$adresse.= $this->maj($this->row['terrain_ville'])."|"; |
145 |
|
|
$adresse.= $this->row['terrain_cp']."|"; |
146 |
fraynaud |
186 |
$adresse.= $this->p('bpte')."|".$this->p('cedexte')."|"; |
147 |
fraynaud |
178 |
return $adresse; |
148 |
|
|
} |
149 |
|
|
|
150 |
|
|
function parcelle(){ |
151 |
|
|
// ======== |
152 |
|
|
// parcelle |
153 |
|
|
// ======== |
154 |
|
|
// cadastre 3 parcelles + 3 sections |
155 |
|
|
// openfoncier = 1 seule parcelle (6/3+5) |
156 |
|
|
// sitadel : scadastre1|ncadastre1|*scadastre2*|*ncadastre2*|*scadastre3*|*ncadastre3*| |
157 |
|
|
$parcelle= substr($this->row['parcelle'],0,2)."|"; |
158 |
fraynaud |
186 |
$parcelle.= substr($this->row['parcelle'],2,4)."|"; |
159 |
|
|
$parcelle.= $this->p('scadastre2')."|".$this->p('ncadastre2')."|"; |
160 |
|
|
$parcelle.= $this->p('scadastre3')."|".$this->p('ncadastre3')."|"; |
161 |
fraynaud |
178 |
return $parcelle; |
162 |
|
|
} |
163 |
|
|
|
164 |
fraynaud |
200 |
function decision_groupe1($avis_sitadel, $avis_sitadel_motif,$structure){ |
165 |
|
|
$decision= $structure.'|'; // au nom de la commune |
166 |
fraynaud |
178 |
$decision.= $avis_sitadel."|"; |
167 |
|
|
// date au format francais 8 caracteres |
168 |
|
|
$decision.= substr($this->row['date_decision'],8,2).''. |
169 |
|
|
substr($this->row['date_decision'],5,2)."". |
170 |
|
|
substr($this->row['date_decision'],0,4)."|"; |
171 |
fraynaud |
193 |
$decision.= $avis_sitadel_motif."|"; |
172 |
fraynaud |
178 |
return $decision; |
173 |
|
|
} |
174 |
|
|
|
175 |
fraynaud |
187 |
function terrain(){ |
176 |
|
|
$contenu=""; |
177 |
|
|
$contenu= floor($this->row['terrain_surface'])."|"; |
178 |
|
|
return $contenu; |
179 |
|
|
} |
180 |
|
|
|
181 |
fraynaud |
179 |
function amenagement(){ |
182 |
|
|
// renseignement du groupe 2 *** |
183 |
fraynaud |
187 |
// lotissement|zac|afu| |
184 |
fraynaud |
190 |
$contenu=""; |
185 |
fraynaud |
179 |
if($this->row['amenagement']!='') |
186 |
|
|
$contenu.= "1|"; |
187 |
|
|
else |
188 |
fraynaud |
190 |
$contenu.= "0|"; |
189 |
fraynaud |
186 |
$contenu.= $this->p('zac')."|".$this->p('afu')."|"; |
190 |
fraynaud |
179 |
return $contenu; |
191 |
|
|
} |
192 |
|
|
|
193 |
fraynaud |
187 |
function travaux($travaux, $lascot,$mouvement){ |
194 |
|
|
// libnattrav| ou libmotif dans MODIFICATIF |
195 |
fraynaud |
179 |
$contenu=$this->maj($travaux)."|"; |
196 |
fraynaud |
187 |
// natproj| innexistant en MODIFICATIF |
197 |
|
|
if($mouvement != "Modificatif"){ |
198 |
|
|
if($lascot=='1' |
199 |
|
|
or $lascot=='2' |
200 |
|
|
or $lascot=='3') |
201 |
|
|
$contenu.= $lascot."|"; // natproj 1:construction 2:extension ou 3:surelevation |
202 |
|
|
else |
203 |
|
|
$contenu.= "|"; |
204 |
|
|
} |
205 |
|
|
// INITIAL (ou TRANSFERT)natdp|nattrav|*annexe*|*nivmax* |
206 |
|
|
// MODIFICATIF nattrav|*annexe*|*nivmax* |
207 |
|
|
if($mouvement != "Modificatif"){ |
208 |
|
|
$natdp='00000'; |
209 |
|
|
if($lascot=='1') $natdp="10000"; // nouvelle construction |
210 |
|
|
if($lascot=='2') $natdp="01000"; // travaux sur construction existante |
211 |
|
|
if($lascot=='3') $natdp="01000"; // |
212 |
|
|
if($lascot=='X') $natdp="00001"; // cloture |
213 |
|
|
$contenu.= $natdp."|"; |
214 |
|
|
} |
215 |
fraynaud |
179 |
// nattrav |
216 |
|
|
$nattrav = "0000"; |
217 |
|
|
if($lascot=='2') $nattrav="1000"; |
218 |
|
|
if($lascot=='3') $nattrav="0100"; |
219 |
|
|
$contenu.= $nattrav."|"; |
220 |
|
|
// annexe non renseigner defaut 00000 |
221 |
fraynaud |
186 |
$contenu.= $this->p('annexe')."|"; |
222 |
fraynaud |
179 |
//nivmax non saisi |
223 |
fraynaud |
186 |
$contenu.=$this->p('nivmax')."|"; |
224 |
fraynaud |
179 |
return $contenu; |
225 |
|
|
} |
226 |
fraynaud |
178 |
|
227 |
fraynaud |
179 |
function destination($shon){ |
228 |
|
|
$contenu=""; |
229 |
|
|
for($i=1;$i<=9;$i++){ |
230 |
|
|
if(!isset($shon[$i])) $shon[$i]=0; |
231 |
|
|
$contenu.=$shon[$i].'|'; |
232 |
|
|
|
233 |
|
|
} |
234 |
|
|
return $contenu; |
235 |
|
|
} |
236 |
fraynaud |
178 |
|
237 |
fraynaud |
187 |
function descriptif($mouvement){ |
238 |
fraynaud |
179 |
// cpublic : non renseignee N par defaut |
239 |
|
|
// O/N transport/enseignement/sante/social/special/culture |
240 |
fraynaud |
184 |
|
241 |
fraynaud |
187 |
$contenu= $this->p('cpublic')."|"; //* supp| |
242 |
fraynaud |
179 |
// nblogdem |
243 |
fraynaud |
187 |
if($mouvement != "Modificatif"){ |
244 |
|
|
$contenu.= $this->row['logement_nombre']."|"; |
245 |
|
|
} |
246 |
fraynaud |
179 |
// nbmaison : nombre de maison |
247 |
fraynaud |
187 |
$contenu.= $this->p('nbmaison')."|"; |
248 |
fraynaud |
179 |
// nblogcoll : nombre de logement collectif |
249 |
fraynaud |
187 |
$contenu.= $this->p('nblogcoll')."|"; |
250 |
fraynaud |
179 |
// nbtotlog : nombre de logement total |
251 |
fraynaud |
187 |
$contenu.= $this->p('nbtotlog')."|"; |
252 |
fraynaud |
179 |
// natres : nature des residences |
253 |
|
|
// O/N 1=ages, 2=etudiant, 3=tourisme, 4=hotel, 5=social, 6= handicap, 7=autres |
254 |
fraynaud |
187 |
$contenu.= $this->p('natres')."|"; |
255 |
fraynaud |
179 |
// libres= si autre residence (long max 1000 c) |
256 |
fraynaud |
187 |
$contenu.= $this->p('libres')."|"; |
257 |
fraynaud |
179 |
// util : O/N personnel, principale, secondaire, vente, location |
258 |
fraynaud |
187 |
$contenu.= $this->p('util')."|"; |
259 |
fraynaud |
184 |
//chambre |
260 |
fraynaud |
187 |
$contenu.= $this->p('chambre')."|"; |
261 |
fraynaud |
179 |
// nb logement sociaux |
262 |
fraynaud |
187 |
$contenu.= $this->p('finis')."|"; |
263 |
fraynaud |
179 |
// nb logt financt aides |
264 |
fraynaud |
187 |
$contenu.= $this->p('finaa')."|"; |
265 |
fraynaud |
179 |
// nb de logt pret a taux 0 |
266 |
fraynaud |
187 |
$contenu.= $this->p('finptz')."|"; |
267 |
fraynaud |
179 |
// nb de logt finances autrt |
268 |
fraynaud |
187 |
$contenu.= $this->p('finaf')."|"; |
269 |
fraynaud |
179 |
// nb pieces en maison individuelle |
270 |
fraynaud |
187 |
if($mouvement != "Modificatif") |
271 |
|
|
$contenu.= $this->row['piece_nombre']."|"; // voir si 0 |
272 |
fraynaud |
179 |
// chambre (num capacite accueil locaux hebergement) |
273 |
fraynaud |
184 |
// $contenu.= "|"; |
274 |
fraynaud |
179 |
// nb de logement 1piece |
275 |
fraynaud |
187 |
$contenu.= $this->p('piec1')."|"; |
276 |
fraynaud |
179 |
// nb de logement 2 pieces |
277 |
fraynaud |
187 |
$contenu.= $this->p('piec2')."|"; |
278 |
fraynaud |
179 |
// nb de logement 3 pieces |
279 |
fraynaud |
187 |
$contenu.= $this->p('piec3')."|"; |
280 |
fraynaud |
179 |
// nb de logement 4 pieces |
281 |
fraynaud |
187 |
$contenu.= $this->p('piec4')."|"; |
282 |
fraynaud |
179 |
// nb de logement 5 pieces |
283 |
fraynaud |
187 |
$contenu.= $this->p('piec5')."|"; |
284 |
fraynaud |
179 |
// nb de logement 6 pieces |
285 |
fraynaud |
187 |
$contenu.= $this->p('piec6'); |
286 |
|
|
// (derniere zone decision et modificatif) |
287 |
fraynaud |
179 |
return $contenu; |
288 |
|
|
} |
289 |
|
|
|
290 |
fraynaud |
181 |
function chantier(){ |
291 |
fraynaud |
186 |
//datereoc| |
292 |
fraynaud |
181 |
$suivi1=""; |
293 |
fraynaud |
186 |
$suivi1.=substr($this->row['date_chantier'],8,2).substr($this->row['date_chantier'],5,2). |
294 |
|
|
substr($this->row['date_chantier'],0,4)."|"; // *** au format francais |
295 |
|
|
//nblogoc|nbmaisoc|nbcolloc| |
296 |
|
|
$suivi1.=$this->p('nblogoc')."|".$this->p('nbmaisoc')."|".$this->p('nbcolloc')."|"; |
297 |
|
|
//shonoc| |
298 |
|
|
$suivi1.=floor($this->row['shon'])."|"; // ok *** enlever les decimales |
299 |
|
|
//*finisoc*|*finaaoc*|*finptzoc*|*finafoc|*indoc*| |
300 |
|
|
$suivi1.=$this->p('finisoc')."|".$this->p('finaaoc')."|". |
301 |
|
|
$this->p('finptzoc')."|".$this->p('finafoc')."|".$this->p('indoc')."|"; |
302 |
|
|
$suivi1.="|||||||||||"; // achevement 11| |
303 |
fraynaud |
193 |
return $suivi1; |
304 |
fraynaud |
181 |
} |
305 |
fraynaud |
179 |
|
306 |
fraynaud |
181 |
function achevement(){ |
307 |
fraynaud |
186 |
$suivi2="||||||||||"; // occupation 10 | |
308 |
|
|
//datereat| |
309 |
fraynaud |
200 |
$suivi2.=substr($this->row['date_achevement'],8,2). |
310 |
|
|
substr($this->row['date_achevement'],5,2). |
311 |
fraynaud |
186 |
substr($this->row['date_achevement'],0,4)."|"; // ok *** au format francais |
312 |
|
|
//nblogat|nbmaisat|nbcollat| |
313 |
|
|
$suivi2.=$this->p('nblogat')."|".$this->p('nbmaisat')."|".$this->p('nbcollat')."|"; |
314 |
|
|
//shonat| |
315 |
|
|
$suivi2.=floor($this->row['shon'])."|"; // ok *** enlever les decimales |
316 |
|
|
//finisat|finaaat|finptzat|finafat|indat| |
317 |
|
|
$suivi2.=$this->p('finisat')."|".$this->p('finaaat')."|".$this->p('finptzat'). |
318 |
|
|
"|".$this->p('finafat')."|".$this->p('indat')."|"; |
319 |
fraynaud |
181 |
// Finchantier 1 si etat=cloturer sinon 0 |
320 |
|
|
if ($this->row['etat']=="cloturer"){ |
321 |
|
|
$suivi2.="1|"; |
322 |
|
|
}else{ |
323 |
|
|
$suivi2.="0|"; |
324 |
|
|
} |
325 |
fraynaud |
184 |
// Origat 1 par defaut |
326 |
|
|
$suivi2.=$this->p('origat'); |
327 |
fraynaud |
181 |
return $suivi2; |
328 |
|
|
} |
329 |
fraynaud |
184 |
|
330 |
|
|
function p($champ){ |
331 |
fraynaud |
186 |
if($this->DEBUG==2) return $champ; |
332 |
fraynaud |
184 |
if(isset($this->parametre[$champ])){ |
333 |
|
|
return $this->parametre[$champ]; |
334 |
|
|
}else |
335 |
|
|
return $this->val[$champ]; |
336 |
|
|
} |
337 |
|
|
|
338 |
fraynaud |
178 |
function maj($val) { |
339 |
|
|
$val = strtoupper($val); |
340 |
|
|
$val=str_replace(chr(195), "", $val); // supprime le premier code des accents en UTF-8 |
341 |
|
|
$s = array('/[âàäÀ]/', '/[éêèëÉÈ]/', '/[îï]/', '/[ôöÔ]/', '/[ûùü]/', '/[çÇ]/', '/\'|\"|^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\-\s\r/'); |
342 |
|
|
$r = array('A', 'E', 'I', 'O', 'U', 'C', ' '); |
343 |
|
|
$val = preg_replace($s , $r, $val); |
344 |
|
|
return $val; |
345 |
|
|
} |
346 |
|
|
} |
347 |
fmichon |
1515 |
|
348 |
fraynaud |
178 |
?> |