Split Globals into PlGlobals and PlatalGlobals:
[platal.git] / include / webservices / ax / client.inc
index 8a77c0a..69dd47d 100755 (executable)
-<?php\r
-\r
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:\r
-    class Ancien {      \r
-        var $NOM_PATR; \r
-        var $PART_NOM;\r
-        var $PRENOM;\r
-        var $NOM_USUEL;\r
-        var $PART_NOMUS;\r
-        var $NOM_COMPLET;\r
-        var $CIVILITE;\r
-        var $GRADE;\r
-        var $CORPS;\r
-        var $PROMO;\r
-        var $NATIONALITE;\r
-        var $CORPS_LIBELLE;\r
-        var $EMAIL;     \r
-        var $ADRESSE = array();\r
-        var $NUM_ADRESSE = 0;\r
-        var $ACTIVITE = array();\r
-        var $NUM_ACTIVITE = 0;\r
-        var $FORMATION = array();\r
-        var $NUM_FORMATION = 0;        \r
-        var $Erreur;\r
-           \r
-    function Ancien ($aa) {\r
-       if ($aa<>'')\r
-       {\r
-        foreach ($aa as $k=>$v)\r
-           $this->$k = $aa[$k];\r
-       } \r
-    }   \r
-    function Ajout_adresse ($adresse,$i) {\r
-           $this->ADRESSE[$i] = $adresse; \r
-           $this->NUM_ADRESSE++;\r
-    }       \r
-    function Ajout_activite ($activite,$i) {\r
-           $this->ACTIVITE[$i] = $activite; \r
-           $this->NUM_ACTIVITE++;\r
-    }  \r
-    function Ajout_formation ($formation,$i) {\r
-           $this->FORMATION[$i] = $formation; \r
-           $this->NUM_FORMATION++;\r
-    }    \r
-        function Ajout_erreur ($erreur) {\r
-           $this->Erreur = $erreur; \r
-    }       \r
-    function Erreur() {\r
-        return $this->Erreur;\r
-    }   \r
-    function Nom_patr() {\r
-        return $this->NOM_PATR;\r
-    }\r
-    function Part_nom() {\r
-        return $this->PART_NOM;\r
-    }\r
-    function Prenom() {\r
-        return $this->PRENOM;\r
-    }\r
-    function Nom_usuel() {\r
-        return $this->NOM_USUEL;\r
-    }\r
-    function Part_nomus() {\r
-        return $this->PART_NOMUS;\r
-    }\r
-    function Nom_complet() {\r
-        return $this->NOM_COMPLET;\r
-    }       \r
-    function Civilite() {\r
-        return $this->CIVILITE;\r
-    }  \r
-    function Grade() {\r
-        return $this->GRADE;\r
-    }  \r
-    function Corps() {\r
-        return $this->CORPS;\r
-    }  \r
-    function Corps_Libelle() {\r
-        return $this->CORPS_LIBELLE;\r
-    }     \r
-    function Promo() {\r
-        return $this->PROMO;\r
-    }  \r
-    function Nationalite() {\r
-        return $this->NATIONALITE;\r
-    }    \r
-    function Email() {\r
-        return $this->EMAIL;\r
-    }        \r
-    function Adresse_type($i) {\r
-        return $this->ADRESSE[$i]->TYPE;\r
-    }  \r
-    function Adresse1($i) {\r
-        return $this->ADRESSE[$i]->ADRESS1;\r
-    }\r
-    function Adresse2($i) {\r
-        return $this->ADRESSE[$i]->ADRESS2;\r
-    }\r
-    function Adresse3($i) {\r
-        return $this->ADRESSE[$i]->ADRESS3;\r
-    }\r
-    function Code_pst($i) {\r
-        return $this->ADRESSE[$i]->CODE_PST;\r
-    }\r
-    function Ville($i) {\r
-        return $this->ADRESSE[$i]->VILLE;\r
-    }\r
-    function Zip_cedex($i) {\r
-        return $this->ADRESSE[$i]->ZIPCEDEX;\r
-    }\r
-    function Etat_region($i) {\r
-        return $this->ADRESSE[$i]->ETATREGION;\r
-    }\r
-    function Pays($i) {\r
-        return $this->ADRESSE[$i]->PAYS;\r
-    }\r
-    function Mobile($i) {\r
-        return $this->ADRESSE[$i]->MOBILE;\r
-    }\r
-    function Tel($i) {\r
-        return $this->ADRESSE[$i]->TEL;\r
-    }   \r
-    function Fax($i) {\r
-        return $this->ADRESSE[$i]->FAX;\r
-    }   \r
-    function Num_adresse() {\r
-        return $this->NUM_ADRESSE;\r
-    }   \r
-    function Entreprise($i) {\r
-        return $this->ACTIVITE[$i]->ENTREPRISE;;\r
-    }\r
-    function Raison_sociale($i) {\r
-        return $this->ACTIVITE[$i]->RAISON_SOCIALE;\r
-    }\r
-    function Fonction($i) {\r
-        return $this->ACTIVITE[$i]->FONCTION;\r
-    }           \r
-    function Adresse_act_type($i) {\r
-        return $this->ACTIVITE[$i]->TYPE;\r
-    }\r
-    function Adresse_act_adresse1($i) {\r
-        return $this->ACTIVITE[$i]->ADRESS1;\r
-    }\r
-    function Adresse_act_adresse2($i) {\r
-        return $this->ACTIVITE[$i]->ADRESS2;\r
-    }\r
-    function Adresse_act_adresse3($i) {\r
-        return $this->ACTIVITE[$i]->ADRESS3;\r
-    }\r
-    function Adresse_act_code_pst($i) {\r
-        return $this->ACTIVITE[$i]->CODE_PST;\r
-    }\r
-    function Adresse_act_ville($i) {\r
-        return $this->ACTIVITE[$i]->VILLE;\r
-    }\r
-    function Adresse_act_zip_cedex($i) {\r
-        return $this->ACTIVITE[$i]->ZIPCEDEX;\r
-    }\r
-    function Adresse_act_etat_region($i) {\r
-        return $this->ACTIVITE[$i]->ETATREGION;\r
-    }\r
-    function Adresse_act_pays($i) {\r
-        return $this->ACTIVITE[$i]->PAYS;\r
-    }\r
-    function Adresse_act_mobile($i) {\r
-        return $this->ACTIVITE[$i]->MOBILE;\r
-    }\r
-    function Adresse_act_tel($i) {\r
-        return $this->ACTIVITE[$i]->TEL;\r
-    }   \r
-    function Adresse_act_fax($i) {\r
-        return $this->ACTIVITE[$i]->FAX;\r
-    }                            \r
-    function Num_activite() {\r
-        return $this->NUM_ACTIVITE;\r
-    }    \r
-    function Formation($i) {\r
-        return $this->FORMATION[$i]->LIBELLE;\r
-    }                            \r
-    function Num_formation() {\r
-        return $this->NUM_FORMATION;\r
-    }                                                                               \r
-    }\r
-\r
-    class Adresse {     \r
-        var $TYPE; \r
-        var $ADRESS1;\r
-        var $ADRESS2;\r
-        var $ADRESS3;\r
-        var $CODE_PST;\r
-        var $VILLE;\r
-        var $ZIPCEDEX;\r
-        var $ETATREGION;\r
-        var $PAYS;\r
-        var $MOBILE;\r
-        var $TEL;\r
-        var $FAX;\r
-           \r
-    function Adresse ($aa) {\r
-       foreach ($aa as $k=>$v)\r
-           $this->$k = $aa[$k]; \r
-    }               \r
-  }\r
-  \r
-    class Activite {    \r
-        var $ENTREPRISE;\r
-        var $RAISON_SOCIALE;\r
-        var $FONCTION;\r
-        var $TYPE; \r
-        var $ADRESS1;\r
-        var $ADRESS2;\r
-        var $ADRESS3;\r
-        var $CODE_PST;\r
-        var $VILLE;\r
-        var $ZIPCEDEX;\r
-        var $ETATREGION;\r
-        var $PAYS;\r
-        var $MOBILE;\r
-        var $TEL;\r
-        var $FAX;\r
-           \r
-    function Activite ($aa) {\r
-       foreach ($aa as $k=>$v)\r
-           $this->$k = $aa[$k]; \r
-    }               \r
-  }  \r
-  \r
-    class Formation {    \r
-        var $LIBELLE;\r
-           \r
-    function Formation ($aa) {\r
-       foreach ($aa as $k=>$v)\r
-           $this->$k = $aa[$k]; \r
-    }               \r
-  }    \r
-      \r
-    function xml_get_children($vals, &$i) {\r
-        $children = array();\r
-        if (isset($vals[$i]['value'])) $children[] = $vals[$i]['value'];\r
-        \r
-        while (++$i < count($vals)) {\r
-       switch ($vals[$i]['type']) {\r
-       case 'cdata':\r
-           $children[] = $vals[$i]['value'];\r
-           break;\r
-\r
-       case 'complete':\r
-           $children[] = array(\r
-               'tag'        => $vals[$i]['tag'],\r
-               'attributes' => isset($vals[$i]['attributes'])?\r
-                               $vals[$i]['attributes'] : null,\r
-               'value'      => $vals[$i]['value'],\r
-           );\r
-           break;\r
-\r
-       case 'open':\r
-           $children[] = array(\r
-               'tag'        => $vals[$i]['tag'],\r
-               'attributes' => isset($vals[$i]['attributes'])?\r
-                               $vals[$i]['attributes'] : null,\r
-               'children'  => xml_get_children($vals, $i),\r
-           );\r
-           break;\r
-\r
-       case 'close':\r
-           return $children;\r
-       }\r
-       }\r
-    }\r
-\r
-    //fonction principale de récupération des données de l'ancien\r
-    //à indiquer: matricule de l'ancien\r
-    function recupere_infos_ancien($AX_MATRICULE)\r
-    {\r
-        include('config.inc');\r
-               \r
-        $id =13;//13 params persos ancien\r
-        $id_ad = 11; //12 params adresse\r
-        $id_ac = 14; //15 params adresse    \r
-        $id_fo = 1; //1 params fonction \r
-        \r
-        $erreur = "";\r
-        \r
-        // Génération d'un identifiant de "session" inter-serveurs\r
-        $id_session = md5 (uniqid (rand())); \r
-        \r
-        // Connexion au serveur pour lui fournir l'identifiant et lui demander un challenge\r
-        $challenge = file_get_contents ($nom_script_renvoi_challenge."?id_session=".urlencode($id_session));    \r
-        if ($challenge == 'ERROR') \r
-        {\r
-            $erreur = "Erreur lors de la demande du challenge";\r
-        }   \r
-        else\r
-        {\r
-          // On va relire la clé privée (codée)\r
-          $privkeypass = $phrase;\r
-          $pkey_txt = file_get_contents ($chemin_cle_privee);\r
-          if (($pkey_res = openssl_pkey_get_private($pkey_txt, $privkeypass)) == false) \r
-          {\r
-            $erreur = "Erreur lors de l'ouverture de la clé privée";\r
-          }\r
-          else\r
-          {\r
-            // Signature du challenge (cryptage avec clé privée)\r
-            if ( openssl_private_encrypt($challenge, $response, $pkey_res) == false ) \r
-            {\r
-             $erreur = "Erreur lors du cryptage du challenge avec la clé privée";\r
-            }\r
-            else\r
-            {\r
-              // Signature du login (cryptage avec clé privée)\r
-              if ( openssl_private_encrypt($AX_MATRICULE, $AX_MATRICULE_CRYPTE, $pkey_res) == false ) \r
-              {\r
-                 $erreur = "Erreur lors du cryptage du matricule avec la clé privée";\r
-              }\r
-              else\r
-              {\r
-                    // Envoi de la réponse au serveur avec l'identifiant de l'ancien dont on veut récupérer les infos\r
-                    $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
-                                        \r
-                    $parser = xml_parser_create();\r
-                    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);\r
-                    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE,  1);\r
-                    xml_parse_into_struct($parser, $reponse_serveur, $vals, $index);\r
-                    xml_parser_free($parser);\r
-            \r
-                    $tree = array();\r
-                    $tree[] = array(\r
-                       'tag'        => $vals[0]['tag'],\r
-                     'attributes' => isset($vals[0]['attributes'])?\r
-                                       $vals[0]['attributes'] : null,\r
-                    'children'  => xml_get_children($vals, $i = 0),\r
-                     );\r
-            \r
-                    for ($i=0; $i < $id; $i++)  \r
-                    {\r
-                        $val_ancien[$tree[0]['children'][0]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$i]['value'];         \r
-                    }                               \r
-       \r
-                   $Ancien_renvoye = new Ancien($val_ancien);   \r
-                                \r
-                    //adresse while pour nbre d'adresses\r
-                    $num_ad = 0;\r
-                    while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ADRESSE')\r
-                    {\r
-                        for ($i=0; $i <= $id_ad; $i++)  \r
-                        {\r
-                            $val_adresse[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value'];          \r
-                        }                               \r
-                       \r
-                       $Adresse_renvoyee = new Adresse($val_adresse);\r
-                       $Ancien_renvoye->Ajout_adresse($Adresse_renvoyee,$num_ad);    \r
-                \r
-                        //prochaine adresse\r
-                        $num_ad = $num_ad + 1;\r
-                        $id = $id+1;\r
-                    }\r
-    \r
-                    //idem pour activité    \r
-                    $num_ac = 0;\r
-                    while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ACTIVITE')\r
-                    {\r
-                        for ($i=0; $i <= $id_ac; $i++)  \r
-                        {\r
-                            $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value'];         \r
-                           \r
-                            for ($j=0; $j <= $id_ad; $j++)  \r
-                            {\r
-                                $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
-                            }\r
-                        }      \r
-                \r
-                       $Activite_renvoyee = new Activite($val_activite);\r
-                       $Ancien_renvoye->Ajout_activite($Activite_renvoyee,$num_ac);                  \r
-                \r
-                        //prochaine activité\r
-                        $num_ac = $num_ac + 1;\r
-                        $id = $id+1;\r
-                    }\r
-                    //idem pour formation    \r
-                    $num_fo = 0;\r
-                    while ($tree[0]['children'][0]['children'][$id]['tag'] == 'FORMATION')\r
-                    {\r
-                        for ($i=0; $i <= $id_fo; $i++)  \r
-                        {\r
-                            $val_formation[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value'];         \r
-                        }      \r
-                \r
-                       $Formation_renvoyee = new Formation($val_formation);\r
-                       $Ancien_renvoye->Ajout_formation($Formation_renvoyee,$num_fo);                  \r
-                \r
-                        //prochaine formation\r
-                        $num_fo = $num_fo + 1;\r
-                        $id = $id+1;\r
-                    }                    \r
-              }\r
-            }\r
-          }\r
-        }\r
-        \r
-        //erreur indiquée\r
-        if ($erreur)  //erreur ici\r
-        {\r
-            $Ancien_renvoye = new Ancien('');\r
-            $Ancien_renvoye->Ajout_erreur($erreur); \r
-        }\r
-        else\r
-        { //renvoyée par le fichier serveur_renvoie_infos\r
-            $Ancien_renvoye->Ajout_erreur($tree[0]['children'][1]['value']);\r
-        }       \r
-        \r
-        return $Ancien_renvoye;\r
-    }\r
-   \r
-?>\r
+<?php
+
+function ax_load_object(&$obj, $from)
+{
+    foreach ($from as $k=>$v) {
+        if (property_exists($obj, $k)) {
+            $obj->$k = $v;
+        }
+    }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+class Ancien 
+{
+    public $NOM_PATR;
+    public $PART_NOM;
+    public $PRENOM;
+    public $NOM_USUEL;
+    public $PART_NOMUS;
+    public $NOM_COMPLET;
+    public $CIVILITE;
+    public $GRADE;
+    public $CORPS;
+    public $PROMO;
+    public $NATIONALITE;
+    public $CORPS_LIBELLE;
+    public $EMAIL;
+    public $TYPE_ANC;
+    public $ADRESSE = array();
+    public $NUM_ADRESSE = 0;
+    public $ACTIVITE = array();
+    public $NUM_ACTIVITE = 0;
+    public $FORMATION = array();
+    public $NUM_FORMATION = 0;
+    public $Erreur;
+
+    public function __construct($aa) 
+    {
+        if ($aa<>'') {
+            ax_load_object($this, $aa);
+        }
+    }
+    function Ajout_adresse ($adresse,$i) {
+        $this->ADRESSE[$i] = $adresse;
+        $this->NUM_ADRESSE++;
+    }
+    function Ajout_activite ($activite,$i) {
+        $this->ACTIVITE[$i] = $activite;
+        $this->NUM_ACTIVITE++;
+    }
+    function Ajout_formation ($formation,$i) {
+        $this->FORMATION[$i] = $formation;
+        $this->NUM_FORMATION++;
+    }
+    function Ajout_erreur ($erreur) {
+        $this->Erreur = $erreur;
+    }
+    function Erreur() {
+        return $this->Erreur;
+    }
+    function Nom_patr() {
+        return $this->NOM_PATR;
+    }
+    function Part_nom() {
+        return $this->PART_NOM;
+    }
+    function Prenom() {
+        return $this->PRENOM;
+    }
+    function Nom_usuel() {
+        return $this->NOM_USUEL;
+    }
+    function Part_nomus() {
+        return $this->PART_NOMUS;
+    }
+    function Nom_complet() {
+        return $this->NOM_COMPLET;
+    }
+    function Civilite() {
+        return $this->CIVILITE;
+    }
+    function Grade() {
+        return $this->GRADE;
+    }
+    function Corps() {
+        return $this->CORPS;
+    }
+    function Corps_Libelle() {
+        return $this->CORPS_LIBELLE;
+    }
+    function Promo() {
+        return $this->PROMO;
+    }
+    function Nationalite() {
+        return $this->NATIONALITE;
+    }
+    function Email() {
+        return $this->EMAIL;
+    }
+    function Type_anc() {
+        return $this->TYPE_ANC;
+    }
+    function Adresse_type($i) {
+        return $this->ADRESSE[$i]->TYPE;
+    }
+    function Adresse1($i) {
+        return $this->ADRESSE[$i]->ADRESS1;
+    }
+    function Adresse2($i) {
+        return $this->ADRESSE[$i]->ADRESS2;
+    }
+    function Adresse3($i) {
+        return $this->ADRESSE[$i]->ADRESS3;
+    }
+    function Code_pst($i) {
+        return $this->ADRESSE[$i]->CODE_PST;
+    }
+    function Ville($i) {
+        return $this->ADRESSE[$i]->VILLE;
+    }
+    function Zip_cedex($i) {
+        return $this->ADRESSE[$i]->ZIPCEDEX;
+    }
+    function Etat_region($i) {
+        return $this->ADRESSE[$i]->ETATREGION;
+    }
+    function Pays($i) {
+        return $this->ADRESSE[$i]->PAYS;
+    }
+    function Mobile($i) {
+        return $this->ADRESSE[$i]->MOBILE;
+    }
+    function Tel($i) {
+        return $this->ADRESSE[$i]->TEL;
+    }
+    function Fax($i) {
+        return $this->ADRESSE[$i]->FAX;
+    }
+    function Num_adresse() {
+        return $this->NUM_ADRESSE;
+    }
+    function Entreprise($i) {
+        return $this->ACTIVITE[$i]->ENTREPRISE;;
+    }
+    function Raison_sociale($i) {
+        return $this->ACTIVITE[$i]->RAISON_SOCIALE;
+    }
+    function Fonction($i) {
+        return $this->ACTIVITE[$i]->FONCTION;
+    }
+    function Adresse_act_type($i) {
+        return $this->ACTIVITE[$i]->TYPE;
+    }
+    function Adresse_act_adresse1($i) {
+        return $this->ACTIVITE[$i]->ADRESS1;
+    }
+    function Adresse_act_adresse2($i) {
+        return $this->ACTIVITE[$i]->ADRESS2;
+    }
+    function Adresse_act_adresse3($i) {
+        return $this->ACTIVITE[$i]->ADRESS3;
+    }
+    function Adresse_act_code_pst($i) {
+        return $this->ACTIVITE[$i]->CODE_PST;
+    }
+    function Adresse_act_ville($i) {
+        return $this->ACTIVITE[$i]->VILLE;
+    }
+    function Adresse_act_zip_cedex($i) {
+        return $this->ACTIVITE[$i]->ZIPCEDEX;
+    }
+    function Adresse_act_etat_region($i) {
+        return $this->ACTIVITE[$i]->ETATREGION;
+    }
+    function Adresse_act_pays($i) {
+        return $this->ACTIVITE[$i]->PAYS;
+    }
+    function Adresse_act_mobile($i) {
+        return $this->ACTIVITE[$i]->MOBILE;
+    }
+    function Adresse_act_tel($i) {
+        return $this->ACTIVITE[$i]->TEL;
+    }
+    function Adresse_act_fax($i) {
+        return $this->ACTIVITE[$i]->FAX;
+    }
+    function Num_activite() {
+        return $this->NUM_ACTIVITE;
+    }
+    function Formation($i) {
+        return $this->FORMATION[$i]->LIBELLE;
+    }
+    function Num_formation() {
+        return $this->NUM_FORMATION;
+    }
+}
+
+class Adresse
+{
+    public $TYPE;
+    public $ADRESS1;
+    public $ADRESS2;
+    public $ADRESS3;
+    public $CODE_PST;
+    public $VILLE;
+    public $ZIPCEDEX;
+    public $ETATREGION;
+    public $PAYS;
+    public $MOBILE;
+    public $TEL;
+    public $FAX;
+
+    public function __construct($aa) 
+    {
+        ax_load_object($this, $aa);
+    }
+}
+
+class Activite
+{
+    public $ENTREPRISE;
+    public $RAISON_SOCIALE;
+    public $FONCTION;
+    public $TYPE;
+    public $ADRESS1;
+    public $ADRESS2;
+    public $ADRESS3;
+    public $CODE_PST;
+    public $VILLE;
+    public $ZIPCEDEX;
+    public $ETATREGION;
+    public $PAYS;
+    public $MOBILE;
+    public $TEL;
+    public $FAX;
+
+    public function __construct($aa)
+    {
+        ax_load_object($this, $aa);
+    }
+}
+
+class Formation 
+{
+    public $LIBELLE;
+
+    public function __construct($aa) 
+    {
+        ax_load_object($this, $aa);
+    }
+}
+
+function xml_get_children($vals, &$i) 
+{
+    $children = array();
+    if (isset($vals[$i]['value'])) $children[] = $vals[$i]['value'];
+
+    while (++$i < count($vals)) {
+        switch ($vals[$i]['type']) {
+          case 'cdata':
+            $children[] = $vals[$i]['value'];
+            break;
+
+          case 'complete':
+            $children[] = array(
+                'tag'        => $vals[$i]['tag'],
+                'attributes' => isset($vals[$i]['attributes'])?
+                $vals[$i]['attributes'] : null,
+                'value'      => $vals[$i]['value'],
+            );
+            break;
+
+          case 'open':
+            $children[] = array(
+                'tag'        => $vals[$i]['tag'],
+                'attributes' => isset($vals[$i]['attributes'])?
+                $vals[$i]['attributes'] : null,
+                'children'  => xml_get_children($vals, $i),
+            );
+            break;
+
+          case 'close':
+            return $children;
+        }
+    }
+}
+
+//fonction principale de récupération des données de l'ancien
+//à indiquer: matricule de l'ancien
+function recupere_infos_ancien($AX_MATRICULE)
+{
+    include('config.inc');
+
+    $id =14;//14 params persos ancien
+    $id_ad = 11; //12 params adresse
+    $id_ac = 14; //15 params adresse
+    $id_fo = 1; //1 params fonction
+
+    $erreur = "";
+
+    // Génération d'un identifiant de "session" inter-serveurs
+    $id_session = md5 (uniqid (rand()));
+
+    // Connexion au serveur pour lui fournir l'identifiant et lui demander un challenge
+    $challenge = file_get_contents ($nom_script_renvoi_challenge."?id_session=".urlencode($id_session));
+    if ($challenge == 'ERROR')
+    {
+        $erreur = "Erreur lors de la demande du challenge";
+    }
+    else
+    {
+        // On va relire la clé privée (codée)
+        $privkeypass = $phrase;
+        $pkey_txt = file_get_contents ($chemin_cle_privee);
+        if (($pkey_res = openssl_pkey_get_private($pkey_txt, $privkeypass)) == false)
+        {
+            $erreur = "Erreur lors de l'ouverture de la clé privée";
+        }
+        else
+        {
+            // Signature du challenge (cryptage avec clé privée)
+            if ( openssl_private_encrypt($challenge, $response, $pkey_res) == false )
+            {
+                $erreur = "Erreur lors du cryptage du challenge avec la clé privée";
+            }
+            else
+            {
+                // Signature du login (cryptage avec clé privée)
+                if ( openssl_private_encrypt($AX_MATRICULE, $AX_MATRICULE_CRYPTE, $pkey_res) == false )
+                {
+                    $erreur = "Erreur lors du cryptage du matricule avec la clé privée";
+                }
+                else
+                {
+                    // Envoi de la réponse au serveur avec l'identifiant de l'ancien dont on veut récupérer les infos
+                    $reponse_serveur .= file_get_contents ($nom_script_renvoi_infos."?id_session=".urlencode($id_session)."&AX_MATRICULE_CRYPTE=".urlencode($AX_MATRICULE_CRYPTE)."&response=".urlencode($response));
+
+                    $parser = xml_parser_create();
+                    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
+                    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE,  1);
+                    xml_parse_into_struct($parser, $reponse_serveur, $vals, $index);
+                    xml_parser_free($parser);
+
+                    $tree = array();
+                    $tree[] = array(
+                        'tag'        => $vals[0]['tag'],
+                        'attributes' => isset($vals[0]['attributes'])?
+                        $vals[0]['attributes'] : null,
+                        'children'  => xml_get_children($vals, $i = 0),
+                    );
+
+                    for ($i=0; $i < $id; $i++)
+                    {
+                        $val_ancien[$tree[0]['children'][0]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$i]['value'];
+                    }
+
+                    $Ancien_renvoye = new Ancien($val_ancien);
+
+                    //adresse while pour nbre d'adresses
+                    $num_ad = 0;
+                    while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ADRESSE')
+                    {
+                        for ($i=0; $i <= $id_ad; $i++)
+                        {
+                            $val_adresse[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value'];
+                        }
+
+                        $Adresse_renvoyee = new Adresse($val_adresse);
+                        $Ancien_renvoye->Ajout_adresse($Adresse_renvoyee,$num_ad);
+
+                        //prochaine adresse
+                        $num_ad = $num_ad + 1;
+                        $id = $id+1;
+                    }
+
+                    //idem pour activité
+                    $num_ac = 0;
+                    while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ACTIVITE')
+                    {
+                        for ($i=0; $i <= $id_ac; $i++)
+                        {
+                            $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value'];
+
+                            for ($j=0; $j <= $id_ad; $j++)
+                            {
+                                $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['value'];
+                            }
+                        }
+
+                        $Activite_renvoyee = new Activite($val_activite);
+                        $Ancien_renvoye->Ajout_activite($Activite_renvoyee,$num_ac);
+
+                        //prochaine activité
+                        $num_ac = $num_ac + 1;
+                        $id = $id+1;
+                    }
+                    //idem pour formation
+                    $num_fo = 0;
+                    while ($tree[0]['children'][0]['children'][$id]['tag'] == 'FORMATION')
+                    {
+                        for ($i=0; $i <= $id_fo; $i++)
+                        {
+                            $val_formation[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value'];
+                        }
+
+                        $Formation_renvoyee = new Formation($val_formation);
+                        $Ancien_renvoye->Ajout_formation($Formation_renvoyee,$num_fo);
+
+                        //prochaine formation
+                        $num_fo = $num_fo + 1;
+                        $id = $id+1;
+                    }
+                }
+            }
+        }
+    }
+
+    //erreur indiquée
+    if ($erreur)  //erreur ici
+    {
+        $Ancien_renvoye = new Ancien('');
+        $Ancien_renvoye->Ajout_erreur($erreur);
+    }
+    else
+    { //renvoyée par le fichier serveur_renvoie_infos
+        $Ancien_renvoye->Ajout_erreur($tree[0]['children'][1]['value']);
+    }
+
+    return $Ancien_renvoye;
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>