function Utilisateurs_Consulter($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__);
    /*=============*/
    Lib_myLog("Recuperation de la liste des utilisateurs de la base");
    $data_out['tab_groupes'] = Groupes_chercher('*');
    $data_out['tab_users'] = Utilisateurs_chercher('*');
    $data_out['action'] = "Utilisateurs_Consulter";
    $data_out['page'] = 'Utilisateurs_Consulter.php';
}
/**
 * - Cas Login_Oubli :
 * . 
 *      Le cas Login_Oubli patati patata....
 */
function Login_Oubli($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__);
    sleep($GLOBALS['wait_time']);
    $continue = true;
    /*=============*/
    Lib_myLog("On verifie que le compte existe bien et est actif");
    $utilisateur = Utilisateurs_chercher($data_in['user'], '', '', 'actif');
    if ($continue && count($utilisateur) == 0) {
        $continue = false;
    }
    if ($continue) {
        /*=============*/
        Lib_myLog("Le compte est actif, on envoie le mail");
        $entete = "MIME-Version: 1.0\n";
        $entete .= "Content-type: text/html; charset=iso-8859-1\n";
        $entete .= "From: " . $GLOBALS['nom_admin'] . " <" . $GLOBALS['mail_admin'] . ">\n";
        $destinataire = $utilisateur['email'];
        $sujet = "Oubli de mot de passe";
        $modele_mail = file("modeles/Mail_OubliMotDePasse.htm");
        $modele_mail = implode($modele_mail, "");
        $corps = preg_replace("`%%utilisateur%%`", $utilisateur['nom_utilisateur'], $modele_mail);
        $corps = preg_replace("`%%password%%`", $utilisateur['password'], $corps);
        // On envoie l'email
        @mail($destinataire, $sujet, $corps, $entete);
        $data_out['message_retour'] = "Votre mot de passe vient d'&ecirc;tre envoy&eacute; &agrave; votre adresse.";
    }
}
Example #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;
    }
}