post_xml); $contenu = trim($xp_post_xml->query("/demande/document/contenu")->item(0)->nodeValue); $md5 = trim($xp_post_xml->query("/demande/document/md5")->item(0)->nodeValue); $extension = $xp_post_xml->query("/demande/document/extension")->item(0)->nodeValue; $file_str = base64_decode(trim($contenu)); $file_str_md5 = md5($file_str); if(!empty($md5) && $file_str_md5 != $md5) throw new Exception(utf8_encode("Le document a été altéré durant le transfert")); //On cree le fichier à importer file_put_contents("tmp".$file_str_md5.".".$extension,$file_str); $file_to_upload = getcwd()."/tmp".$file_str_md5.".".$extension; //POST sur Choose_file.php $url = $this->maarch_url."/choose_file.php"; $method = "POST"; $post = array('file' =>"@$file_to_upload"); $this->http_request($url,$method,$post); unlink(getcwd()."/tmp".$file_str_md5.".".$extension); //On recupere la session avec le fichier inseré $session = $this->getSession(); if(!empty($session['erreur'])) throw new Exception(html_entity_decode($session['error'],ENT_COMPAT,'UTF-8')); //On cherche la date limite $session['courrier']['chk_date_limite'] = 'Y'; $session['courrier']['type_courrier'] = trim($xp_post_xml->query("/demande/metadata/type")->item(0)->nodeValue); $session['courrier']['new_type_courrier'] = 'Y'; $this->setSession($session); $url = $this->maarch_url."/date_limite.php"; $method = "GET"; $this->http_request($url,$method); $session = $this->getSession(); //On prepare le post final $post=array(); //Nouveau et Metadata $nouveau = trim($xp_post_xml->query("/demande/nouveau")->item(0)->nodeValue); if(preg_match("/true/i",$nouveau) == 0) { //L'affaire existe-t-elle $tmp_url = $this->maarch_url."/choose_doc_result.php"; $tmp_method = "POST"; $tmp_post = array("find_folder" => "true","doc_id"=>trim($xp_post_xml->query("/demande/metadata/id")->item(0)->nodeValue)); $this->http_request($tmp_url,$tmp_method,$tmp_post); $session = $this->getSession(); if(!empty($session['error'])) throw new Exception(html_entity_decode($session['error'],ENT_COMPAT,'UTF-8')); //Affaire existante $session['courrier']['new_folder'] = FALSE; //$session['courrier']['folder_id'] = trim($xp_post_xml->query("/demande/metadata/id")->item(0)->nodeValue); } else { //Nouvelle Affaire $session['courrier']['new_folder'] = TRUE; } $sens = trim($xp_post_xml->query("/demande/metadata/sens")->item(0)->nodeValue); if(preg_match("/entrant/i",$sens) == 0) { //Sortant = départ $session['courrier']["is_ingoing"] = FALSE; $session['courrier']["attach"] = FALSE; } else { //Entrant = arrivé $session['courrier']["is_ingoing"] = TRUE; $datearrivee = trim($xp_post_xml->query("/demande/metadata/datearrivee")->item(0)->nodeValue); $post['jour_arrivee'] = date("d",strtotime($datearrivee)); $post['mois_arrivee'] = date("m",strtotime($datearrivee)); $post['annee_arrivee'] = date("Y",strtotime($datearrivee)); if(preg_match("/true/i",$nouveau) == 0) { $post['new_limit_date'] = $session['courrier']['jour_limite']."-".$session['courrier']['mois_limite']."-".$session['courrier']['annee_limite']; } } $post['priority'] = trim($xp_post_xml->query("/demande/metadata/priorite")->item(0)->nodeValue); $post['nature'] = trim($xp_post_xml->query("/demande/metadata/nature")->item(0)->nodeValue); $post['objet'] = trim($xp_post_xml->query("/demande/metadata/objet")->item(0)->nodeValue); $datecourrier = trim($xp_post_xml->query("/demande/metadata/datecourrier")->item(0)->nodeValue); $post['jour_courrier'] = date("d",strtotime($datecourrier)); $post['mois_courrier'] = date("m",strtotime($datecourrier)); $post['annee_courrier'] = date("Y",strtotime($datecourrier)); //Traitement $db_link = mysql_connect($session['config']['databaseserver'],$session['config']['databaseuser'],$session['config']['databasepassword']); mysql_select_db($session['config']['databasename'],$db_link); //Service $sql = "SELECT value FROM ext_references WHERE field='group_id' AND reference_id ='".trim($xp_post_xml->query("/demande/traitement/service")->item(0)->nodeValue)."'"; if($query = mysql_query($sql,$db_link)) { if($res = mysql_fetch_object($query) ) $service = $res->value; else throw new Exception(utf8_encode("Le service demandé n'existe pas dans l'annuaire")); } else { throw new Exception(utf8_encode(mysql_error($db_link))); } //Service renseigné $session['courrier']['service'] = $service; //Utilisateur $sql = "SELECT value FROM ext_references WHERE field='user_id' AND reference_id ='".trim($xp_post_xml->query("/demande/traitement/utilisateur")->item(0)->nodeValue)."'"; $query = mysql_query($sql,$db_link); if( $res = mysql_fetch_object($query) ) $user = $res->value; //Utilisateur renseigné -> on change la liste de diffusion if(isset($user) && !empty($user)) { $session['diff'][0]['UserID'] = $user; } //Utilisateur non renseigné -> on charge la liste de diffusion du service else { $this->setSession($session); //Chargement de la liste de diffusion $tmp_url = $this->maarch_url."/liste_diffusion.php"; $tmp_method = "GET"; $this->http_request($tmp_url,$tmp_method); $session = $this->getSession(); } if(preg_match("/entrant/i",$sens) == 0) { //Expediteur $exp_ext_id = trim($xp_post_xml->query("/demande/emetteur/id")->item(0)->nodeValue); $no_ext_id = true; if( trim($exp_ext_id) != "") { $sql= "SELECT value FROM ext_references WHERE field='ID' AND type ='Ecare' AND reference_id ='".trim($exp_ext_id)."'"; $query = mysql_query($sql,$db_link); if( $res = mysql_fetch_object($query) ) { $session['exp_id'] = $res->value; $no_ext_id = false; } else { //throw new Exception(utf8_encode("Le destinataire ".$exp_ext_id." n'existe pas")); } } if($no_ext_id) { preg_match_all('/(\d*)(.*)/',trim($xp_post_xml->query("/demande/emetteur/adresse")->item(0)->nodeValue),$adresse); $session['new_exp']['LASTNAME'] = trim($xp_post_xml->query("/demande/emetteur/nom")->item(0)->nodeValue); $session['new_exp']['FIRSTNAME'] = trim($xp_post_xml->query("/demande/emetteur/prenom")->item(0)->nodeValue); $session['new_exp']['SOCIETY'] = trim($xp_post_xml->query("/demande/emetteur/societe")->item(0)->nodeValue); //$session['new_exp']['CIVILITY']; //fonction en mode corporate $session['new_exp']['FUNCTION'] = trim($xp_post_xml->query("/demande/emetteur/fonction")->item(0)->nodeValue); //CUSTOM_T9 $session['new_exp']['STREET_NUM'] = trim($adresse[1][0]); //CUSTOM_T10 $session['new_exp']['STREET'] = trim($adresse[2][0]); //CUSTOM_T11 $session['new_exp']['TOWN'] = trim($xp_post_xml->query("/demande/emetteur/ville")->item(0)->nodeValue); //CUSTOM_T12 $session['new_exp']['CP'] = trim($xp_post_xml->query("/demande/emetteur/cp")->item(0)->nodeValue); //CUSTOM_T13 } } else { //Emetteur $emet_ext_id = trim($xp_post_xml->query("/demande/emetteur/id")->item(0)->nodeValue); $no_emet_id = true; if( trim($emet_ext_id) != "") { $sql= "SELECT value FROM ext_references WHERE field='ID' AND type ='Ecare' AND reference_id ='".trim($emet_ext_id)."'"; $query = mysql_query($sql,$db_link); if( $res = mysql_fetch_object($query) ) { $session['emet_id'] = $res->value; $no_emet_id = false; } else { //throw new Exception(utf8_encode("L'emetteur ".$emet_ext_id." n'existe pas")); } } if($no_emet_id) { preg_match_all('/(\d*)(.*)/',trim($xp_post_xml->query("/demande/emetteur/adresse")->item(0)->nodeValue),$adresse); $session['courrier']['emetteur'] = "dest"; $session['new_emet']['LASTNAME'] = trim($xp_post_xml->query("/demande/emetteur/nom")->item(0)->nodeValue); $session['new_emet']['FIRSTNAME'] = trim($xp_post_xml->query("/demande/emetteur/prenom")->item(0)->nodeValue); //$session['new_emet']['CIVILITY']; //fonction en mode corporate $session['new_emet']['SOCIETY'] = trim($xp_post_xml->query("/demande/emetteur/societe")->item(0)->nodeValue); $session['new_emet']['FUNCTION'] = trim($xp_post_xml->query("/demande/emetteur/fonction")->item(0)->nodeValue); //CUSTOM_T9 $session['new_emet']['STREET_NUM'] = trim($adresse[1][0]); $session['new_emet']['STREET'] = trim($adresse[2][0]); //CUSTOM_T11 $session['new_emet']['TOWN'] = trim($xp_post_xml->query("/demande/emetteur/ville")->item(0)->nodeValue); //CUSTOM_T12 $session['new_emet']['CP'] = trim($xp_post_xml->query("/demande/emetteur/cp")->item(0)->nodeValue); //CUSTOM_T13 } } $this->setSession($session); $url = $this->maarch_url."file_index.php"; $method = "POST"; $post['diffuser'] = 'Enregistrer'; $this->http_request($url,$method,$post); $session = $this->getSession(); if(!empty($session['error'])) throw new Exception(html_entity_decode($session['error'],ENT_COMPAT,'UTF-8')); if( empty($session['indexation_id']) || empty($session['indexation_ged_id']) ) throw new Exception(utf8_encode("L'indexation ne s'est pas terminée correctement")); //FIN : On ajoute la réponse de retour $this->add_succes_node("idaffaire",$session['indexation_id']); $this->add_succes_node("idcourrier",$session['indexation_ged_id']); ?>