0337d704 |
1 | <?php\r |
2 | \r |
3 | // vim:set et sw=4 sts=4 sws=4 foldmethod=marker:\r |
4 | class Ancien { \r |
5 | var $NOM_PATR; \r |
6 | var $PART_NOM;\r |
7 | var $PRENOM;\r |
8 | var $NOM_USUEL;\r |
9 | var $PART_NOMUS;\r |
10 | var $NOM_COMPLET;\r |
11 | var $CIVILITE;\r |
12 | var $GRADE;\r |
13 | var $CORPS;\r |
14 | var $PROMO;\r |
15 | var $NATIONALITE;\r |
16 | var $CORPS_LIBELLE;\r |
17 | var $EMAIL; \r |
18 | var $ADRESSE = array();\r |
19 | var $NUM_ADRESSE = 0;\r |
20 | var $ACTIVITE = array();\r |
21 | var $NUM_ACTIVITE = 0;\r |
22 | var $FORMATION = array();\r |
23 | var $NUM_FORMATION = 0; \r |
24 | var $Erreur;\r |
25 | \r |
26 | function Ancien ($aa) {\r |
27 | if ($aa<>'')\r |
28 | {\r |
29 | foreach ($aa as $k=>$v)\r |
30 | $this->$k = $aa[$k];\r |
31 | } \r |
32 | } \r |
33 | function Ajout_adresse ($adresse,$i) {\r |
34 | $this->ADRESSE[$i] = $adresse; \r |
35 | $this->NUM_ADRESSE++;\r |
36 | } \r |
37 | function Ajout_activite ($activite,$i) {\r |
38 | $this->ACTIVITE[$i] = $activite; \r |
39 | $this->NUM_ACTIVITE++;\r |
40 | } \r |
41 | function Ajout_formation ($formation,$i) {\r |
42 | $this->FORMATION[$i] = $formation; \r |
43 | $this->NUM_FORMATION++;\r |
44 | } \r |
45 | function Ajout_erreur ($erreur) {\r |
46 | $this->Erreur = $erreur; \r |
47 | } \r |
48 | function Erreur() {\r |
49 | return $this->Erreur;\r |
50 | } \r |
51 | function Nom_patr() {\r |
52 | return $this->NOM_PATR;\r |
53 | }\r |
54 | function Part_nom() {\r |
55 | return $this->PART_NOM;\r |
56 | }\r |
57 | function Prenom() {\r |
58 | return $this->PRENOM;\r |
59 | }\r |
60 | function Nom_usuel() {\r |
61 | return $this->NOM_USUEL;\r |
62 | }\r |
63 | function Part_nomus() {\r |
64 | return $this->PART_NOMUS;\r |
65 | }\r |
66 | function Nom_complet() {\r |
67 | return $this->NOM_COMPLET;\r |
68 | } \r |
69 | function Civilite() {\r |
70 | return $this->CIVILITE;\r |
71 | } \r |
72 | function Grade() {\r |
73 | return $this->GRADE;\r |
74 | } \r |
75 | function Corps() {\r |
76 | return $this->CORPS;\r |
77 | } \r |
78 | function Corps_Libelle() {\r |
79 | return $this->CORPS_LIBELLE;\r |
80 | } \r |
81 | function Promo() {\r |
82 | return $this->PROMO;\r |
83 | } \r |
84 | function Nationalite() {\r |
85 | return $this->NATIONALITE;\r |
86 | } \r |
87 | function Email() {\r |
88 | return $this->EMAIL;\r |
89 | } \r |
90 | function Adresse_type($i) {\r |
91 | return $this->ADRESSE[$i]->TYPE;\r |
92 | } \r |
93 | function Adresse1($i) {\r |
94 | return $this->ADRESSE[$i]->ADRESS1;\r |
95 | }\r |
96 | function Adresse2($i) {\r |
97 | return $this->ADRESSE[$i]->ADRESS2;\r |
98 | }\r |
99 | function Adresse3($i) {\r |
100 | return $this->ADRESSE[$i]->ADRESS3;\r |
101 | }\r |
102 | function Code_pst($i) {\r |
103 | return $this->ADRESSE[$i]->CODE_PST;\r |
104 | }\r |
105 | function Ville($i) {\r |
106 | return $this->ADRESSE[$i]->VILLE;\r |
107 | }\r |
108 | function Zip_cedex($i) {\r |
109 | return $this->ADRESSE[$i]->ZIPCEDEX;\r |
110 | }\r |
111 | function Etat_region($i) {\r |
112 | return $this->ADRESSE[$i]->ETATREGION;\r |
113 | }\r |
114 | function Pays($i) {\r |
115 | return $this->ADRESSE[$i]->PAYS;\r |
116 | }\r |
117 | function Mobile($i) {\r |
118 | return $this->ADRESSE[$i]->MOBILE;\r |
119 | }\r |
120 | function Tel($i) {\r |
121 | return $this->ADRESSE[$i]->TEL;\r |
122 | } \r |
123 | function Fax($i) {\r |
124 | return $this->ADRESSE[$i]->FAX;\r |
125 | } \r |
126 | function Num_adresse() {\r |
127 | return $this->NUM_ADRESSE;\r |
128 | } \r |
129 | function Entreprise($i) {\r |
130 | return $this->ACTIVITE[$i]->ENTREPRISE;;\r |
131 | }\r |
132 | function Raison_sociale($i) {\r |
133 | return $this->ACTIVITE[$i]->RAISON_SOCIALE;\r |
134 | }\r |
135 | function Fonction($i) {\r |
136 | return $this->ACTIVITE[$i]->FONCTION;\r |
137 | } \r |
138 | function Adresse_act_type($i) {\r |
139 | return $this->ACTIVITE[$i]->TYPE;\r |
140 | }\r |
141 | function Adresse_act_adresse1($i) {\r |
142 | return $this->ACTIVITE[$i]->ADRESS1;\r |
143 | }\r |
144 | function Adresse_act_adresse2($i) {\r |
145 | return $this->ACTIVITE[$i]->ADRESS2;\r |
146 | }\r |
147 | function Adresse_act_adresse3($i) {\r |
148 | return $this->ACTIVITE[$i]->ADRESS3;\r |
149 | }\r |
150 | function Adresse_act_code_pst($i) {\r |
151 | return $this->ACTIVITE[$i]->CODE_PST;\r |
152 | }\r |
153 | function Adresse_act_ville($i) {\r |
154 | return $this->ACTIVITE[$i]->VILLE;\r |
155 | }\r |
156 | function Adresse_act_zip_cedex($i) {\r |
157 | return $this->ACTIVITE[$i]->ZIPCEDEX;\r |
158 | }\r |
159 | function Adresse_act_etat_region($i) {\r |
160 | return $this->ACTIVITE[$i]->ETATREGION;\r |
161 | }\r |
162 | function Adresse_act_pays($i) {\r |
163 | return $this->ACTIVITE[$i]->PAYS;\r |
164 | }\r |
165 | function Adresse_act_mobile($i) {\r |
166 | return $this->ACTIVITE[$i]->MOBILE;\r |
167 | }\r |
168 | function Adresse_act_tel($i) {\r |
169 | return $this->ACTIVITE[$i]->TEL;\r |
170 | } \r |
171 | function Adresse_act_fax($i) {\r |
172 | return $this->ACTIVITE[$i]->FAX;\r |
173 | } \r |
174 | function Num_activite() {\r |
175 | return $this->NUM_ACTIVITE;\r |
176 | } \r |
177 | function Formation($i) {\r |
178 | return $this->FORMATION[$i]->LIBELLE;\r |
179 | } \r |
180 | function Num_formation() {\r |
181 | return $this->NUM_FORMATION;\r |
182 | } \r |
183 | }\r |
184 | \r |
185 | class Adresse { \r |
186 | var $TYPE; \r |
187 | var $ADRESS1;\r |
188 | var $ADRESS2;\r |
189 | var $ADRESS3;\r |
190 | var $CODE_PST;\r |
191 | var $VILLE;\r |
192 | var $ZIPCEDEX;\r |
193 | var $ETATREGION;\r |
194 | var $PAYS;\r |
195 | var $MOBILE;\r |
196 | var $TEL;\r |
197 | var $FAX;\r |
198 | \r |
199 | function Adresse ($aa) {\r |
200 | foreach ($aa as $k=>$v)\r |
201 | $this->$k = $aa[$k]; \r |
202 | } \r |
203 | }\r |
204 | \r |
205 | class Activite { \r |
206 | var $ENTREPRISE;\r |
207 | var $RAISON_SOCIALE;\r |
208 | var $FONCTION;\r |
209 | var $TYPE; \r |
210 | var $ADRESS1;\r |
211 | var $ADRESS2;\r |
212 | var $ADRESS3;\r |
213 | var $CODE_PST;\r |
214 | var $VILLE;\r |
215 | var $ZIPCEDEX;\r |
216 | var $ETATREGION;\r |
217 | var $PAYS;\r |
218 | var $MOBILE;\r |
219 | var $TEL;\r |
220 | var $FAX;\r |
221 | \r |
222 | function Activite ($aa) {\r |
223 | foreach ($aa as $k=>$v)\r |
224 | $this->$k = $aa[$k]; \r |
225 | } \r |
226 | } \r |
227 | \r |
228 | class Formation { \r |
229 | var $LIBELLE;\r |
230 | \r |
231 | function Formation ($aa) {\r |
232 | foreach ($aa as $k=>$v)\r |
233 | $this->$k = $aa[$k]; \r |
234 | } \r |
235 | } \r |
236 | \r |
237 | function xml_get_children($vals, &$i) {\r |
238 | $children = array();\r |
239 | if (isset($vals[$i]['value'])) $children[] = $vals[$i]['value'];\r |
240 | \r |
241 | while (++$i < count($vals)) {\r |
242 | switch ($vals[$i]['type']) {\r |
243 | case 'cdata':\r |
244 | $children[] = $vals[$i]['value'];\r |
245 | break;\r |
246 | \r |
247 | case 'complete':\r |
248 | $children[] = array(\r |
249 | 'tag' => $vals[$i]['tag'],\r |
250 | 'attributes' => isset($vals[$i]['attributes'])?\r |
251 | $vals[$i]['attributes'] : null,\r |
252 | 'value' => $vals[$i]['value'],\r |
253 | );\r |
254 | break;\r |
255 | \r |
256 | case 'open':\r |
257 | $children[] = array(\r |
258 | 'tag' => $vals[$i]['tag'],\r |
259 | 'attributes' => isset($vals[$i]['attributes'])?\r |
260 | $vals[$i]['attributes'] : null,\r |
261 | 'children' => xml_get_children($vals, $i),\r |
262 | );\r |
263 | break;\r |
264 | \r |
265 | case 'close':\r |
266 | return $children;\r |
267 | }\r |
268 | }\r |
269 | }\r |
270 | \r |
271 | //fonction principale de récupération des données de l'ancien\r |
272 | //à indiquer: matricule de l'ancien\r |
273 | function recupere_infos_ancien($AX_MATRICULE)\r |
274 | {\r |
275 | include('config.inc');\r |
276 | \r |
277 | $id =13;//13 params persos ancien\r |
278 | $id_ad = 11; //12 params adresse\r |
279 | $id_ac = 14; //15 params adresse \r |
280 | $id_fo = 1; //1 params fonction \r |
281 | \r |
282 | $erreur = "";\r |
283 | \r |
284 | // Génération d'un identifiant de "session" inter-serveurs\r |
285 | $id_session = md5 (uniqid (rand())); \r |
286 | \r |
287 | // Connexion au serveur pour lui fournir l'identifiant et lui demander un challenge\r |
288 | $challenge = file_get_contents ($nom_script_renvoi_challenge."?id_session=".urlencode($id_session)); \r |
289 | if ($challenge == 'ERROR') \r |
290 | {\r |
291 | $erreur = "Erreur lors de la demande du challenge";\r |
292 | } \r |
293 | else\r |
294 | {\r |
295 | // On va relire la clé privée (codée)\r |
296 | $privkeypass = $phrase;\r |
297 | $pkey_txt = file_get_contents ($chemin_cle_privee);\r |
298 | if (($pkey_res = openssl_pkey_get_private($pkey_txt, $privkeypass)) == false) \r |
299 | {\r |
300 | $erreur = "Erreur lors de l'ouverture de la clé privée";\r |
301 | }\r |
302 | else\r |
303 | {\r |
304 | // Signature du challenge (cryptage avec clé privée)\r |
305 | if ( openssl_private_encrypt($challenge, $response, $pkey_res) == false ) \r |
306 | {\r |
307 | $erreur = "Erreur lors du cryptage du challenge avec la clé privée";\r |
308 | }\r |
309 | else\r |
310 | {\r |
311 | // Signature du login (cryptage avec clé privée)\r |
312 | if ( openssl_private_encrypt($AX_MATRICULE, $AX_MATRICULE_CRYPTE, $pkey_res) == false ) \r |
313 | {\r |
314 | $erreur = "Erreur lors du cryptage du matricule avec la clé privée";\r |
315 | }\r |
316 | else\r |
317 | {\r |
318 | // Envoi de la réponse au serveur avec l'identifiant de l'ancien dont on veut récupérer les infos\r |
319 | $reponse_serveur .= file_get_contents ($nom_script_renvoi_infos."?id_session=".urlencode($id_session)."&AX_MATRICULE_CRYPTE=".urlencode($AX_MATRICULE_CRYPTE)."&response=".urlencode($response));\r |
320 | \r |
321 | $parser = xml_parser_create();\r |
322 | xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);\r |
323 | xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);\r |
324 | xml_parse_into_struct($parser, $reponse_serveur, $vals, $index);\r |
325 | xml_parser_free($parser);\r |
326 | \r |
327 | $tree = array();\r |
328 | $tree[] = array(\r |
329 | 'tag' => $vals[0]['tag'],\r |
330 | 'attributes' => isset($vals[0]['attributes'])?\r |
331 | $vals[0]['attributes'] : null,\r |
332 | 'children' => xml_get_children($vals, $i = 0),\r |
333 | );\r |
334 | \r |
335 | for ($i=0; $i < $id; $i++) \r |
336 | {\r |
337 | $val_ancien[$tree[0]['children'][0]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$i]['value']; \r |
338 | } \r |
339 | \r |
340 | $Ancien_renvoye = new Ancien($val_ancien); \r |
341 | \r |
342 | //adresse while pour nbre d'adresses\r |
343 | $num_ad = 0;\r |
344 | while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ADRESSE')\r |
345 | {\r |
346 | for ($i=0; $i <= $id_ad; $i++) \r |
347 | {\r |
348 | $val_adresse[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; \r |
349 | } \r |
350 | \r |
351 | $Adresse_renvoyee = new Adresse($val_adresse);\r |
352 | $Ancien_renvoye->Ajout_adresse($Adresse_renvoyee,$num_ad); \r |
353 | \r |
354 | //prochaine adresse\r |
355 | $num_ad = $num_ad + 1;\r |
356 | $id = $id+1;\r |
357 | }\r |
358 | \r |
359 | //idem pour activité \r |
360 | $num_ac = 0;\r |
361 | while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ACTIVITE')\r |
362 | {\r |
363 | for ($i=0; $i <= $id_ac; $i++) \r |
364 | {\r |
365 | $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; \r |
366 | \r |
367 | for ($j=0; $j <= $id_ad; $j++) \r |
368 | {\r |
369 | $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['value']; \r |
370 | }\r |
371 | } \r |
372 | \r |
373 | $Activite_renvoyee = new Activite($val_activite);\r |
374 | $Ancien_renvoye->Ajout_activite($Activite_renvoyee,$num_ac); \r |
375 | \r |
376 | //prochaine activité
|
377 | $num_ac = $num_ac + 1;\r |
378 | $id = $id+1;\r |
379 | }\r |
380 | //idem pour formation \r |
381 | $num_fo = 0;\r |
382 | while ($tree[0]['children'][0]['children'][$id]['tag'] == 'FORMATION')\r |
383 | {\r |
384 | for ($i=0; $i <= $id_fo; $i++) \r |
385 | {\r |
386 | $val_formation[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; \r |
387 | } \r |
388 | \r |
389 | $Formation_renvoyee = new Formation($val_formation);\r |
390 | $Ancien_renvoye->Ajout_formation($Formation_renvoyee,$num_fo); \r |
391 | \r |
392 | //prochaine formation\r |
393 | $num_fo = $num_fo + 1;\r |
394 | $id = $id+1;\r |
395 | } \r |
396 | }\r |
397 | }\r |
398 | }\r |
399 | }\r |
400 | \r |
401 | //erreur indiquée
|
402 | if ($erreur) //erreur ici\r |
403 | {\r |
404 | $Ancien_renvoye = new Ancien('');\r |
405 | $Ancien_renvoye->Ajout_erreur($erreur); \r |
406 | }\r |
407 | else\r |
408 | { //renvoyée par le fichier serveur_renvoie_infos\r |
409 | $Ancien_renvoye->Ajout_erreur($tree[0]['children'][1]['value']);\r |
410 | } \r |
411 | \r |
412 | return $Ancien_renvoye;\r |
413 | }\r |
414 | \r |
415 | ?>\r |