Example #1
0
<?php

if (isset($data_out['page'])) {
    include $data_out['page'];
}
//==================================================================================
// On affiche la page sur le client
//==================================================================================
ob_end_flush();
//==================================================================================
// Fermeture systematique de l'acces a la base de donnees
//==================================================================================
if ($db_link) {
    Db_Close($db_link);
}
//==================================================================================
// On stocke les informations d'une page a l'autre sur le serveur
//==================================================================================
if (isset($data_srv)) {
    Lib_writeData($data_srv, $session);
}
/**
 Cette fonction est un grand switch qui sert à renvoyer vers une action donnée en paramètre. 
 @param Action : Action à accomplir…
*/
function ExecActions($action)
{
    /*=============*/
    Lib_myLog("action: ", $action);
    // On recupere la configuration issue de conf.php
    global $lang, $taille_ecran, $MSG, $secure, $cle, $config;
    // On recupere tous les objet contenant les donnees
    global $data_in, $data_out, $data_srv, $session;
    // Initialization des variables
    global $message, $article;
    switch ($action) {
        /**
         * - Cas Site_Accueil :
         * . 
         *      Le cas (par défaut) Site_Accueil recherche tous les articles, s'occupent des critères de tri, et renvoie vers la vue (page) Site_Accueil.php....
         */
        case "Accueil":
            /*=============*/
            Lib_myLog("Recuperation de l'arborescence");
            $data_out['liste_fils'] = Arbo_construire($data_in['code_arbo']);
            if (isset($data_in['id_arbo_pere'])) {
                $data_out['id_arbo_pere'] = $data_in['id_arbo_pere'];
            }
            $data_out['code_arbo'] = $data_in['code_arbo'];
            $data_out['menu_gauche'] = 'arbo';
            $data_out['page'] = 'arbo.php';
            break;
        case "AJAX_ArboUPD":
            $tab_arbo = json_decode($data_in['arbo_json'], true);
            /*=============*/
            Lib_myLog("Arbo recuperee");
            Arbo_recalcul($tab_arbo);
            break;
        case "Element_Etat":
            $arbo = Arbo_recuperer($data_in['id_arbo']);
            $arbo->etat = $arbo->etat == 'actif' ? $arbo->etat = 'inactif' : ($arbo->etat = 'actif');
            $arbo->UPD();
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs
            Lib_writeData('', "ARBO");
            ExecActions('Accueil');
            break;
        case "Element_Bouger":
            $tab_positions = explode("|", $data_in['tab_list']);
            $i = 1;
            foreach ($tab_positions as $position) {
                $projet = Arbo_recuperer($position);
                $projet->ordre = $i;
                $projet->UPD();
                $i++;
            }
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            ExecActions('Accueil');
            break;
        case "Element_DEL":
            /*=============*/
            Lib_myLog("Recuperation de l'element");
            if ($data_in['id_arbo_pere'] != 0) {
                /*=============*/
                Lib_myLog("Suppression de de l'objet de type arbo");
                $obj_element_initial = Arbo_recuperer($data_in['id_arbo']);
                $data_out['message_ok'] = $MSG['fr']['%%arbo_DEL%%'];
            }
            if ($data_in['id_arbo_pere'] == 0) {
                /*=============*/
                Lib_myLog("Suppression des articles dans toutes les langues");
                $obj_element_initial = Arbo_recuperer_par_element($data_in['id_pere'], $data_in['type_pere'], $data_in['code_arbo']);
                // Le même article peut être en pluisieurs langues. On les regroupe grâce au code article
                $args_articles['code'] = 'article-' . $obj_element_initial->id_pere;
                $liste_articles = Articles_chercher($args_articles);
                foreach ($liste_articles as $art) {
                    $article = Article_recuperer($art['id_article']);
                    $article->DEL();
                }
                $data_out['message_ok'] = $MSG['fr']['%%page_DEL%%'];
            }
            /*=============*/
            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['code_arbo'] = $data_in['code_arbo'];
            $elements = Arbos_chercher($args_elements);
            foreach ($elements as $element) {
                $obj_element = Arbo_recuperer($element['id_arbo']);
                $obj_element->ordre--;
                $obj_element->UPD();
            }
            $obj_element_initial->DEL();
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            ExecActions('Accueil');
            break;
        case "Categorie_ADD":
            $args_arbos['code_arbo'] = $data_in['code_arbo'];
            $args_arbos['famille'] = '';
            if ($data_in['id_arbo_pere'] != '') {
                /*=============*/
                Lib_myLog("Il s'agit d'un ajout de sous-element !");
                $arbo_pere = Arbo_recuperer($data_in['id_arbo_pere']);
                $args_arbos['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo_pere . '-';
            }
            /*=============*/
            Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element");
            $arbos = Arbos_chercher($args_arbos);
            $ordre = count($arbos);
            $ordre++;
            /*=============*/
            Lib_myLog("Rajout d'un nouvel element");
            $arbo = new Arbo();
            if ($data_in['id_arbo_pere'] != '') {
                $arbo->famille .= $arbo_pere->famille . $arbo_pere->id_arbo_pere . '-';
            }
            $arbo->code_arbo = $data_in['code_arbo'];
            $arbo->type_pere = 'arbo';
            $arbo->ordre = $ordre;
            $arbo->etat = 'inactif';
            $arbo->intitule = $data_in['intitule'];
            $id_arbo = $arbo->ADD();
            $data_out['message_ok'] = $MSG['fr']['%%arbo_ADD%%'];
            $arbo->id_arbo_pere = $data_in['id_arbo_pere'] != '' ? $data_in['id_arbo_pere'] : $id_arbo;
            /*=============*/
            Lib_myLog("Creation du nouvel article associe a la categorie");
            $article = new Article();
            $article->titre_page = $data_in['intitule'];
            $article->titre = $data_in['intitule'];
            $article->lang = 'fr';
            $article->etat = 'actif';
            $id_article = $article->ADD();
            $article = Article_recuperer($id_article);
            // On définit un code pour pouvoir retrouver le même article en plusieurs langues
            $article->code = 'article-' . $id_article;
            $article->UPD();
            foreach ($GLOBALS['LANGUES'] as $langue) {
                /*=============*/
                Lib_myLog("Ajout de l'article en {$langue}");
                $article->lang = $langue;
                $article->ADD();
            }
            $arbo->id_pere = $id_article;
            $arbo->type_pere = 'article';
            $arbo->UPD();
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            ExecActions('Accueil');
            break;
        case "Categorie_UPD":
            /*=============*/
            Lib_myLog("Modification de l'intitule d'un element");
            $arbo = Arbo_recuperer($data_in['id_arbo']);
            $arbo->intitule = $data_in['intitule'];
            $arbo->UPD();
            /*=============*/
            Lib_myLog("Modification de l'article lie a l'element");
            $article = Article_recuperer($arbo->id_pere);
            $article->titre = $data_in['intitule'];
            $article->UPD();
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            ExecActions('Accueil');
            break;
        case "SELECT_SsCategories":
            $data_out['liste_sous_categories'] = array();
            /*=============*/
            Lib_myLog("Recuperation du pere");
            $arbo_pere = Arbo_recuperer($data_in['id_arbo']);
            $args_sous['not_id_arbo_pere'] = 0;
            $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-';
            $data_out['liste_sous_categories'] = Arbos_chercher($args_sous);
            $cle = 'ordre';
            $val = usort($data_out['liste_sous_categories'], "Lib_compareUp");
            $data_out['page'] = 'arbo_select_ss_categories.php';
            break;
        default:
            ExecActions('Accueil');
            break;
    }
}
/**
* - Cas Login_Go :
* . 
*      Le cas Login_Go patati patata....
*/
function Login_Go($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("Suppression du controle de tentatives");
    $interdiction = Interdiction_recuperer($utilisateur->nom_utilisateur, $_SERVER['REMOTE_ADDR']);
    $interdiction->DEL();
    // Génération de l'identifiant de session...
    $session = Sessions_new();
    Sessions_writeLog($utilisateur->nom_utilisateur, $ip, __LOG_IN__, $session);
    /*=============*/
    Lib_myLog("Nouvelle session: {$session}");
    setcookie($GLOBALS['instance'] . '_session', $session, 0, '/');
    $_COOKIE[$GLOBALS['instance'] . '_session'] = $session;
    /*=============*/
    Lib_myLog("Langue recuperee: {$lang}");
    /*=============*/
    Lib_myLog("Taille recuperee: " . $data_in['taille_ecran']);
    // On sauvegarde la valeur de la langue et de la taille d'écran dans les variables de la session
    $tab_session['lang'] = $lang;
    $tab_session['taille_ecran'] = $data_in['taille_ecran'];
    $tab_session['taille_tableaux'] = $GLOBALS['taille_tableaux'];
    /*=============*/
    Lib_myLog("Recherche des modules autorises");
    $groupe = Groupe_recuperer($utilisateur->nom_groupe);
    $tab_groupe = $groupe->getTab();
    foreach ($tab_groupe['modules'] as $module) {
        /*=============*/
        Lib_myLog("Module autorise: {$module}");
        $tab_session[$module] = 1;
    }
    $tab_utilisateur = $utilisateur->getTab();
    if (!empty($tab_utilisateur['droits'])) {
        /*=============*/
        Lib_myLog("Affectation des droits de l'utilisateur");
        foreach ($tab_utilisateur['droits'] as $champ => $droits) {
            /*=============*/
            Lib_myLog("Champ autorise : {$champ}, droits : {$droits}");
            $tab_session[$champ] = $droits;
        }
    }
    $tab_session['nom_utilisateur'] = $utilisateur->nom_utilisateur;
    $tab_session['id_utilisateur'] = $utilisateur->id_utilisateur;
    $tab_session['nom_groupe'] = $utilisateur->nom_groupe;
    // Pour sécuriser davantage le système, on mémorise le user_agent de l'utilisateur
    $tab_session['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
    // On initialise le fichier qui nous sert à stocker les données de la session dans /tmp
    /*=============*/
    Lib_myLog("Redirection sur accueil");
    $racine = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
    // C'est l'accueil qui doit effectuer la redirection, on ne doit jamais "configurer" l'actions.php de dilasys !
    echo "<html>\n";
    echo "<head>\n";
    echo "<meta http-equiv=\"refresh\" content=\"0;URL={$racine}/accueil.php?groupe={$utilisateur->nom_groupe}\">";
    echo "</head>\n";
    echo "<body>\n";
    echo "</body>\n";
    echo "<html>\n";
    // On sort pour ne pas continuer à afficher Login_Admin.php!
    Lib_writeData($tab_session, "session_" . $session);
    exit;
}
function ExecActions($action)
{
    /*=============*/
    Lib_myLog("action: ", $action);
    // On recupere la configuration issue de conf.php
    global $lang, $taille_ecran, $MSG, $secure, $cle, $config, $taille_tableaux, $taille_tableaux_admin;
    // On recupere tous les objet contenant les donnees
    global $data_in, $data_out, $data_srv, $session, $tab_session;
    // Initialization des variables
    global $message, $fiche;
    switch ($action) {
        case "Recherche":
        case "Annuaire_Accueil":
            if (!isset($data_in['srch_nom']) && !isset($data_in['srch_prenom'])) {
                /*=============*/
                Lib_myLog("On recupere du cache toutes les clefs de recherche");
                if (!empty($data_srv['args_recherche'])) {
                    foreach ($data_srv['args_recherche'] as $key => $value) {
                        if (!isset($data_in[$key])) {
                            $data_in[$key] = $value;
                        }
                    }
                }
                /*=============*/
                Lib_myLog("Cache recupere:", $data_srv);
            }
            /*=============*/
            Lib_myLog("On sauvegarde dans le cache toutes les clefs de recherche");
            $data_srv['args_recherche'] = $data_in;
            /*=============*/
            Lib_myLog("Recuperation des fiches a partir du cache");
            $data_out['liste_types'] = TypesFiches_getCache();
            /*=============*/
            Lib_myLog("Recuperation de la liste des fiches avec les criteres de recherche");
            $args_fiches['id_fiche'] = '*';
            if (isset($data_in['srch_nom'])) {
                $args_fiches['fic_nom'] = '%' . $data_in['srch_nom'] . '%';
            }
            if (isset($data_in['srch_prenom'])) {
                $args_fiches['fic_prenom'] = '%' . $data_in['srch_prenom'] . '%';
            }
            $args_fiches['count'] = 1;
            $data_out['nb_resultats'] = $nb_sections = Fiches_chercher($args_fiches);
            // ======================= Tableau de navigation ===========================
            if ($nb_sections > 1) {
                $data_out['nb_sections'] = $nb_sections;
                /*=============*/
                Lib_myLog("Recuperation de la section {$data_in['section']}");
                $data_out['section'] = $data_in['section'];
                $args_fiches['limit'] = $taille_tableaux_admin;
                $args_fiches['start'] = !empty($data_in['section']) ? $data_in['section'] * $taille_tableaux_admin : 0;
            }
            $data_out['section'] = $data_in['section'];
            // ======================= ===============================================
            /*=============*/
            Lib_myLog("Recherche des fiches");
            $args_fiches['order_by'] = !empty($data_in['order_by']) ? $data_in['order_by'] : 'fic_nom';
            $args_fiches['asc_desc'] = !empty($data_in['asc_desc']) ? $data_in['asc_desc'] : 'ASC';
            unset($args_fiches['count']);
            $liste_fiches = Fiches_chercher($args_fiches);
            $data_out['action'] = 'Annuaire_Accueil';
            $data_out['liste_fiches'] = $liste_fiches;
            if ($data_in['id_fiche']) {
                $data_out['id_fiche'] = $data_in['id_fiche'];
            }
            $data_out['page'] = 'annuaire.php';
            break;
        case "Fiche_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) {
                /*=============*/
                Lib_myLog("Ajout d'un objet fiche");
                $fiche = new Fiche();
                $fiche->id_type_fiche = $data_in['id_type_fiche'];
                $fiche->fic_nom = $data_in['fic_nom'];
                $fiche->fic_prenom = $data_in['fic_prenom'];
                $fiche->fic_adresse1 = $data_in['fic_adresse1'];
                $fiche->fic_adresse2 = $data_in['fic_adresse2'];
                $fiche->fic_adresse3 = $data_in['fic_adresse3'];
                $fiche->fic_ville = $data_in['fic_ville'];
                $fiche->fic_email = $data_in['fic_email'];
                $id_fiche = $fiche->ADD();
                // On passe l'id_fiche en data_in pour effectuer la recherche sur la fiche
                $data_in['id_fiche'] = $id_fiche;
                $data_in['srch_nom'] = $data_in['fic_nom'];
                $data_in['srch_prenom'] = $data_in['fic_prenom'];
                if (!$fiche->isError()) {
                    $transaction->addElement($fiche);
                } else {
                    $continue = false;
                }
            }
            // Utiliser les lignes suivantes si des fiches supplémentaires doivent être ajoutés
            // et que l'on doit gérer une transaction
            // if ($continue) {
            //	 /*=============*/ Lib_myLog("Ajout des informations supplementaires a l'objet fiche");
            //	 $sous_fiche = new SousFiche($data_in['champ_sup1'], $data_in['champ_sup2'] , $data_in['champ_sup3']);
            //	 $sous_fiche->ADD();
            //	 if (!$sous_fiche->isError()) {
            //		  $transaction->addElement($sous_fiche);
            //	 } else {
            //		  $transaction->DEL();
            //		  $continue = false;
            //	 }
            //}
            if ($continue) {
                $data_out['message_ok'] = $MSG['fr']['%%fiche_ADD%%'];
                // On force le filtre pour que le système aille chercher à nouveau toutes les données en base
                $data_in['filtrer'] = 1;
                ExecActions('Annuaire_Accueil');
            } else {
                if ($F5) {
                    /*=============*/
                    Lib_myLog("Tentative de F5!");
                    $data_out['message'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                    ExecActions('Annuaire_Accueil');
                } 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('Annuaire_Accueil');
                }
            }
            break;
        case "Fiche_UPD":
            /*=============*/
            Lib_myLog("Mise a jour du fiche");
            $fiche = Fiche_recuperer($data_in['id_fiche']);
            $fiche->id_type_fiche = $data_in['id_type_fiche'];
            $fiche->fic_nom = $data_in['fic_nom'];
            $fiche->fic_prenom = $data_in['fic_prenom'];
            $fiche->fic_adresse1 = $data_in['fic_adresse1'];
            $fiche->fic_adresse2 = $data_in['fic_adresse2'];
            $fiche->fic_adresse3 = $data_in['fic_adresse3'];
            $fiche->fic_ville = $data_in['fic_ville'];
            $fiche->fic_email = $data_in['fic_email'];
            $fiche->UPD();
            $data_out['message_ok'] = $MSG['fr']['%%fiche_UPD%%'];
            // On force le filtre pour que le système aille chercher à nouveau toutes les données en base
            $data_in['filtrer'] = 1;
            ExecActions('Annuaire_Accueil');
            break;
        case "Fiche_DEL":
            /*=============*/
            Lib_myLog("Suppression du fiche avec l'identifiant " . $data_in['id_fiche']);
            $fiche = Fiche_recuperer($data_in['id_fiche']);
            $fiche->DEL();
            $data_out['message_ok'] = $MSG['fr']['%%fiche_DEL%%'];
            ExecActions('Annuaire_Accueil');
            break;
        case "Fiches_XL":
            /*=============*/
            Lib_myLog("On recupere du cache toutes les clefs de recherche");
            if (!empty($data_srv['args_recherche'])) {
                foreach ($data_srv['args_recherche'] as $key => $value) {
                    if (!isset($data_in[$key])) {
                        $data_in[$key] = $value;
                    }
                }
            }
            /*=============*/
            Lib_myLog("Recuperation de la liste des fiches avec les criteres de recherche");
            $args_fiches['id_fiche'] = '*';
            $args_fiches['fic_nom'] = '%' . $data_in['srch_nom'] . '%';
            $args_fiches['fic_prenom'] = '%' . $data_in['srch_prenom'] . '%';
            $liste_fiches = Fiches_chercher($args_fiches);
            /*=============*/
            Lib_myLog("Impression de la liste en XL");
            $time = time();
            $file = "../exports/extraction_" . $time . ".xls";
            // le fichier doit déjà exister
            if (!($myfile = fopen($file, "w"))) {
                /*=============*/
                Lib_myLog("Erreur lors de la creation du fichier {$file}");
                exit;
            } else {
                /*=============*/
                Lib_myLog("Creation du fichier {$file}");
            }
            $header .= "Nom\t ";
            $header .= "Prenom\t ";
            $header .= "Adresse1\t ";
            $header .= "Adresse2\t ";
            $header .= "Adresse3\t ";
            $header .= "CP\t ";
            $header .= "Ville\t ";
            $header .= "Email\t ";
            $header .= "\n";
            fputs($myfile, $header);
            $body = '';
            foreach ($liste_fiches as $fiche) {
                if (!isset($data_in['chk' . $fiche['id_fiche']])) {
                    continue;
                }
                $body .= utf8_decode($fiche['fic_nom']) . "\t";
                $body .= utf8_decode($fiche['fic_prenom']) . "\t";
                $body .= utf8_decode($fiche['fic_adresse1']) . "\t";
                $body .= utf8_decode($fiche['fic_adresse2']) . "\t";
                $body .= utf8_decode($fiche['fic_adresse3']) . "\t";
                $body .= $fiche['fic_cp'] . "\t";
                $body .= utf8_decode($fiche['fic_ville']) . "\t";
                $body .= $fiche['fic_email'] . "\t";
                $body .= "\r\n";
            }
            fputs($myfile, $body);
            fclose($myfile);
            //on ferme le fichier
            chmod($file, 0755);
            $size = filesize($file);
            header("Content-Type: application/octet-stream");
            header("Content-Length: {$size}");
            header("Content-Disposition: attachment; filename=file_" . $time . ".xls");
            header("Content-Transfer-Encoding: binary");
            $fh = fopen($file, "r");
            fpassthru($fh);
            break;
        case "Fiches_PDF":
            /*=============*/
            Lib_myLog("On recupere du cache toutes les clefs de recherche");
            if (!empty($data_srv['args_recherche'])) {
                foreach ($data_srv['args_recherche'] as $key => $value) {
                    if (!isset($data_in[$key])) {
                        $data_in[$key] = $value;
                    }
                }
            }
            /*=============*/
            Lib_myLog("Recuperation de la liste des fiches avec les criteres de recherche");
            $args_fiches['id_fiche'] = '*';
            $args_fiches['fic_nom'] = '%' . $data_in['srch_nom'] . '%';
            $args_fiches['fic_prenom'] = '%' . $data_in['srch_prenom'] . '%';
            $data_out['liste_fiches'] = Fiches_chercher($args_fiches);
            $data_out['page'] = '../pdf/annuaire_pdf.php';
            break;
        case "Fiches_Import":
            $continue = true;
            /*=============*/
            Lib_myLog("Import du fichier");
            $data_out['tab_resultat'][] = "Verification du fichier d'import";
            $uploaddir = "../dilasys/tmp/";
            $uploadfile = $uploaddir . $session . "_" . @basename($_FILES['userfile']['name']);
            /*=============*/
            Lib_myLog("Deplacement du fichier en {$uploadfile}");
            @move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
            if (file_exists($uploadfile)) {
                /*=============*/
                Lib_myLog("Fichier trouve. Verification du format et du nombre de colonnes");
                if (!preg_match("/csv\$/i", $_FILES['userfile']['name'])) {
                    $data_out['message_ko'] = "Le format du fichier est incorrect (format csv attendu)";
                    $continue = false;
                }
                if ($continue) {
                    $data = file($uploadfile);
                    $premiere_ligne = explode(";", $data[0]);
                    if (count($premiere_ligne) < 7) {
                        $data_out['message_ko'] = "La premi&egrave; ligne ne contient pas le nombre de colonnes attendu";
                        $continue = false;
                    }
                }
                if ($continue) {
                    ini_set("max_execution_time", 2000);
                    $numLigne = 1;
                    $nbFiches = 0;
                    foreach ($data as $ligne) {
                        $tabCol = explode(";", $ligne);
                        if ($numLigne == 1) {
                            $numLigne++;
                            continue;
                        } else {
                            // On n'importe pas des fiches n'ayant pas de nom ou de prénom
                            if ($tabCol[0] == '' || $tabCol[1] == '') {
                                continue;
                            }
                            /*=============*/
                            Lib_myLog("Traitement {$tabCol[0]} {$tabCol[1]}");
                            $fiche = Fiche_recuperer('', $tabCol[0], $tabCol[1]);
                            if ($fiche->id_fiche == '') {
                                /*=============*/
                                Lib_myLog("Ajout de la fiche");
                                $data_out['tab_resultat'][] = "Ajout de la fiche de {$tabCol[0]} {$tabCol[1]}";
                                $fiche = new Fiche();
                                $fiche->fic_nom = utf8_encode($tabCol[0]);
                                $fiche->fic_prenom = utf8_encode($tabCol[1]);
                                $fiche->fic_adresse1 = utf8_encode($tabCol[2]);
                                $fiche->fic_adresse2 = utf8_encode($tabCol[3]);
                                $fiche->fic_cp = $tabCol[4];
                                $fiche->fic_ville = utf8_encode($tabCol[5]);
                                $fiche->fic_email = $tabCol[6];
                                $id_fiche = $fiche->ADD();
                            } else {
                                /*=============*/
                                Lib_myLog("Modification de la fiche");
                                $data_out['tab_resultat'][] = "Modification de la fiche de {$tabCol[0]} {$tabCol[1]}";
                                $fiche->fic_adresse1 = utf8_encode($tabCol[2]);
                                $fiche->fic_adresse2 = utf8_encode($tabCol[3]);
                                $fiche->fic_cp = $tabCol[4];
                                $fiche->fic_ville = utf8_encode($tabCol[5]);
                                $fiche->fic_email = $tabCol[6];
                                $fiche->UPD();
                            }
                            $numLigne++;
                            $nbFiches++;
                        }
                    }
                    /*=============*/
                    Lib_myLog("{$nbFiches} fiches traitees");
                    $data_out['message_ok'] = "{$nbFiches} fiches ont &eacute;t&eacute; trait&eacute;es";
                }
            }
            ExecActions('Annuaire_Accueil');
            break;
            /*============================================================================
            		Actions AJAX
            		=============================================================================*/
        /*============================================================================
        		Actions AJAX
        		=============================================================================*/
        case "BLOC_Fiche_SEE":
        case "BLOC_Fiche_ADD":
        case "BLOC_Fiche_UPD":
            if (isset($data_in['id_fiche'])) {
                /*=============*/
                Lib_myLog("Recuperation de la fiche");
                $args_fiche['id_fiche'] = $data_in['id_fiche'];
                $data_out['fiche'] = Fiches_chercher($args_fiche);
            }
            /*=============*/
            Lib_myLog("Recuperation des fiches a partir du cache");
            $data_out['liste_types'] = TypesFiches_getCache();
            if ($action == "BLOC_Fiche_SEE") {
                $data_out['mode'] = 'see';
            }
            if ($action == "BLOC_Fiche_ADD") {
                $data_out['mode'] = 'add';
            }
            if ($action == "BLOC_Fiche_UPD") {
                $data_out['mode'] = 'upd';
            }
            $data_out['page'] = 'annuaire_bloc_fiche.php';
            break;
        case "AUTO_ListeNoms_ADD":
            // Action utilisée pour la saisie semi-automatique et appelée par la fonction AJAX
            /*=============*/
            Lib_myLog("Recherche des fiches");
            $args_fiche['fic_nom'] = $data_in['fic_nom'] . '%';
            $args_fiche['fic_prenom'] = $data_in['fic_prenom'] . '%';
            $data_out['liste_fiches'] = Fiches_chercher($args_fiche);
            /*=============*/
            Lib_myLog("Retour");
            $data_out['page'] = 'annuaire_auto_noms_add.php';
            break;
            /*============================================================================
            		DEBUT Ajout dynamique
            		=============================================================================*/
        /*============================================================================
        		DEBUT Ajout dynamique
        		=============================================================================*/
        case "POPUP_TypeFicheADD":
            $data_out['page'] = 'annuaire_popup_type_fiche_add.php';
            break;
        case "SELECT_TypesFiches":
            /*=============*/
            Lib_myLog("Recherche des types de fiches");
            $args_types['id_type_fiche'] = '*';
            $data_out['liste_types'] = TypesFiches_chercher($args_types);
            $data_out['valeur_select'] = $data_in['valeur_select'];
            $data_out['page'] = 'annuaire_select_types_fiches.php';
            break;
        case "TypeFiche_ADD":
            $erreur = false;
            $F5 = Lib_checkF5($session, $data_in['timestamp']);
            $continue = $F5 ? false : true;
            /*=============*/
            Lib_myLog("On verifie qu'un type a bien ete saisi");
            if ($data_in['libelle'] == '') {
                $continue = false;
                $erreur = true;
                $data_out['message_ko'] = $MSG[$lang]['%%ERR_type_fiche_manque%%'];
            }
            /*=============*/
            Lib_myLog("On verifie si le type saisi n'existe pas deja");
            if ($data_in['libelle'] != '') {
                $args_type['libelle'] = $data_in['libelle'];
                $liste_types = TypesFiches_chercher($args_type);
                if (count($liste_types)) {
                    $continue = false;
                    $erreur = true;
                    $data_out['message_ko'] = $MSG[$lang]['%%ERR_type_fiche_existe%%'];
                }
            }
            if ($continue) {
                /*=============*/
                Lib_myLog("Ajout d'un type de fiche");
                $type = new TypeFiche();
                $type->libelle = $data_in['libelle'];
                $id_type_fiche = $type->ADD();
                Lib_writeData('', 'LISTE_TYPES_FICHES');
            }
            if ($continue) {
                $data_out['message_ok'] = $MSG[$lang]['%%type_fiche_ADD%%'];
                $data_out['perte_focus'] = 1;
                $data_out['valeur_select'] = $id_type_fiche;
                $data_out['page'] = "annuaire_popup_type_fiche_add.php";
            } else {
                if ($erreur) {
                    $data_out['page'] = 'annuaire_popup_type_fiche_add.php';
                } else {
                    if ($F5) {
                        /*=============*/
                        Lib_myLog("Tentative de F5!");
                        $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                        $data_out['page'] = "annuaire_popup_type_fiche_add.php";
                    } else {
                        /*=============*/
                        Lib_myLog("Annulation de l'ajout suite a une erreur mysql");
                        $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);
                        $data_out['page'] = "annuaire_popup_type_fiche_add.php";
                    }
                }
            }
            break;
            /*============================================================================
            		FIN Ajout dynamique
            		=============================================================================*/
        /*============================================================================
        		FIN Ajout dynamique
        		=============================================================================*/
        case "POPUP_Memos_SEE":
        case "POPUP_MemosFiche_SEE":
        case "POPUP_Memos_UPD":
            /*=============*/
            Lib_myLog("Recuperation des memos de la fiche");
            // Affichage du plus récent en premier
            $args_memos['id_fiche'] = $data_in['id_fiche'];
            $args_memos['order_by'] = 'id_memo';
            $args_memos['asc_desc'] = 'DESC';
            $data_out['liste_memos'] = FicheMemos_chercher($args_memos);
            $data_out['id_fiche'] = $data_in['id_fiche'];
            if ($action == 'POPUP_Memos_SEE') {
                $data_out['page'] = 'annuaire_popup_memos_see.php';
            }
            if ($action == 'POPUP_MemosFiche_SEE') {
                $data_out['page'] = 'annuaire_popup_memos_fiche_see.php';
            }
            if ($action == 'POPUP_Memos_UPD') {
                $data_out['page'] = 'annuaire_popup_memos_upd.php';
            }
            break;
        case "Memos_UPD":
            /*=============*/
            Lib_myLog("Recuperation des memos de la fiche {$data_in['id_fiche']} pour mise a jour");
            $args_memos['id_fiche'] = $data_in['id_fiche'];
            $liste_memos = FicheMemos_chercher($args_memos);
            foreach ($liste_memos as $memo) {
                $memo_upd = FicheMemo_recuperer($memo['id_memo']);
                $memo_upd->memo = $data_in['memo' . $memo['id_memo']];
                $memo_upd->UPD();
            }
            if ($data_in['memo'] != '') {
                /*=============*/
                Lib_myLog("Ajout du nouveau memo");
                $memo_add = new FicheMemo();
                $memo_add->id_fiche = $data_in['id_fiche'];
                $memo_add->date_memo = mktime(0, 0, 0, $tab_date_memo[1], $tab_date_memo[0], $tab_date_memo[2]);
                $memo_add->memo = $data_in['memo'];
                $memo_add->ADD();
            }
            break;
        case "Memos_DEL":
            /*=============*/
            Lib_myLog("Suppression du memo");
            $memo_del = FicheMemo_recuperer($data_in['id_memo']);
            $memo_del->DEL();
            $data_in['id_fiche'] = $memo_del->id_fiche;
            ExecActions('POPUP_Memos_UPD');
            break;
        default:
            ExecActions('Annuaire_Accueil');
            break;
    }
}
Example #5
0
<?php

if (isset($data_out['page'])) {
    include $data_out['page'];
}
//==================================================================================
// On affiche la page sur le client
//==================================================================================
ob_end_flush();
//==================================================================================
// On stocke les informations d'une page a l'autre sur le serveur
//==================================================================================
Lib_writeData($data_srv, "data");
function TypeFiche_ADD($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__);
    $erreur = false;
    $F5 = Lib_checkF5($session, $data_in['timestamp']);
    $continue = $F5 ? false : true;
    /*=============*/
    Lib_myLog("On verifie qu'un type a bien ete saisi");
    if ($data_in['libelle'] == '') {
        $continue = false;
        $erreur = true;
    }
    /*=============*/
    Lib_myLog("On verifie si le type saisi n'existe pas deja");
    if ($data_in['libelle'] != '') {
        $args_type['libelle'] = $data_in['libelle'];
        $liste_types = TypesFiches_chercher($args_type);
        if (count($liste_types)) {
            $continue = false;
            $erreur = true;
        }
    }
    if ($continue) {
        /*=============*/
        Lib_myLog("Ajout d'un type de fiche");
        $type = new TypeFiche();
        $type->libelle = $data_in['libelle'];
        $id_type_fiche = $type->ADD();
        Lib_writeData('', 'LISTE_TYPES_FICHES');
    }
}
function Images_Image_ADD($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_writeData($data_srv, $session);
    /*=============*/
    Lib_myLog("Recherche de la position la plus elevee");
    $args_images['code_pere'] = $data_in['code_pere'];
    $args_images['type_pere'] = $data_in['type_pere'];
    $galerie = Galeries_chercher($args_images);
    $position = 0;
    foreach ($galerie as $image) {
        if ($image['position'] > $position) {
            $position = $image['position'];
        }
    }
    $position++;
    $timestamp = time();
    /*=============*/
    Lib_myLog("On rajoute l'image en base");
    $galerie = new Galerie($data_in['code_pere'], $data_in['type_pere']);
    $galerie->position = $position;
    $langues = $GLOBALS['LANGUES'];
    $langues[] = 'fr';
    $id_galerie = $galerie->ADD();
    $galerie = Galerie_recuperer($id_galerie);
    foreach ($langues as $langue) {
        $galerie->addLang($langue, $data_in['legende_' . $langue], $data_in['data1' . $langue], $data_in['data2' . $langue], $data_in['data3' . $langue], $data_in['data4' . $langue], $data_in['data5' . $langue]);
    }
    if ($_FILES["url_gde_image"]["name"] != '') {
        $valid = Lib_isValidFile($_FILES["url_gde_image"]["name"], array("jpg", "jpeg", "png", "gif"));
        if ($_FILES["url_gde_image"]['error'] == 1) {
            /*=============*/
            Lib_myLog("Taille trop elevee");
            $val = ini_get('upload_max_filesize');
            $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
            $new->url_gde_image = '';
        } else {
            if ($valid == 1) {
                /*=============*/
                Lib_myLog("Fichier non autorise");
                $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
            } else {
                /*=============*/
                Lib_myLog("Telechargement de l'image");
                $image = Lib_nettoie($_FILES["url_gde_image"]["name"]);
                $image = $id_galerie . '_' . $image;
                $ext = strrchr($image, '.');
                // On positionne par défaut une vignette au cas où une vignette n'aurait pas été fournie
                $vignette = Lib_nettoie($_FILES["url_gde_image"]["name"]);
                $vignette = $id_galerie . '_min_' . $vignette;
                // Si la vignette existait déjà, on la remplace...
                if (file_exists('../../img_ftp/' . $image)) {
                    unlink('../../img_ftp/' . $image);
                }
                if (is_uploaded_file($_FILES["url_gde_image"]["tmp_name"])) {
                    $tmp_gde_image = $_FILES["url_gde_image"]["tmp_name"];
                    rename($tmp_gde_image, '../../img_ftp/' . $image);
                    if (file_exists('../../img_ftp/' . $image) && $image != '') {
                        chmod("../../img_ftp/" . $image, 0644);
                    }
                    // Redimensionnement, w=483, priorite w
                    Lib_redimImage("../../img_ftp/{$image}", 483, '', 'w');
                }
            }
        }
    }
    /*=============*/
    Lib_myLog("On verifie si la vignette est fournie");
    if ($_FILES["url_vignette"]["name"] != '') {
        /*=============*/
        Lib_myLog("Telechargement de la vignette");
        $vignette = Lib_nettoie($_FILES["url_vignette"]["name"]);
        $vignette = $id_galerie . '_min_' . $vignette;
        $ext = strrchr($vignette, '.');
        if (is_uploaded_file($_FILES["url_vignette"]["tmp_name"])) {
            $tmp_vignette = $_FILES["url_vignette"]["tmp_name"];
            rename($tmp_vignette, '../../img_ftp/' . $vignette);
            if (file_exists('../../img_ftp/' . $vignette) && $vignette != '') {
                chmod("../../img_ftp/" . $vignette, 0644);
            }
            // Redimensionnement, h=65, priorite h
            Lib_redimImage("../../img_ftp/" . $vignette, '', '65', 'w');
        }
    }
    if ($_FILES["url_gde_image"]["name"] != '' && $_FILES["url_vignette"]["name"] == '') {
        /*=============*/
        Lib_myLog("Vignette non fournie => on utilise l'image");
        copy('../../img_ftp/' . $image, '../../img_ftp/' . $vignette);
        if (file_exists('../../img_ftp/' . $vignette) && $vignette != '') {
            chmod('../../img_ftp/' . $vignette, 0644);
        }
        // Redimensionnement, h=65, priorite h
        Lib_redimImage("../../img_ftp/{$vignette}", '', '65', 'w');
    }
    //Fin des ajouts
    if (isset($image)) {
        $galerie->url_gde_image = $image;
        $galerie->url_vignette = $vignette;
        $galerie->UPD();
    } else {
        $galerie->DEL();
    }
}
 function TypesFiches_getCache()
 {
     $data = Lib_readData('LISTE_TYPES_FICHES');
     // On essaye d'optimiser un peu les accès à la base de données.
     // Le fichier LISTE_TYPES_FICHES sera créé au premier accés et sera effacé lorsque l'administrateur
     // mettra à jour le parametrage avec de nouvelles informations
     if (count($data) > 1) {
         /*=============*/
         Lib_myLog("Recuperation du parametrage des types de fiches a partir du cache");
         $liste_types = $data;
     } else {
         /*=============*/
         Lib_myLog("Recuperation du parametrage de l'etat des barriques a partir de la base");
         $args_etat['id_type_fiche'] = '*';
         $args_etat['order_by'] = 'id_type_fiche';
         $liste_types = TypesFiches_chercher($args_etat);
         Lib_writeData($liste_types, 'LISTE_TYPES_FICHES');
     }
     return $liste_types;
 }
Example #9
0
/**
 Cette fonction est un grand switch qui sert à renvoyer vers une action donnée en paramètre. 
 @param Action : Action à accomplir…
*/
function ExecActions($action)
{
    /*=============*/
    Lib_myLog("action: ", $action);
    // On recupere la configuration issue de conf.php
    global $lang, $taille_ecran, $MSG, $secure, $cle, $config;
    // On recupere tous les objet contenant les donnees
    global $data_in, $data_out, $data_srv, $session;
    // Initialization des variables
    global $message, $tache;
    switch ($action) {
        /**
         * - Cas Site_Accueil :
         * . 
         *      Le cas (par défaut) Site_Accueil recherche tous les taches, s'occupent des critères de tri, et renvoie vers la vue (page) Site_Accueil.php....
         */
        case "Accueil":
            /*=============*/
            Lib_myLog("Recuperation de l'arborescence");
            $data_in['code_arbo'] = 'suivi';
            $data_out['liste_fils'] = Arbo_construire($data_in['code_arbo'], 'tache');
            if (isset($data_in['id_arbo_pere'])) {
                $data_out['id_arbo_pere'] = $data_in['id_arbo_pere'];
            }
            if (!isset($data_in['type_affichage'])) {
                $data_in['type_affichage'] = 'toutes';
            }
            $data_out['type_affichage'] = $data_in['type_affichage'];
            $data_out['code_arbo'] = $data_in['code_arbo'];
            $data_out['menu_gauche'] = 'arbo';
            $data_out['page'] = 'suivi.php';
            break;
        case "Element_Etat":
            $arbo = Arbo_recuperer($data_in['id_arbo']);
            $arbo->etat = $arbo->etat == 'actif' ? $arbo->etat = 'inactif' : ($arbo->etat = 'actif');
            $arbo->UPD();
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            // On met à jour l'état de l'tache associé à l'élément de l'arbo sélectionné
            if ($arbo->id_pere != 0 && $arbo->type_pere == 'tache') {
                $tache = Tache_recuperer($arbo->id_pere);
                $tache->etat = $arbo->etat;
                $tache->UPD();
            }
            // On remet à 0 le fichier contenant le "cache" des taches pour l'affichage des blocs
            Lib_writeData('', "ARBO");
            //Enregistrement d'un zip par dossier racine contenant les fichiers
            $tab_ids_arbos = array($data_in['id_arbo'] => $data_in['id_arbo']);
            //			Arbo_zipDocuments('arbo_docs', $tab_ids_arbos);
            ExecActions('Accueil');
            break;
        case "Element_Bouger":
            $tab_positions = explode("|", $data_in['tab_list']);
            $i = 1;
            $tab_ids_arbos = array();
            foreach ($tab_positions as $position) {
                $projet = Arbo_recuperer($position);
                if ($projet->ordre != $i) {
                    $tab_ids_arbos[$projet->id_arbo] = $projet->id_arbo;
                }
                $projet->ordre = $i;
                $projet->UPD();
                $i++;
            }
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            //Enregistrement d'un zip par dossier racine contenant les fichiers
            //			Arbo_zipDocuments('arbo_docs', $tab_ids_arbos);
            ExecActions('Accueil');
            break;
        case "Element_DEL":
            /*=============*/
            Lib_myLog("Recuperation de l'element");
            if ($data_in['id_arbo_pere'] != 0) {
                /*=============*/
                Lib_myLog("Suppression de de l'objet de type arbo");
                $obj_element_initial = Arbo_recuperer($data_in['id_arbo']);
                $data_out['message_ok'] = $MSG['fr']['%%arbo_DEL%%'];
            }
            if ($data_in['id_arbo_pere'] == 0) {
                /*=============*/
                Lib_myLog("Suppression des taches dans toutes les langues");
                $obj_element_initial = Arbo_recuperer_par_element($data_in['id_pere'], $data_in['type_pere'], $data_in['code_arbo']);
                // Le même tache peut être en pluisieurs langues. On les regroupe grâce au code tache
                $args_taches['code'] = 'tache-' . $obj_element_initial->id_pere;
                $liste_taches = Taches_chercher($args_taches);
                foreach ($liste_taches as $art) {
                    $tache = Tache_recuperer($art['id_tache']);
                    $tache->DEL();
                }
                $data_out['message_ok'] = $MSG['fr']['%%page_DEL%%'];
            }
            /*=============*/
            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['code_arbo'] = $data_in['code_arbo'];
            $elements = Arbos_chercher($args_elements);
            foreach ($elements as $element) {
                $obj_element = Arbo_recuperer($element['id_arbo']);
                $obj_element->ordre--;
                $obj_element->UPD();
            }
            $obj_element_initial->DEL();
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            //Enregistrement d'un zip par dossier racine contenant les fichiers
            $tab_ids_arbos = array($data_in['id_arbo'] => $data_in['id_arbo']);
            //			Arbo_zipDocuments('arbo_docs',$tab_ids_arbos);
            ExecActions('Accueil');
            break;
        case "Categorie_ADD":
            $args_arbos['code_arbo'] = $data_in['code_arbo'];
            $args_arbos['famille'] = '';
            if ($data_in['id_arbo_pere'] != '') {
                /*=============*/
                Lib_myLog("Il s'agit d'un ajout de sous-element !");
                $arbo_pere = Arbo_recuperer($data_in['id_arbo_pere']);
                $args_arbos['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-';
            }
            /*=============*/
            Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element");
            $arbos = Arbos_chercher($args_arbos);
            $ordre = count($arbos);
            $ordre++;
            /*=============*/
            Lib_myLog("Rajout d'un nouvel element");
            $arbo = new Arbo();
            if ($data_in['id_arbo_pere'] != '') {
                $arbo->famille .= $arbo_pere->famille . $arbo_pere->id_arbo . '-';
            }
            $arbo->code_arbo = $data_in['code_arbo'];
            $arbo->type_pere = 'arbo';
            $arbo->ordre = $ordre;
            $arbo->etat = 'inactif';
            $arbo->intitule = $data_in['intitule'];
            $id_arbo = $arbo->ADD();
            $data_out['message_ok'] = $MSG['fr']['%%arbo_ADD%%'];
            $arbo->id_arbo_pere = $data_in['id_arbo_pere'] != '' ? $data_in['id_arbo_pere'] : $id_arbo;
            /*=============*/
            Lib_myLog("Creation du nouvel tache associe a la categorie");
            $tache = new Tache();
            $tache->titre_page = $data_in['intitule'];
            $tache->titre = $data_in['intitule'];
            $tache->lang = 'fr';
            $tache->etat = 'actif';
            $id_tache = $tache->ADD();
            $tache = Tache_recuperer($id_tache);
            // On définit un code pour pouvoir retrouver le même tache en plusieurs langues
            $tache->code = 'tache-' . $id_tache;
            $tache->UPD();
            foreach ($GLOBALS['LANGUES'] as $langue) {
                /*=============*/
                Lib_myLog("Ajout de l'tache en {$langue}");
                $tache->lang = $langue;
                $tache->ADD();
            }
            $arbo->id_pere = $id_tache;
            $arbo->type_pere = 'tache';
            $arbo->UPD();
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            //Enregistrement d'un zip par dossier racine contenant les fichiers
            $tab_ids_arbos = array($id_arbo => $id_arbo);
            //			Arbo_zipDocuments('arbo_docs', $tab_ids_arbos);
            ExecActions('Accueil');
            break;
        case "Categorie_UPD":
            /*=============*/
            Lib_myLog("Modification de l'intitule d'un element");
            $arbo = Arbo_recuperer($data_in['id_arbo']);
            $arbo->intitule = $data_in['intitule'];
            $arbo->UPD();
            /*=============*/
            Lib_myLog("Modification de l'tache lie a l'element");
            if ($arbo->id_pere) {
                $tache = Tache_recuperer($arbo->id_pere);
                $tache->titre = $data_in['intitule'];
                $tache->UPD();
            }
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            //Enregistrement d'un zip par dossier racine contenant les fichiers
            $tab_ids_arbos = array($data_in['id_arbo'] => $data_in['id_arbo']);
            //			Arbo_zipDocuments('arbo_docs',$tab_ids_arbos);
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            ExecActions('Accueil');
            break;
        case "SELECT_SsCategories":
            $data_out['liste_sous_categories'] = array();
            /*=============*/
            Lib_myLog("Recuperation du pere");
            $arbo_pere = Arbo_recuperer($data_in['id_arbo']);
            $args_sous['not_id_arbo_pere'] = 0;
            $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-';
            $data_out['liste_sous_categories'] = Arbos_chercher($args_sous);
            $cle = 'ordre';
            $val = usort($data_out['liste_sous_categories'], "Lib_compareUp");
            $data_out['page'] = 'arbo_select_ss_categories.php';
            break;
        case "SELECT_SsSsCategories":
            $data_out['liste_sous_categories'] = array();
            /*=============*/
            Lib_myLog("Recuperation du pere");
            $arbo_pere = Arbo_recuperer($data_in['id_arbo']);
            $args_sous['not_id_arbo_pere'] = 0;
            $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_arbo . '-';
            $data_out['liste_sous_categories'] = Arbos_chercher($args_sous);
            $cle = 'ordre';
            $val = usort($data_out['liste_sous_categories'], "Lib_compareUp");
            $data_out['page'] = 'arbo_select_ss_ss_categories.php';
            break;
        case "AJAX_ArboUPD":
            $tab_arbo = json_decode($data_in['arbo_json'], true);
            /*=============*/
            Lib_myLog("Arbo recuperee");
            Arbo_recalcul($tab_arbo);
            break;
        case "Tache_ADD":
            $F5 = Lib_checkF5($session, $data_in['timestamp']);
            $continue = $F5 ? false : true;
            if ($continue) {
                $args_arbos['code_arbo'] = $data_in['code_arbo'];
                $args_arbos['famille'] = '';
                if ($data_in['id_arbo_pere'] != 0) {
                    $arbo = Arbo_recuperer($data_in['id_arbo_pere']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-';
                    $args_arbo['id_arbo'] = $data_in['id_arbo_pere'];
                    $id_categorie = $data_in['id_arbo_pere'];
                }
                // Si un id_arbo_fils est positionné, il "surclasse" l'id_pere!
                if (isset($data_in['id_arbo_fils']) && $data_in['id_arbo_fils'] != 0) {
                    $arbo = Arbo_recuperer($data_in['id_arbo_fils']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-';
                    $args_arbo['id_arbo'] = $data_in['id_arbo_fils'];
                }
                if (isset($data_in['id_arbo_petit_fils']) && $data_in['id_arbo_petit_fils'] != 0) {
                    $arbo = Arbo_recuperer($data_in['id_arbo_petit_fils']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_arbo . '-';
                    $args_arbo['id_arbo'] = $data_in['id_arbo_petit_fils'];
                }
                /*=============*/
                Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element dans l'arbo");
                $arbos = Arbos_chercher($args_arbos);
                $ordre = count($arbos);
                $ordre++;
                /*=============*/
                Lib_myLog("On recupere la categorie dont va dependre l'tache");
                $arbo = Arbos_chercher($args_arbo);
                /*=============*/
                Lib_myLog("Creation du nouvel tache");
                $tache = new Tache();
                $tache->categorie = $data_in['categorie'];
                $tache->titre_page = $data_in['titre_page'];
                // On met dans le titre le titre_page par défaut. Celui-ci sera changé à l'édition de l'tache de toutes façons...
                $tache->titre = $data_in['titre_page'];
                for ($i = 1; $i <= 20; $i++) {
                    $tache->{'data' . $i} = $data_in['data' . $i];
                }
                $tache->date = $data_in['date'];
                $tache->texte = $data_in['texte'];
                $tache->lang = 'fr';
                $tache->etat = 'inactif';
                $id_tache = $tache->ADD();
                $tache = Tache_recuperer($id_tache);
                for ($i = 1; $i <= 5; $i++) {
                    if ($_FILES["fichier" . $i]["name"] != '') {
                        if ($_FILES["fichier" . $i]['error'] == 1) {
                            /*=============*/
                            Lib_myLog("Taille trop elevee");
                            $val = ini_get('upload_max_filesize');
                            $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                            $tache->{'fichier' . $i} = '';
                        } else {
                            if ($valid == 1) {
                                /*=============*/
                                Lib_myLog("Fichier non autorise");
                                $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                            } else {
                                /*=============*/
                                Lib_myLog("Telechargement du fichier");
                                $fichier = Lib_nettoie($_FILES["fichier" . $i]["name"]);
                                $fichier = $tache->id_tache . '_' . $fichier;
                                if (file_exists('../file_ftp/documents_suivi/' . $fichier)) {
                                    unlink('../file_ftp/documents_suivi/' . $fichier);
                                }
                                if (is_uploaded_file($_FILES["fichier" . $i]["tmp_name"])) {
                                    $tmp_fichier = $_FILES["fichier" . $i]["tmp_name"];
                                    rename($tmp_fichier, '../file_ftp/documents_suivi/' . $fichier);
                                    chmod("../file_ftp/documents_suivi/{$fichier}", 0644);
                                }
                                $tache->{'fichier' . $i} = $fichier;
                            }
                        }
                    }
                }
                // On définit un code pour pouvoir retrouver le même tache en plusieurs langues
                $tache->code = 'tache-' . $id_tache;
                $tache->UPD();
                foreach ($GLOBALS['LANGUES'] as $langue) {
                    /*=============*/
                    Lib_myLog("Ajout de l'tache en {$langue}");
                    $tache->lang = $langue;
                    $tache->ADD();
                }
                /*=============*/
                Lib_myLog("Rajout du nouvel tache dans l'arbo");
                $new_arbo = new Arbo();
                $new_arbo->code_arbo = $data_in['code_arbo'];
                $new_arbo->id_pere = $id_tache;
                $new_arbo->famille .= $arbo['famille'] . $arbo['id_arbo'] . '-';
                $new_arbo->type_pere = 'tache';
                $new_arbo->ordre = $ordre;
                $new_arbo->intitule = $data_in['titre_page'];
                $new_arbo->etat = 'inactif';
                $id_arbo = $new_arbo->ADD();
                // On remet à 0 le fichier contenant le "cache" des taches pour l'affichage des blocs
                Lib_writeData('', "TACHES");
                // On remet à 0 le fichier contenant le "cache" de l'arborescence
                Lib_writeData('', "ARBO");
                //Enregistrement d'un zip par dossier racine contenant les fichiers
                $tab_ids_arbos = array($id_arbo => $id_arbo);
                //				Arbo_zipDocuments('arbo_docs',$tab_ids_arbos);
            }
            if ($continue) {
                $data_in['id_tache'] = $id_tache;
                if (isset($data_in['code_arbo'])) {
                    header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Accueil&code_arbo={$data_in['code_arbo']}");
                } else {
                    ExecActions('Site_Apercu');
                }
            } else {
                if ($F5) {
                    /*=============*/
                    Lib_myLog("Tentative de F5!");
                    $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                    ExecActions('Site_Apercu');
                } else {
                    ExecActions('Site_Apercu');
                }
            }
            break;
        case "POPUP_TacheUPD":
            $data_out['tache'] = Taches_chercher(array('id_tache' => $data_in['id_tache']));
            $data_out['code_arbo'] = $data_in['code_arbo'];
            $data_out['page'] = 'popup_tache_upd.php';
            break;
        case "POPUP_CategorieUPD":
            $data_out = Arbos_chercher(array('id_arbo' => $data_in['id_arbo']));
            $data_out['code_arbo'] = $data_in['code_arbo'];
            $data_out['page'] = 'popup_arbo_categorie_upd.php';
            break;
        case "Tache_UPD":
            /*=============*/
            Lib_myLog("Modification de l'tache");
            $tache = Tache_recuperer($data_in['id_tache']);
            $tache->categorie = $data_in['categorie'];
            $tache->titre_page = $data_in['titre_page'];
            // On met dans le titre le titre_page par défaut. Celui-ci sera changé à l'édition de l'tache de toutes façons...
            $tache->titre = $data_in['titre_page'];
            for ($i = 1; $i <= 20; $i++) {
                $tache->{'data' . $i} = $data_in['data' . $i];
            }
            $tache->date = $data_in['date'];
            $tache->texte = $data_in['texte'];
            $tache->lang = 'fr';
            $tache->etat = 'inactif';
            //Si la date de mise en production est positionnee, alors la tâche est terminée
            if ($tache->data4 != '') {
                $tache->etat = 'actif';
            }
            for ($i = 1; $i <= 5; $i++) {
                if ($data_in['sup_fichier' . $i] == 1) {
                    if (file_exists('../file_ftp/documents_suivi/' . $tache->{'fichier' . $i})) {
                        unlink('../file_ftp/documents_suivi/' . $tache->{'fichier' . $i});
                    }
                    $tache->{'fichier' . $i} = '';
                }
                if ($_FILES["fichier" . $i]["name"] != '') {
                    if ($_FILES["fichier" . $i]['error'] == 1) {
                        /*=============*/
                        Lib_myLog("Taille trop elevee");
                        $val = ini_get('upload_max_filesize');
                        $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                        $tache->{'fichier' . $i} = '';
                    } else {
                        if ($valid == 1) {
                            /*=============*/
                            Lib_myLog("Fichier non autorise");
                            $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                        } else {
                            /*=============*/
                            Lib_myLog("Telechargement du fichier");
                            $fichier = Lib_nettoie($_FILES["fichier" . $i]["name"]);
                            $fichier = $tache->id_tache . '_' . $fichier;
                            if (file_exists('../file_ftp/documents_suivi/' . $fichier)) {
                                unlink('../file_ftp/documents_suivi/' . $fichier);
                            }
                            if (is_uploaded_file($_FILES["fichier" . $i]["tmp_name"])) {
                                $tmp_fichier = $_FILES["fichier" . $i]["tmp_name"];
                                rename($tmp_fichier, '../file_ftp/documents_suivi/' . $fichier);
                                chmod("../file_ftp/documents_suivi/{$fichier}", 0644);
                            }
                            $tache->{'fichier' . $i} = $fichier;
                        }
                    }
                }
            }
            $tache->UPD();
            // On remet à 0 le fichier contenant le "cache" des taches pour l'affichage des blocs
            Lib_writeData('', "TACHES");
            // On remet à 0 le fichier contenant le "cache" de l'arborescence
            Lib_writeData('', "ARBO");
            //Enregistrement d'un zip par dossier racine contenant les fichiers
            $arbo = Arbo_recuperer_par_element($data_in['id_tache'], 'tache', 'arbo_docs');
            $tab_ids_arbos = array($arbo->id_arbo => $arbo->id_arbo);
            //			Arbo_zipDocuments('arbo_docs',$tab_ids_arbos);
            if (isset($data_in['code_arbo'])) {
                header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Accueil&code_arbo={$data_in['code_arbo']}");
            }
            break;
        default:
            ExecActions('Accueil');
            break;
    }
}