| 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 |