예제 #1
0
 /**
 Cette fonction ajoute un element de la table adherent à la BDD. 
 */
 function ADD()
 {
     $util = new Utilisateur();
     $util->code_utilisateur = $this->code_utilisateur;
     $util->nom_groupe = $this->nom_groupe != '' ? $this->nom_groupe : 'utilisateur';
     $util->nom_utilisateur = $this->nom_utilisateur;
     $util->password = $this->password;
     $util->nb_connect = $this->nb_connect != '' ? $this->nb_connect : 10;
     $util->etat = $this->etat != '' ? $this->etat : 'actif';
     $util->lang = $this->lang;
     $id_utilisateur = $util->ADD();
     $id_interne = is_numeric($this->id_interne) ? $this->id_interne : 0;
     $nom = Sql_prepareTexteStockage($this->nom);
     $prenom = Sql_prepareTexteStockage($this->prenom);
     $enseigne = Sql_prepareTexteStockage($this->enseigne);
     $raison_sociale = Sql_prepareTexteStockage($this->raison_sociale);
     $adresse1 = Sql_prepareTexteStockage($this->adresse1);
     $adresse2 = Sql_prepareTexteStockage($this->adresse2);
     $cp = Sql_prepareTexteStockage($this->cp);
     $ville = Sql_prepareTexteStockage($this->ville);
     $pays = Sql_prepareTexteStockage($this->pays);
     $telephone = Sql_prepareTexteStockage($this->telephone);
     $fax = Sql_prepareTexteStockage($this->fax);
     $email = $this->email;
     $site_internet = $this->site_internet;
     $entreprise_qualifiee = $this->entreprise_qualifiee;
     $logo = $this->logo;
     $categorie = Sql_prepareTexteStockage($this->categorie);
     $nature_lien = Sql_prepareTexteStockage($this->nature_lien);
     $info_publique = Sql_prepareTexteStockage($this->info_publique);
     $categorie1 = $this->categorie1;
     $categorie2 = $this->categorie2;
     $categorie3 = $this->categorie3;
     $categorie4 = $this->categorie4;
     $categorie5 = $this->categorie5;
     $categorie6 = $this->categorie6;
     $categorie7 = $this->categorie7;
     $categorie8 = $this->categorie8;
     $categorie9 = $this->categorie9;
     $categorie10 = $this->categorie10;
     $latitude = strtr($this->latitude, ",", ".");
     $longitude = strtr($this->longitude, ",", ".");
     $etat = $this->etat != '' ? $this->etat : 'actif';
     $date_add = time();
     $info_adherent = $this->info_adherent;
     $sql = " INSERT INTO " . $GLOBALS['prefix'] . "adherent\n\t\t\t\t\t(id_utilisateur, id_interne, enseigne, nom, prenom, raison_sociale, adresse1, adresse2, \n\t\t\t\t\tcp, ville, pays, telephone, fax, \n\t\t\t\t\temail, site_internet, entreprise_qualifiee, logo, latitude, longitude, categorie, nature_lien, info_publique,\n\t\t\t\t\tcategorie1, categorie2, categorie3, categorie4, categorie5, \n\t\t\t\t\tcategorie6, categorie7, categorie8, categorie9, categorie10, \n\t\t\t\t\tetat, date_add, info_adherent)\n\t\t\t\tVALUES \n\t\t\t\t\t('{$id_utilisateur}', '{$id_interne}', '{$enseigne}', '{$nom}','{$prenom}', '{$raison_sociale}', '{$adresse1}', '{$adresse2}', \n\t\t\t\t\t'{$cp}', '{$ville}', '{$pays}', '{$telephone}', '{$fax}', \n\t\t\t\t\t'{$email}', '{$site_internet}', '{$entrprise_qualifiee}', '{$logo}', '{$latitude}', '{$longitude}', '{$categorie}', '{$nature_lien}', '{$info_publique}', \n\t\t\t\t\t'{$categorie1}', '{$categorie2}', '{$categorie3}', '{$categorie4}', '{$categorie5}', \n\t\t\t\t\t'{$categorie6}', '{$categorie7}', '{$categorie8}', '{$categorie9}', '{$categorie10}', \n\t\t\t\t\t'{$etat}', '{$date_add}', '{$info_adherent}')";
     if (!Sql_exec($sql)) {
         $this->setError(ERROR);
     }
     if (!$this->isError()) {
         $id_adherent = Sql_lastInsertId();
         Lib_sqlLog($sql . " -- {$id_adherent}");
         $this->id_adherent = $this->id_adherent;
         return $id_adherent;
     }
     return;
 }
예제 #2
0
/**
* - Cas Login_Nouveau :
* . 
*      Le cas Login_Nouveau patati patata....
*/
function Login_Nouveau($data_in = array())
{
    Lib_myLog("action: " . $data_in['action']);
    foreach ($GLOBALS['tab_globals'] as $global) {
        global ${$global};
    }
    Lib_myLog("IN: ", $data_in);
    Lib_myLog("FILE: ", __FILE__);
    $continue = true;
    preg_match("`([0-9]{2})/([0-9]{2})/([0-9]{4})`", $data_in['date_naissance'], $regs);
    /*=============*/
    Lib_myLog("Une nouvelle personne tente de s'inscrire. On recherche si elle n'existe pas deja");
    $personnes = BasePersonnes_chercher($data_in['nom'], $data_in['prenom']);
    if (count($personnes) != 0) {
        /*=============*/
        Lib_myLog("Plusieurs personnes portant ce nom et prenom ont ete trouvees");
        foreach ($personnes as $personne) {
            if ($personne['date_naissance'] == $data_in['date_naissance']) {
                /*=============*/
                Lib_myLog("Une personne avec la meme date de naissance a ete trouvee");
                $utilisateurs = Utilisateurs_chercher('', '', $personne['id_personne']);
                if (count($utilisateurs) != 0) {
                    /*=============*/
                    Lib_myLog("Un login a ete trouve pour cette personne");
                    // On la re-dirige sur la page de login en affichant le formulaire de demande de mot de passe perdu
                    $data_out['message_oubli'] = $MSG[$lang]['%%Action_DoublonPersonne%%'];
                    $data_out['email'] = $data_in['email'];
                    $data_out['date_naissance'] = $data_in['date_naissance'];
                    $data_out['login_oubli_visible'] = 1;
                    $continue = false;
                }
                // On mémorise l'identifiant de la personne trouvée et on sort de la boucle foreach
                $id_personne = $personne['id_personne'];
                break;
            }
        }
    }
    if ($continue && !checkdate($regs[2], $regs[1], $regs[3])) {
        $data_out = $data_in;
        $data_out['login_nouveau_visible'] = 1;
        $data_out['message_nouveau'] = $MSG[$lang]['%%Action_ErreurDateNaissance%%'];
        $continue = false;
    }
    if ($continue && $data_in['mdp_souhaite'] != $data_in['mdp_bis']) {
        $data_out = $data_in;
        $data_out['mdp_souhaite'] = $data_out['mdp_bis'] = '';
        $data_out['login_nouveau_visible'] = 1;
        $data_out['message_nouveau'] = $MSG[$lang]['%%Action_ErreurDefinitionMDP%%'];
        $continue = false;
    }
    if ($continue) {
        $data_out = $data_in;
        $utilisateurs = Utilisateurs_chercher($data_in['utilisateur_souhaite']);
        if (count($utilisateurs) != 0) {
            $data_out['login_nouveau_visible'] = 1;
            $data_out['utilisateur_souhaite'] = $data_out['mdp_souhaite'] = $data_out['mdp_bis'] = '';
            $data_out['message_nouveau'] = $MSG[$lang]['%%Action_UtilisateurExistant%%'];
            $continue = false;
        }
    }
    if ($continue) {
        // Si aucune personne n'avait été trouvée précédemment, on rajoute la personne
        if (!isset($id_personne)) {
            /*=============*/
            Lib_myLog("Ajout du nouvel objet personne");
            $personne = new BasePersonne($data_in['nom'], $data_in['prenom'], $data_in['date_naissance']);
            $id_personne = $personne->ADD();
        } else {
            $personne = BasePersonne_recuperer($id_personne);
        }
        /*=============*/
        Lib_myLog("Ajout du nouvel email");
        $email = new BaseEmail($personne->getId(), $personne->getTypeMoi(), 'contact', $data_in['email']);
        $email->ADD();
        preg_match("`([0-9]{2})/([0-9]{2})/([0-9]{4})`", $personne->DateNaissance(), $regs);
        $code_utilisateur = substr(Lib_canonize($personne->getPrenom()), 0, 1);
        $code_utilisateur .= $regs[1] . $regs[2] . $regs[3];
        $code_utilisateur .= substr(Lib_canonize($personne->getNom()), 0, 1);
        /*=============*/
        Lib_myLog("Code genere: {$code_utilisateur}");
        /*=============*/
        Lib_myLog("Ajout du nouvel utilisateur");
        $utilisateur = new Utilisateur($id_personne, $code_utilisateur, '', $data_in['utilisateur_souhaite'], $data_in['mdp_souhaite'], '', 'attente_activation', $data_in['info_utilisateur']);
        $utilisateur->ADD();
        // On stocke le nouvel événement
        $evenement = Evenement_ajout(1, $utilisateur->getId(), $utilisateur->getTypeMoi(), 'add', $utilisateur->getEtat());
        $data_out = "";
        $data_out['message'] = "Vous allez recevoir un mail...";
        /*=============*/
        Lib_myLog("On informe l'administrateur qu'une demande de compte a ete faite");
        $entete = "MIME-Version: 1.0\n";
        $entete .= "Content-type: text/html; charset=iso-8859-1\n";
        $entete .= "From: SITE AROEVEN <" . $GLOBALS['mail_admin'] . ">\n";
        $destinataire = $GLOBALS['mail_admin'];
        $sujet = "Demande d'acces";
        $modele_mail = file("modeles/Mail_DemandeAcces.htm");
        $modele_mail = implode($modele_mail, "");
        $corps = preg_replace("`%%prenom%%`", $personne->getPrenom(), $modele_mail);
        $corps = preg_replace("`%%nom%%`", $personne->getNom(), $corps);
        // On envoie l'email
        @mail($destinataire, $sujet, $corps, $entete);
        $data_out['message'] = $MSG[$lang]['%%Action_ConfirmationInscription%%'];
    }
}
예제 #3
0
function ExecActions($action)
{
    /*=============*/
    Lib_myLog("action: ", $action);
    // On recupere la configuration issue de conf.php
    global $lang, $MSG, $secure;
    // On recupere tous les objet contenant les donnees
    global $data_in, $data_out, $data_srv, $session;
    // Initialization des variables
    global $message;
    switch ($action) {
        case "Admin_Utilisateurs":
            /*=============*/
            Lib_myLog("Recuperation de la liste des utilisateurs de la base");
            $data_out['tab_groupes'] = Groupes_chercher('*');
            $data_out['liste_utilisateurs'] = Utilisateurs_chercher('*');
            // On renseigne l'indicateur "code" pour piloter l'affichage du menu javascript
            $data_out['code'] = 'acces_client';
            $data_out['page'] = 'acces.php';
            break;
        case "Utilisateurs_ADD":
            $F5 = Lib_checkF5($session, $data_in['timestamp']);
            $continue = $F5 ? false : true;
            // On intialise une pseudo-transaction qui nous permettre de stocker tous les objets rajoutés à la base
            // pour pouvoir les supprimer si nécessaire
            $transaction = new Collection();
            if ($continue) {
                $utilisateur = Utilisateur_recuperer($data_in['nom_utilisateur']);
                if ($continue && $utilisateur->id_utilisateur) {
                    /*=============*/
                    Lib_myLog("Le code d'utilisateur existe deja");
                    $data_out['message_ko'] = 'Ce code utilisateur existe d&eacute;j&agrave';
                    $continue = false;
                }
                if ($continue) {
                    /*=============*/
                    Lib_myLog("Creation nouvel objet Utilisateur");
                    $utilisateur = new Utilisateur();
                    $utilisateur->societe = $data_in['societe'];
                    $utilisateur->nom_personne = $data_in['nom_personne'];
                    $utilisateur->prenom_personne = $data_in['prenom_personne'];
                    $utilisateur->email = $data_in['email'];
                    $utilisateur->nom_utilisateur = $data_in['nom_utilisateur'];
                    $utilisateur->nom_groupe = 'utilisateur';
                    $utilisateur->password = $data_in['password'];
                    $utilisateur->nb_connect = 10;
                    $utilisateur->etat = 'actif';
                    $id_utilisateur = $utilisateur->ADD();
                    /*=============*/
                    Lib_myLog("Creation d'un repertoire pour l'utilisateur");
                    mkdir("../../documents/{$id_utilisateur}");
                    chmod("../../documents/{$id_utilisateur}", 0705);
                    // On créé un fichier d'index pour que personne ne puisse voir directement le contenu du répertoire
                    $file = "../../documents/{$id_utilisateur}/index.php";
                    $index = fopen($file, "w");
                    fputs($index, "<?");
                    fputs($index, "header('HTTP/1.0 404 Not Found');");
                    fputs($index, "?>");
                    fclose($index);
                }
            }
            if ($continue) {
                $data_out['message_ok'] = "L'acc&eacute;s a bien &eacute;t&eacute; rajout&eacute;";
                ExecActions('Admin_Utilisateurs');
            } else {
                if ($F5) {
                    /*=============*/
                    Lib_myLog("Tentative de F5!");
                    $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                    ExecActions('Admin_Utilisateurs');
                } else {
                    /*=============*/
                    Lib_myLog("Annulation de l'ajout suite a une erreur");
                    if (!isset($data_out['message_ko'])) {
                        $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Mysql%%'];
                    }
                    // On ré-affiche les données dans la page de saisie...
                    $data_out = array_merge($data_out, $data_in);
                    ExecActions('Admin_Utilisateurs');
                }
            }
            break;
        case "Utilisateurs_UPD":
            /*=============*/
            Lib_myLog("Mise a jour de l'utilisateur");
            $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']);
            $utilisateur->societe = $data_in['societe'];
            $utilisateur->nom_personne = $data_in['nom_personne'];
            $utilisateur->prenom_personne = $data_in['prenom_personne'];
            $utilisateur->email = $data_in['email'];
            $utilisateur->nom_utilisateur = $data_in['nom_utilisateur'];
            $utilisateur->password = $data_in['password'];
            $utilisateur->UPD();
            $data_out['message_ok'] = "L'utilisateur a bien &eacute;t&eacute; mis &agrave; jour";
            ExecActions("Admin_Utilisateurs");
            break;
        case "Utilisateurs_DEL":
            /*=============*/
            Lib_myLog("Suppression de l'utilisateur avec l'identifiant " . $data_in['id_utilisateur'] . " de la base");
            $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']);
            $utilisateur->DEL();
            /*=============*/
            Lib_myLog("Suppression du repertoire de l'utilisateur");
            deldir("../../documents/" . $utilisateur->id_utilisateur);
            $data_out['message_ok'] = "L'utilisateur a bien &eacute;t&eacute; &eacute;t&eacute; supprim&eacute;";
            ExecActions("Admin_Utilisateurs");
            break;
        case "POPUP_Utilisateur_UPD":
            // Action utilisée pour la saisie semi-automatique et appelée par la fonction AJAX
            /*=============*/
            Lib_myLog("Recuperation de l'utilisateur");
            $data_out = Utilisateurs_chercher('', $data_in['id_utilisateur']);
            $data_out['tab_groupes'] = Groupes_chercher('*');
            $data_out['page'] = 'acces_popup_utilisateur_upd.php';
            break;
        case "Documents_Accueil":
            /*=============*/
            Lib_myLog("Recuperation de l'arborescence");
            $data_out['liste_fils'] = Docs_construire($data_in['id_utilisateur']);
            $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']);
            $data_out['nom_personne'] = $utilisateur->nom_personne;
            $data_out['prenom_personne'] = $utilisateur->prenom_personne;
            $data_out['id_utilisateur'] = $data_in['id_utilisateur'];
            // On positionne par défaut les id_pere et les id_grand_pere
            $data_out['id_pere'] = 0;
            $data_out['id_fils'] = 0;
            if (isset($data_in['id_doc'])) {
                /*=============*/
                Lib_myLog("Recuperation de l'ascendance");
                $doc = Doc_recuperer($data_in['id_doc']);
                /*=============*/
                Lib_myLog("Famille: " . $doc->famille);
                $tab_famille = explode('-', $doc->famille);
                /*=============*/
                Lib_myLog("Nb elements: " . count($tab_famille));
                if (count($tab_famille) == 2) {
                    $data_out['id_pere'] = $tab_famille[0];
                }
                if (count($tab_famille) == 3) {
                    $data_out['id_pere'] = $tab_famille[0];
                    $data_out['id_fils'] = $tab_famille[1];
                }
            }
            // On renseigne l'indicateur "code" pour piloter l'affichage du menu javascript
            $data_out['code'] = 'acces_client';
            $data_out['page'] = 'documents.php';
            break;
        case "Element_Bouger":
            $tab_positions = explode("|", $data_in['tab_list']);
            $i = 1;
            foreach ($tab_positions as $position) {
                $projet = Doc_recuperer($position);
                $projet->ordre = $i;
                $projet->UPD();
                $i++;
            }
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            ExecActions('Documents_Accueil');
            break;
        case "Element_DEL":
            /*=============*/
            Lib_myLog("Recuperation de l'element");
            $obj_element_initial = Doc_recuperer($data_in['id_doc']);
            $id_utilisateur = $obj_element_initial->id_utilisateur;
            $data_out['message_ok'] = "Le dossier a bien &eacute;t&eacute; supprim&eacute;";
            if ($obj_element_initial->type_pere == 'document') {
                $url = $obj_element_initial->intitule_canonize;
                /*=============*/
                Lib_myLog("Suppression physique du document");
                unlink("../../documents/{$id_utilisateur}/{$url}");
                $data_out['message_ok'] = "Le document a bien &eacute;t&eacute supprim&eacute";
            }
            /*=============*/
            Lib_myLog("Retablissement de l'ordre sans coupure");
            $args_elements['famille'] = $obj_element_initial->famille;
            $args_elements['sup_ordre'] = $obj_element_initial->ordre;
            $args_elements['id_utilisateur'] = $obj_element_initial->id_utilisateur;
            $elements = Docs_chercher($args_elements);
            foreach ($elements as $element) {
                $obj_element = Doc_recuperer($element['id_doc']);
                $obj_element->ordre--;
                $obj_element->UPD();
            }
            $obj_element_initial->DEL();
            $data_in['id_utilisateur'] = $id_utilisateur;
            ExecActions('Documents_Accueil');
            break;
        case "Categorie_ADD":
            $args_arbos['famille'] = '';
            if ($data_in['id_pere'] != '') {
                /*=============*/
                Lib_myLog("Il s'agit d'un ajout de sous-element !");
                $arbo_pere = Doc_recuperer($data_in['id_pere']);
                $args_arbos['famille'] = $arbo_pere->famille . $arbo_pere->id_pere . '-';
            }
            /*=============*/
            Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element");
            $arbos = Docs_chercher($args_arbos);
            $ordre = count($arbos);
            $ordre++;
            /*=============*/
            Lib_myLog("Rajout d'un nouvel element");
            $arbo = new Doc();
            $arbo->id_utilisateur = $data_in['id_utilisateur'];
            if ($data_in['id_pere'] != '') {
                $arbo->famille .= $arbo_pere->famille . $arbo_pere->id_pere . '-';
            }
            $arbo->type_pere = 'arbo';
            $arbo->ordre = $ordre;
            $arbo->etat = 'actif';
            $arbo->intitule = $data_in['intitule'];
            $id_doc = $arbo->ADD();
            // On positionne dans le "data_in" "id_doc" pour piloter l'affichage dans "Documents_Accueil"
            $data_in['id_doc'] = $id_doc;
            $data_out['message_ok'] = "Le dossier a bien &eacute;t&eacute; rajout&eacute;";
            $arbo->id_pere = $id_doc;
            $arbo->UPD();
            ExecActions('Documents_Accueil');
            break;
        case "Categorie_UPD":
            /*=============*/
            Lib_myLog("Modification de l'intitule d'un element");
            $arbo = Doc_recuperer($data_in['id_doc']);
            $arbo->intitule = $data_in['intitule'];
            $arbo->UPD();
            $data_out['message_ok'] = "Le nom du dossier a bien &eacute;t&eacute; modifi&eacute;";
            ExecActions('Documents_Accueil');
            break;
        case "AJAX_RechercherSousCategories":
            $data_out['liste_sous_categories'] = array();
            /*=============*/
            Lib_myLog("Recuperation du pere");
            $arbo_pere = Doc_recuperer($data_in['id_pere']);
            $args_sous['type_pere'] = 'arbo';
            $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_pere . '-';
            $data_out['liste_sous_categories'] = Docs_chercher($args_sous);
            $cle = 'ordre';
            $val = usort($data_out['liste_sous_categories'], "Lib_compareUp");
            $data_out['page'] = 'ajax_sous_categories.php';
            break;
        case "Fichier_ADD":
            // DEBUT UBR
            // Je déclare en global les variables suivante intialisées lors du chargement des bibliothèques UBR
            global $TEMP_DIR, $_INI;
            //Declare local values
            $_XML_DATA = array();
            // Array of xml data read from the upload_id.redirect file
            $_CONFIG_DATA = array();
            // Array of config data read from the $_XML_DATA array
            $_POST_DATA = array();
            // Array of posted data read from the $_XML_DATA array
            $_FILE_DATA = array();
            // Array of 'FileInfo' objects read from the $_XML_DATA array
            $_FILE_DATA_TABLE = '';
            // String used to store file info results nested between <tr> tags
            $_FILE_DATA_EMAIL = '';
            // String used to store file info results
            $xml_parser = new XML_Parser();
            // XML parser
            $xml_parser->setXMLFile($TEMP_DIR, $_GET['upload_id']);
            // Set upload_id.redirect file
            $xml_parser->setXMLFileDelete($_INI['delete_redirect_file']);
            // Delete upload_id.redirect file when finished parsing
            $xml_parser->parseFeed();
            // Parse upload_id.redirect file
            // Display message if the XML parser encountered an error
            if ($xml_parser->getError()) {
                kak($xml_parser->getErrorMsg(), 1, __LINE__, $_INI['path_to_css_file']);
            }
            $_XML_DATA = $xml_parser->getXMLData();
            // Get xml data from the xml parser
            $_CONFIG_DATA = getConfigData($_XML_DATA);
            // Get config data from the xml data
            $_POST_DATA = getPostData($_XML_DATA);
            // Get post data from the xml data
            $_FILE_DATA = getFileData($_XML_DATA);
            // Get file data from the xml data
            /*=============*/
            Lib_myLog("UBR POST DATA :", $_POST_DATA);
            // On remet dans data_in les valeurs transmises par UBR
            foreach ($_POST_DATA as $key => $value) {
                $data_in[$key] = $value;
            }
            // On récupère les fichiers téléchargés
            for ($i = 0; $i < count($_FILE_DATA); $i++) {
                $file_slot = $_FILE_DATA[$i]->getFileInfo('slot');
                $file_name = $_FILE_DATA[$i]->getFileInfo('name');
                $file_size = $_FILE_DATA[$i]->getFileInfo('size');
                $file_type = $_FILE_DATA[$i]->getFileInfo('type');
                $file_status = $_FILE_DATA[$i]->getFileInfo('status');
                $file_status_desc = $_FILE_DATA[$i]->getFileInfo('status_desc');
                /*=============*/
                Lib_myLog("UBR Fichier telecharge : file_slot: {$file_slot}, file_name: {$file_name}, file_size: {$file_size}, file_type: {$file_type}, file_status: {$file_status}, file_status_desc: {$file_status_desc}");
            }
            // FIN UBR
            $F5 = Lib_checkF5($session, $data_in['timestamp']);
            $continue = $F5 ? false : true;
            if ($continue) {
                $args_arbos['famille'] = '';
                if ($data_in['id_pere'] != 0) {
                    $arbo = Doc_recuperer($data_in['id_pere']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_pere . '-';
                    $args_arbo['id_doc'] = $data_in['id_pere'];
                    $id_categorie = $data_in['id_pere'];
                }
                // Si l'id_fils est positionné, il "surclasse" l'id_pere!
                if (isset($data_in['id_fils']) && $data_in['id_fils'] != 0) {
                    $arbo = Doc_recuperer($data_in['id_fils']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_pere . '-';
                    $args_arbo['id_doc'] = $data_in['id_fils'];
                }
                /*=============*/
                Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element dans l'arbo");
                $arbos = Docs_chercher($args_arbos);
                $ordre = count($arbos);
                $ordre++;
                /*=============*/
                Lib_myLog("On recupere le dossier dont va dependre le document");
                $arbo = Docs_chercher($args_arbo);
                if ($continue && $file_name != '') {
                    /*=============*/
                    Lib_myLog("Recuperation du fichier");
                    $nom_fichier = Lib_nettoie($file_name);
                    /*=============*/
                    Lib_myLog("Nom du fichier : {$nom_fichier}");
                    // On rajoute le document à ce niveau pour disposer de l'id_doc et le mettre dans le nom du document
                    /*=============*/
                    Lib_myLog("Rajout du document dans l'arbo");
                    $new_arbo = new Doc();
                    $new_arbo->id_utilisateur = $data_in['id_utilisateur'];
                    $new_arbo->famille .= $arbo['famille'] . $arbo['id_pere'] . '-';
                    $new_arbo->type_pere = 'document';
                    $new_arbo->ordre = $ordre;
                    $new_arbo->etat = 'actif';
                    $new_arbo->intitule = $data_in['intitule'];
                    $new_arbo->intitule_canonize = $nom_fichier;
                    $id_doc = $new_arbo->ADD();
                    $data_in['id_doc'] = $id_doc;
                    $nom_fichier = $id_doc . '_' . $nom_fichier;
                    $doc = Doc_recuperer($id_doc);
                    $doc->intitule_canonize = $nom_fichier;
                    $doc->UPD();
                    // On met le fichier récupéré avec UBR au bon endroit
                    rename("../ubr/ubr_uploads/{$file_name}", "../../documents/{$data_in['id_utilisateur']}/{$nom_fichier}");
                    $data_out['message_ok'] = "Le document a bien &eacute;t&eacute; rajout&eacute;";
                }
            }
            if ($continue) {
                ExecActions('Documents_Accueil');
            } else {
                if ($F5) {
                    /*=============*/
                    Lib_myLog("Tentative de F5!");
                    $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                    ExecActions('Documents_Accueil');
                } else {
                    ExecActions('Documents_Accueil');
                }
            }
            break;
        case "Fichier_UPD":
            /*=============*/
            Lib_myLog("Modification de l'intitule du fichier");
            $arbo = Doc_recuperer($data_in['id_doc']);
            $arbo->intitule = $data_in['intitule'];
            $arbo->UPD();
            $data_out['message_ok'] = "La description du document a bien &eacute;t&eacute; modifi&eacute;e";
            ExecActions('Documents_Accueil');
            break;
        case "Fichier_Download":
            $doc = Doc_recuperer($data_in['id_doc']);
            $nom_fichier = $doc->intitule_canonize;
            $file = "../../documents/" . $doc->id_utilisateur . "/" . $doc->intitule_canonize;
            $size = filesize($file);
            header("Content-Type: application/octet-stream");
            header("Content-Length: {$size}");
            header("Content-Disposition: attachment; filename={$nom_fichier}");
            header("Content-Transfer-Encoding: binary");
            $fh = fopen("{$file}", "r");
            fpassthru($fh);
            break;
        default:
            ExecActions('Admin_Utilisateurs');
            break;
    }
}