not used, not up2date, just pollute the thing. trash it
[platal.git] / include / webservices / ax / client.inc
CommitLineData
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