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;
    }
}
function Adherents_Adherent_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__);
    $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) {
        $logo = '';
        if ($_FILES["logo"]["name"] != '') {
            /*=============*/
            Lib_myLog("Telechargement du logo");
            $logo = Lib_nettoie($_FILES["logo"]["name"]);
            $logo = $data_in['id_adherent'] . '_' . $logo;
            /*=============*/
            Lib_myLog("Nouveau nom pour le logo : {$logo}");
            $url_logo = '../../img_ftp/' . $logo;
            if ($_FILES['logo']['error']) {
                switch ($_FILES['logo']['error']) {
                    case 1:
                        // UPLOAD_ERR_INI_SIZE
                        echo "Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
                        break;
                    case 2:
                        // UPLOAD_ERR_FORM_SIZE
                        echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
                        break;
                    case 3:
                        // UPLOAD_ERR_PARTIAL
                        echo "L'envoi du fichier a été interrompu pendant le transfert !";
                        break;
                    case 4:
                        // UPLOAD_ERR_NO_FILE
                        echo "Le fichier que vous avez envoyé a une taille nulle !";
                        break;
                }
            } else {
                // Si le logo existait déjà, on le remplace...
                if (file_exists($url_logo)) {
                    unlink($url_logo);
                }
                if (is_uploaded_file($_FILES["logo"]["tmp_name"])) {
                    $tmp_logo = $_FILES["logo"]["tmp_name"];
                    rename($tmp_logo, $url_logo);
                    /*=============*/
                    Lib_myLog("Redimensionnement, w max=200, h max=220, priorite=h");
                    Lib_redimImage($url_logo, 200, 220, 'h');
                    chmod("{$url_logo}", 0644);
                }
            }
        }
        //				$categorie1 = '';
        //				foreach($GLOBALS['CONF']['CATEGORIE1'] as $id => $libelle)
        //					if ($data_in['chk_categorie1_'.$id])
        //						$categorie1 .= "|{$id}|";
        //				/*=============*/ Lib_myLog("Parametrage categorie1 : {$categorie1}");
        //
        //				$categorie2 = '';
        //				foreach($GLOBALS['CONF']['CATEGORIE2'] as $id => $libelle)
        //					if ($data_in['chk_categorie2_'.$id])
        //						$categorie2 .= "|{$id}|";
        //				/*=============*/ Lib_myLog("Parametrage categorie2 : {$categorie2}");
        //
        //				$categorie3 = '';
        //				foreach($GLOBALS['CONF']['CATEGORIE3'] as $id => $libelle)
        //					if ($data_in['chk_categorie3_'.$id])
        //						$categorie3 .= "|{$id}|";
        //				/*=============*/ Lib_myLog("Parametrage categorie1 : {$categorie3}");
        /*=============*/
        Lib_myLog("Ajout d'un adherent");
        $adh = new Adherent();
        $adh->nom = $data_in['nom'];
        $adh->prenom = $data_in['prenom'];
        $adh->enseigne = $data_in['enseigne'];
        $adh->raison_sociale = $data_in['raison_sociale'];
        $adh->adresse1 = $data_in['adresse1'];
        $adh->adresse2 = $data_in['adresse2'];
        $adh->ville = $data_in['ville'];
        $adh->cp = $data_in['cp'];
        $adh->pays = $data_in['pays'];
        $adh->telephone = $data_in['telephone'];
        $adh->fax = $data_in['fax'];
        $adh->email = $data_in['email'];
        $adh->site_internet = $data_in['site_internet'];
        $adh->logo = $logo;
        $adh->categorie = $data_in['categorie'];
        $adh->nature_lien = $data_in['nature_lien'];
        $adh->info_publique = $data_in['info_publique'];
        $adh->categorie1 = $categorie1;
        $adh->categorie2 = $categorie2;
        $adh->categorie3 = $categorie3;
        $adh->latitude = $data_in['latitude'];
        $adh->longitude = $data_in['longitude'];
        if ($data_in['nom_utilisateur'] == '') {
            // On prend la 1ère et la dernière lette de la raison sociale, la première lettre de la ville et le code postal
            $nom_utilisateur = substr($data_in['raison_sociale'], 0, 1);
            $nom_utilisateur .= substr($data_in['raison_sociale'], -1);
            $nom_utilisateur .= substr($data_in['ville'], -1);
            $nom_utilisateur .= $data_in['cp'];
            $data_in['nom_utilisateur'] = strtoupper($nom_utilisateur);
        }
        $adh->nom_utilisateur = $data_in['nom_utilisateur'];
        if ($data_in['password'] == '') {
            // Génération d'un nombre aléatoire sur 3 chiffres n'existant pas déjà en base
            $data_in['password'] = mt_rand(100, 899);
        }
        $adh->password = $data_in['password'];
        $id_adherent = $adh->ADD();
        if (!$adh->isError()) {
            $transaction->addElement($adh);
        } else {
            $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;
        $data_in['action'] = 'Adherents_Recherche';
        call_user_func('Adherents_Recherche', $data_in);
    } else {
        if ($F5) {
            /*=============*/
            Lib_myLog("Tentative de F5!");
            $data_out['message'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
            $data_in['action'] = 'Adherents_Recherche';
            call_user_func('Adherents_Recherche', $data_in);
        } 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);
            $data_in['action'] = 'Adherents_Recherche';
            call_user_func('Adherents_Recherche', $data_in);
        }
    }
}
/**
 * - Cas News_ChoixAction :
 * . 
 *      Le cas (par défaut) News_ChoixAction détermine si l'action sera un ajout ou une modification ; en fonction, il ajoute les données du formulaire (wysiwyg) ou les modifie.
 */
function News_ChoixAction($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__);
    $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();
    // Cas de SUPPRESSION complète de l'new de la base
    if (isset($data_in['submit_clear'])) {
        /*=============*/
        Lib_myLog("Suppression des news");
        // On récupère tous les anciens news correspondant au type d'new pour les supprimer
        $args_news['code'] = $data_in['code'];
        $args_news['code_news'] = $data_in['code_news'];
        $liste_news = Articles_chercher($args_news);
        foreach ($liste_news as $new) {
            $new = Article_recuperer($new['id_article']);
            $new->DEL();
        }
        $data_out['message_ok'] = $MSG['fr']['%%DEL%%'];
        // On remet à 0 le fichier contenant le "cache" des news pour l'affichage des blocs
        Lib_writeCache('', "ARTICLES");
        $continue = false;
    }
    // Cas d'ANNULATION du brouillon si celui-ci existe
    if (isset($data_in['submit_cancel'])) {
        // On récupère tous les anciens news correspondant au type d'new pour les supprimer
        $args_news['code'] = $data_in['code'];
        $args_news['etat'] = 'brouillon';
        $args_news['code_news'] = $data_in['code_news'];
        $liste_news = Articles_chercher($args_news);
        foreach ($liste_news as $new) {
            $new = Article_recuperer($new['id_article']);
            $new->DEL();
        }
        $continue = false;
    }
    // Cas de MODIFICATION d'new ou de PRE-VISUALISATION
    if ($continue) {
        /*=============*/
        Lib_myLog("Recherche de la new");
        $args['code_news'] = $data_in['code_news'];
        if (!empty($data_in['id_article'])) {
            $args['id_article'] = $data_in['id_article'];
        }
        $args['lang'] = $data_in['lang'] != '' && $data_in['lang'] != '' ? $data_in['lang'] : 'fr';
        $news_bdd = Articles_chercher($args);
        // 2 cas se présentent:
        // - Soit il s'agit d'une modification sur un new encore en "brouillon" ou "inactif'.
        // - Soit il s'agit d'une modification sur un new "actif".
        if (isset($news_bdd['id_article'])) {
            /*=============*/
            Lib_myLog("News trouvee, recuperation de la news");
            $new = Article_recuperer($news_bdd['id_article']);
            /*=============*/
            Lib_myLog("Mise a jour la news");
            $new->libelle = $data_in['libelle'];
            $new->meta_titre = $data_in['meta_titre'];
            $new->meta_description = $data_in['meta_description'];
            $new->meta_mots_clefs = $data_in['meta_mots_clefs'];
            $new->meta_url = $data_in['meta_url'];
            $new->titre = $data_in['titre'];
            $new->date = $data_in['date'];
            $new->contenu = $data_in['text1'];
            $new->texte_intro = $data_in['texte_intro'];
            for ($i = 1; $i <= 20; $i++) {
                $champ = 'titre_data' . $i;
                $new->{$champ} = $data_in['titre_data' . $i];
                $champ = 'data' . $i;
                $new->{$champ} = $data_in['data' . $i];
            }
            if (isset($data_in['submit_valid']) && !isset($data_in['etat'])) {
                $new->etat = 'inactif';
            }
            if (isset($data_in['submit_valid']) && isset($data_in['etat'])) {
                $new->etat = 'actif';
            }
            if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) {
                $new->etat = 'brouillon';
            }
            if ($_FILES['url_image']['name'] != '') {
                //Ici le fichier peut etre autre chose qu'une image
                $valid = 0;
                //$valid = Lib_isValidFile($_FILES['url_image_'.$langue]["name"], array("jpg", "jpeg", "png", "gif"));
                if ($_FILES["url_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_image = '';
                } else {
                    if ($valid == 1) {
                        /*=============*/
                        Lib_myLog("Fichier non autorise");
                        $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                    } else {
                        $file = Lib_nettoie($_FILES['url_image']['name']);
                        $file = $data_in['id_article'] . '_' . $file;
                        if (file_exists('../../img_ftp/' . $file)) {
                            unlink('../../img_ftp/' . $file);
                        }
                        if (is_uploaded_file($_FILES['url_image']['tmp_name'])) {
                            /*=============*/
                            Lib_myLog("deplacement du fichier au bon endroit");
                            $tmp = $_FILES['url_image']['tmp_name'];
                            rename($tmp, '../../img_ftp/' . $file);
                            if (file_exists('../../img_ftp/' . $file) && $file != '') {
                                chmod("../../img_ftp/{$file}", 0644);
                            }
                            // Redimensionnement, w=1000, priorite w
                            Lib_redimImage("../../img_ftp/{$file}", 145, 103, 'w');
                        }
                        $new->url_image = $file;
                    }
                }
            }
            if ($_FILES['url_image2']['name'] != '') {
                //Ici le fichier peut etre autre chose qu'une image
                $valid = 0;
                //$valid = Lib_isValidFile($_FILES['url_image2_'.$langue]["name"], array("jpg", "jpeg", "png", "gif"));
                if ($_FILES["url_image2"]['error'] == 1) {
                    /*=============*/
                    Lib_myLog("Taille trop elevee");
                    $val = ini_get('upload_max_filesize');
                    $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                    $new->url_image2 = '';
                } else {
                    if ($valid == 1) {
                        /*=============*/
                        Lib_myLog("Fichier non autorise");
                        $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                    } else {
                        $file = Lib_nettoie($_FILES['url_image2']['name']);
                        $file = $data_in['id_article'] . '_' . $file;
                        // Si le fichier existait déjà, on la supprime...
                        if (file_exists('../../img_ftp/' . $file)) {
                            unlink('../../img_ftp/' . $file);
                        }
                        if (is_uploaded_file($_FILES['url_image2']['tmp_name'])) {
                            /*=============*/
                            Lib_myLog("deplacement du fichier au bon endroit");
                            $tmp = $_FILES['url_image2']['tmp_name'];
                            rename($tmp, '../../img_ftp/' . $file);
                            if (file_exists('../../img_ftp/' . $file) && $file != '') {
                                chmod("../../img_ftp/{$file}", 0644);
                            }
                            // Redimensionnement, w=1000, priorite w
                            Lib_redimImage("../../img_ftp/{$file}", 145, 103, 'w');
                        }
                        $new->url_image2 = $file;
                    }
                }
            }
            for ($i = 1; $i <= 5; $i++) {
                if ($_FILES['fichier' . $i . '_' . $langue]['name'] != '') {
                    //Ici le fichier peut etre autre chose qu'une image
                    $valid = 0;
                    //$valid = Lib_isValidFile($_FILES['url_image2_'.$langue]["name"], array("jpg", "jpeg", "png", "gif"));
                    if ($_FILES["fichier1" . $i . "_" . $langue]['error'] == 1) {
                        /*=============*/
                        Lib_myLog("Taille trop elevee");
                        $val = ini_get('upload_max_filesize');
                        $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                        $champ = 'fichier1';
                        $new->{$champ} = $file;
                    } else {
                        if ($valid == 1) {
                            /*=============*/
                            Lib_myLog("Fichier non autorise");
                            $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                        } else {
                            $file = Lib_nettoie($_FILES['fichier' . $i . '_' . $langue]['name']);
                            $file = $id_article . '_' . $file;
                            if (file_exists('../../img_ftp/' . $file)) {
                                unlink('../../img_ftp/' . $file);
                            }
                            if (is_uploaded_file($_FILES['fichier1' . $i . '_' . $langue]['tmp_name'])) {
                                /*=============*/
                                Lib_myLog("deplacement du fichier au bon endroit");
                                $tmp = $_FILES['fichier1' . $i . '_' . $langue]['tmp_name'];
                                rename($tmp, '../../img_ftp/' . $file);
                                if (file_exists('../../img_ftp/' . $file) && $file != '') {
                                    chmod("../../img_ftp/{$file}", 0644);
                                }
                                // Redimensionnement, w=1000, priorite w
                                Lib_redimImage("../../img_ftp/{$file}", 145, 103, 'w');
                            }
                            $champ = 'fichier1';
                            $new->{$champ} = $file;
                            $new->id_article = $id_article;
                            $new->UPD();
                        }
                    }
                }
            }
            $new->UPD();
            $data_out['message_ok'] = $MSG['fr']['%%UPD%%'];
        }
        // Ici il s'agit de l'ajout d'un nouvel new qui n'existait pas auparavant puisque l'id_article n'est pas fourni.
        // On créé donc autant d'news qu'il y a de langues...
        if (!isset($news_bdd['id_article'])) {
            /*=============*/
            Lib_myLog("New non trouve. Ajout d'un nouvel new en fr");
            $new = new Article();
            $new->code_news = $data_in['code_news'];
            $new->libelle = $data_in['libelle'];
            $new->code = $data_in['timestamp'];
            $new->lang = 'fr';
            $new->contenu = $data_in['text1'];
            $new->texte_intro = $data_in['texte_intro'];
            $new->meta_titre = $data_in['meta_titre'];
            $new->meta_description = $data_in['meta_description'];
            $new->meta_mots_clefs = $data_in['meta_mots_clefs'];
            $new->meta_url = $data_in['meta_url'];
            $new->titre = $data_in['titre'];
            for ($i = 1; $i <= 20; $i++) {
                $champ = 'titre_data' . $i;
                $new->{$champ} = $data_in['titre_data' . $i];
                $champ = 'data' . $i;
                $new->{$champ} = $data_in['data' . $i];
            }
            $new->date = $data_in['date'];
            if (isset($data_in['etat']) && isset($data_in['submit_valid'])) {
                $new->etat = 'actif';
            }
            if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) {
                $new->etat = 'brouillon';
            }
            if (!isset($data_in['etat']) && isset($data_in['submit_valid'])) {
                $new->etat = 'inactif';
            }
            $args_news['code_news'] = $data_in['code_news'];
            $news = Articles_chercher($args_news);
            $position = 0;
            foreach ($news as $newz) {
                if ($newz['position'] > $position) {
                    $position = $newz['position'];
                }
            }
            $position += 1;
            $new->position = $position;
            $id_article = $new->ADD();
            $data_in['id_article'] = $id_article;
            // CODE : On affecte l'id de la news au code
            $new = Article_recuperer($id_article);
            $new->code = $id_article;
            $new->UPD();
            $data_in['code'] = $id_article;
            $data_in['lang'] = 'fr';
            if ($_FILES['url_image']['name'] != '') {
                //Ici le fichier peut etre autre chose qu'une image
                $valid = 0;
                //$valid = Lib_isValidFile($_FILES['url_image_'.$langue]["name"], array("jpg", "jpeg", "png", "gif"));
                if ($_FILES["url_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_image = '';
                } else {
                    if ($valid == 1) {
                        /*=============*/
                        Lib_myLog("Fichier non autorise");
                        $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                    } else {
                        $file = Lib_nettoie($_FILES['url_image']['name']);
                        $file = $id_article . '_' . $file;
                        if (file_exists('../../img_ftp/' . $file)) {
                            unlink('../../img_ftp/' . $file);
                        }
                        if (is_uploaded_file($_FILES['url_image']['tmp_name'])) {
                            /*=============*/
                            Lib_myLog("deplacement du fichier au bon endroit");
                            $tmp = $_FILES['url_image_' . $langue]['tmp_name'];
                            rename($tmp, '../../img_ftp/' . $file);
                            if (file_exists('../../img_ftp/' . $file) && $file != '') {
                                chmod("../../img_ftp/{$file}", 0644);
                            }
                            // Redimensionnement, w=1000, priorite w
                            Lib_redimImage("../../img_ftp/{$file}", 145, 103, 'w');
                        }
                        $new->url_image = $file;
                        $new->id_article = $id_article;
                        $new->UPD();
                    }
                }
            }
            if ($_FILES['url_image2']['name'] != '') {
                //Ici le fichier peut etre autre chose qu'une image
                $valid = 0;
                //$valid = Lib_isValidFile($_FILES['url_image2_'.$langue]["name"], array("jpg", "jpeg", "png", "gif"));
                if ($_FILES["url_image2"]['error'] == 1) {
                    /*=============*/
                    Lib_myLog("Taille trop elevee");
                    $val = ini_get('upload_max_filesize');
                    $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                    $new->url_image2 = '';
                } else {
                    if ($valid == 1) {
                        /*=============*/
                        Lib_myLog("Fichier non autorise");
                        $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                    } else {
                        $file = Lib_nettoie($_FILES['url_image2']['name']);
                        $file = $id_article . '_' . $file;
                        if (file_exists('../../img_ftp/' . $file)) {
                            unlink('../../img_ftp/' . $file);
                        }
                        if (is_uploaded_file($_FILES['url_image2']['tmp_name'])) {
                            /*=============*/
                            Lib_myLog("deplacement du fichier au bon endroit");
                            $tmp = $_FILES['url_image2']['tmp_name'];
                            rename($tmp, '../../img_ftp/' . $file);
                            if (file_exists('../../img_ftp/' . $file) && $file != '') {
                                chmod("../../img_ftp/{$file}", 0644);
                            }
                            // Redimensionnement, w=1000, priorite w
                            Lib_redimImage("../../img_ftp/{$file}", 145, 103, 'w');
                        }
                        $new->url_image2 = $file;
                        $new->id_article = $id_article;
                        $new->UPD();
                    }
                }
            }
            for ($i = 1; $i <= 5; $i++) {
                if ($_FILES['fichier' . $i . '_' . $langue]['name'] != '') {
                    //Ici le fichier peut etre autre chose qu'une image
                    $valid = 0;
                    //$valid = Lib_isValidFile($_FILES['url_image2_'.$langue]["name"], array("jpg", "jpeg", "png", "gif"));
                    if ($_FILES["fichier1" . $i . "_" . $langue]['error'] == 1) {
                        /*=============*/
                        Lib_myLog("Taille trop elevee");
                        $val = ini_get('upload_max_filesize');
                        $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                        $champ = 'fichier1';
                        $new->{$champ} = $file;
                    } else {
                        if ($valid == 1) {
                            /*=============*/
                            Lib_myLog("Fichier non autorise");
                            $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                        } else {
                            $file = Lib_nettoie($_FILES['fichier' . $i . '_' . $langue]['name']);
                            $file = $id_article . '_' . $file;
                            if (file_exists('../../img_ftp/' . $file)) {
                                unlink('../../img_ftp/' . $file);
                            }
                            if (is_uploaded_file($_FILES['fichier1' . $i . '_' . $langue]['tmp_name'])) {
                                /*=============*/
                                Lib_myLog("deplacement du fichier au bon endroit");
                                $tmp = $_FILES['fichier1' . $i . '_' . $langue]['tmp_name'];
                                rename($tmp, '../../img_ftp/' . $file);
                                if (file_exists('../../img_ftp/' . $file) && $file != '') {
                                    chmod("../../img_ftp/{$file}", 0644);
                                }
                                // Redimensionnement, w=1000, priorite w
                                Lib_redimImage("../../img_ftp/{$file}", 145, 103, 'w');
                            }
                            $champ = 'fichier1';
                            $new->{$champ} = $file;
                            $new->id_article = $id_article;
                            $new->UPD();
                        }
                    }
                }
            }
            if (!$new->isError()) {
                $transaction->addElement($new);
            } else {
                $continue = false;
            }
            if (count($GLOBALS['LANGUES']) && $continue) {
                foreach ($GLOBALS['LANGUES'] as $langue) {
                    /*=============*/
                    Lib_myLog("Ajout de la news en {$langue}");
                    $new->lang = $langue;
                    $new->ADD();
                    if (!$new->isError()) {
                        $transaction->addElement($new);
                    } else {
                        $transaction->DEL();
                        $continue = false;
                    }
                }
            }
            if ($continue) {
                $data_out['message_ok'] = $MSG['fr']['%%ADD%%'];
            }
        }
        //$data_in['code'] = ($data_in['code'] != '') ? $data_in['code'] : $data_in['timestamp'];
        // On remet à 0 le fichier contenant le "cache" des news pour l'affichage des blocs
        Lib_writeCache('', "ARTICLES");
    }
    if ($continue) {
        if (isset($data_in['submit_valid'])) {
            $data_in['action'] = 'News_Apercu';
        }
        call_user_func('News_Apercu', $data_in);
    } else {
        if ($F5) {
            /*=============*/
            Lib_myLog("Tentative de F5!");
            //if(!isset($data_in['submit_cancel']))
            $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
            $data_in['action'] = 'News_Apercu';
            call_user_func('News_Apercu', $data_in);
        } else {
            $data_in['action'] = 'News_Apercu';
            call_user_func('News_Apercu', $data_in);
        }
    }
}
function Fiche_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__);
    $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;
        $data_in['action'] = 'Annuaire_Accueil';
        call_user_func('Annuaire_Accueil', $data_in);
    } else {
        if ($F5) {
            /*=============*/
            Lib_myLog("Tentative de F5!");
            $data_out['message'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
            $data_in['action'] = 'Annuaire_Accueil';
            call_user_func('Annuaire_Accueil', $data_in);
        } 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);
            $data_in['action'] = 'Annuaire_Accueil';
            call_user_func('Annuaire_Accueil', $data_in);
        }
    }
}
/**
 * - Cas Articles_ChoixAction :
 * . 
 *      Le cas (par défaut) Sites_ChoixAction détermine si l'action sera un ajout ou une modification ; en fonction, il ajoute les données du formulaire (wysiwyg) ou les modifie.
 */
function SiteStatique_ChoixAction($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__);
    $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();
    // Cas de SUPPRESSION complète de l'article de la base
    if (isset($data_in['submit_clear'])) {
        /*=============*/
        Lib_myLog("Suppression des articles");
        // On récupère tous les anciens articles correspondant au type d'article pour les supprimer
        $args_articles['code'] = $data_in['code'];
        $liste_articles = Articles_chercher($args_articles);
        foreach ($liste_articles as $art) {
            $article = Article_recuperer($art['id_article']);
            $article->etat = 'supprime';
            $article->UPD();
        }
        $data_out['message_ok'] = $MSG['fr']['%%DEL%%'];
        // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs
        Lib_writeCache('', "ARTICLES");
        $continue = false;
    }
    // Cas d'ANNULATION du brouillon si celui-ci existe
    if (isset($data_in['submit_cancel'])) {
        // On récupère tous les anciens articles correspondant au type d'article pour les supprimer
        $args_articles['code'] = $data_in['code'];
        $args_articles['etat'] = 'brouillon';
        $liste_articles = Articles_chercher($args_articles);
        foreach ($liste_articles as $art) {
            $article = Article_recuperer($art['id_article']);
            $article->DEL();
        }
        $continue = false;
    }
    // Cas de MODIFICATION d'article ou de PRE-VISUALISATION
    if ($continue) {
        /*=============*/
        Lib_myLog("Recherche de l'article");
        $args['code'] = $data_in['code'];
        $args['lang'] = $data_in['lang'] != '' && $data_in['lang'] != '' ? $data_in['lang'] : 'fr';
        $article_bdd = Articles_chercher($args);
        // 2 cas se présentent:
        // - Soit il s'agit d'une modification sur un article encore en "brouillon" ou "inactif'.
        // - Soit il s'agit d'une modification sur un article "actif".
        if (isset($article_bdd['id_article'])) {
            /*=============*/
            Lib_myLog("Article trouve, recuperation de l'article");
            $article = Article_recuperer($article_bdd['id_article']);
            /*=============*/
            Lib_myLog("Mise a jour l'article");
            $article->titre = $data_in['titre'];
            $article->meta_titre = $data_in['meta_titre'];
            $article->meta_description = $data_in['meta_description'];
            $article->meta_mots_clefs = $data_in['meta_mots_clefs'];
            $article->meta_url = $data_in['meta_url'];
            $article->texte_intro = $data_in['texte_intro'];
            $article->contenu = $data_in['text1'];
            for ($i = 1; $i <= 20; $i++) {
                $champ = 'titre_data' . $i;
                if (isset($data_in['titre_data' . $i])) {
                    $article->{$champ} = $data_in['titre_data' . $i];
                }
                $champ = 'data' . $i;
                if (isset($data_in['data' . $i])) {
                    $article->{$champ} = $data_in['data' . $i];
                }
            }
            if (isset($data_in['submit_valid']) && !isset($data_in['etat'])) {
                $article->etat = 'inactif';
            }
            if (isset($data_in['submit_valid']) && isset($data_in['etat'])) {
                $article->etat = 'actif';
            }
            if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) {
                $article->etat = 'brouillon';
            }
            if ($_FILES["url_vignette"]['error'] == 1) {
                /*=============*/
                Lib_myLog("Taille trop elevee");
                $val = ini_get('upload_max_filesize');
                $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                $article->url_vignette = '';
            } else {
                if ($_FILES["url_vignette"]["name"] != '') {
                    /*=============*/
                    Lib_myLog("Telechargement de la vignette");
                    $url_vignette = Lib_nettoie($_FILES["url_vignette"]["name"]);
                    $url_vignette = $article->id_article . '_' . $url_vignette;
                    // Si la vignette existait déjà, on la remplace...
                    if (file_exists('../../img_ftp/' . $url_vignette)) {
                        unlink('../../img_ftp/' . $url_vignette);
                    }
                    if (is_uploaded_file($_FILES["url_vignette"]["tmp_name"])) {
                        $tmp_vignette = $_FILES["url_vignette"]["tmp_name"];
                        rename($tmp_vignette, '../../img_ftp/' . $url_vignette);
                        if (file_exists('../../img_ftp/' . $url_vignette) && $url_vignette != '') {
                            chmod("../../img_ftp/{$url_vignette}", 0644);
                        }
                        // Redimensionnement, w=1000, priorite w
                        Lib_redimImage("../../img_ftp/{$url_vignette}", 1000, '', 'w');
                    }
                    $article->url_vignette = $url_vignette;
                }
            }
            if ($_FILES["url_image2"]['error'] == 1) {
                /*=============*/
                Lib_myLog("Taille trop elevee");
                $val = ini_get('upload_max_filesize');
                $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                $article->url_image2 = '';
            } else {
                if ($_FILES["url_image2"]["name"] != '') {
                    /*=============*/
                    Lib_myLog("Telechargement de la 2e vignette");
                    $url_image2 = Lib_nettoie($_FILES["url_image2"]["name"]);
                    $url_image2 = $article->id_article . '_' . $url_image2;
                    // Si la vignette existait déjà, on la remplace...
                    if (file_exists('../../img_ftp/' . $url_image2)) {
                        unlink('../../img_ftp/' . $url_image2);
                    }
                    if (is_uploaded_file($_FILES["url_image2"]["tmp_name"])) {
                        $tmp_image2 = $_FILES["url_image2"]["tmp_name"];
                        rename($tmp_image2, '../../img_ftp/' . $url_image2);
                        if (file_exists('../../img_ftp/' . $url_image2) && $url_image2 != '') {
                            chmod("../../img_ftp/{$url_image2}", 0644);
                        }
                        // Redimensionnement, w=1000, priorite w
                        Lib_redimImage("../../img_ftp/{$url_image2}", 1000, '', 'w');
                    }
                    $article->url_image2 = $url_image2;
                }
            }
            for ($i = 1; $i <= 5; $i++) {
                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})";
                    $champ = 'fichier' . $i;
                    $article->{$champ} = '';
                } else {
                    if ($_FILES["fichier" . $i]["name"] != '') {
                        /*=============*/
                        Lib_myLog("Telechargement de la 2e vignette");
                        $fichier = Lib_nettoie($_FILES["fichier" . $i]["name"]);
                        $fichier = $article->id_article . '_' . $fichier;
                        // Si la vignette existait déjà, on la remplace...
                        if (file_exists('../../img_ftp/' . $fichier)) {
                            unlink('../../img_ftp/' . $fichier);
                        }
                        if (is_uploaded_file($_FILES["fichier" . $i]["tmp_name"])) {
                            $tmp_image = $_FILES["fichier" . $i]["tmp_name"];
                            rename($tmp_image, '../../img_ftp/' . $fichier);
                            if (file_exists('../../img_ftp/' . $fichier) && $fichier != '') {
                                chmod("../../img_ftp/{$fichier}", 0644);
                            }
                            // Redimensionnement, w=1000, priorite w
                            Lib_redimImage("../../img_ftp/{$fichier}", 1000, '', 'w');
                        }
                        $champ = 'fichier' . $i;
                        $article->{$champ} = $fichier;
                    }
                }
            }
            $data_out['message_ok'] = $MSG['fr']['%%UPD%%'];
            $article->UPD();
        }
        // Ici il s'agit de l'ajout d'un nouvel article qui n'existait pas auparavant puisque l'id_article n'est pas fourni.
        // On créé donc autant d'articles qu'il y a de langues...
        if (!isset($article_bdd['id_article'])) {
            /*=============*/
            Lib_myLog("Article non trouve. Ajout d'un nouvel article en fr");
            $article = new Article();
            $article->code = $data_in['code'];
            $article->lang = 'fr';
            $article->contenu = $data_in['text1'];
            $article->titre = $data_in['titre'];
            $article->meta_titre = $data_in['meta_titre'];
            $article->meta_description = $data_in['meta_description'];
            $article->meta_mots_clefs = $data_in['meta_mots_clefs'];
            $article->meta_url = $data_in['meta_url'];
            $article->texte_intro = $data_in['texte_intro'];
            for ($i = 1; $i <= 20; $i++) {
                $champ = 'titre_data' . $i;
                if (isset($data_in['titre_data' . $i])) {
                    $article->{$champ} = $data_in['titre_data' . $i];
                }
                $champ = 'data' . $i;
                if (isset($data_in['data' . $i])) {
                    $article->{$champ} = $data_in['data' . $i];
                }
            }
            // Mettre ici la catégorie afin de pouvoir retrouver facilement toutes les pages d'un même type dans la BDD
            $article->categorie = 'page_statique';
            if (isset($data_in['etat']) && isset($data_in['submit_valid'])) {
                $article->etat = 'actif';
            }
            if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) {
                $article->etat = 'brouillon';
            }
            if (!isset($data_in['etat']) && isset($data_in['submit_valid'])) {
                $article->etat = 'inactif';
            }
            $id_article = $article->ADD();
            $data_out['message_ok'] = $MSG['fr']['%%ADD%%'];
            $article = Article_recuperer($id_article);
            if (!$article->isError()) {
                $transaction->addElement($article);
            } else {
                $continue = false;
            }
            if ($_FILES["url_vignette"]['error'] == 1) {
                /*=============*/
                Lib_myLog("Taille trop elevee");
                $val = ini_get('upload_max_filesize');
                $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                $article->url_vignette = '';
            } else {
                if ($_FILES["url_vignette"]["name"] != '') {
                    /*=============*/
                    Lib_myLog("Telechargement de la vignette");
                    $url_vignette = Lib_nettoie($_FILES["url_vignette"]["name"]);
                    $url_vignette = $article->id_article . '_' . $url_vignette;
                    // Si la vignette existait déjà, on la remplace...
                    if (file_exists('../../img_ftp/' . $url_vignette)) {
                        unlink('../../img_ftp/' . $url_vignette);
                    }
                    if (is_uploaded_file($_FILES["url_vignette"]["tmp_name"])) {
                        $tmp_vignette = $_FILES["url_vignette"]["tmp_name"];
                        rename($tmp_vignette, '../../img_ftp/' . $url_vignette);
                        if (file_exists('../../img_ftp/' . $url_vignette) && $url_vignette != '') {
                            chmod("../../img_ftp/{$url_vignette}", 0644);
                        }
                    }
                    $article->url_vignette = $url_vignette;
                    $article->UPD();
                }
            }
            if ($_FILES["url_image2"]['error'] == 1) {
                /*=============*/
                Lib_myLog("Taille trop elevee");
                $val = ini_get('upload_max_filesize');
                $data_out['message_ko'] = $MSG['fr']['%%Erreur_Taille%%'] . " ({$val})";
                $article->url_image2 = '';
            } else {
                if ($_FILES["url_image2"]["name"] != '') {
                    /*=============*/
                    Lib_myLog("Telechargement de la 2e vignette");
                    $url_image2 = Lib_nettoie($_FILES["url_image2"]["name"]);
                    $url_image2 = $article->id_article . '_' . $url_image2;
                    // Si la vignette existait déjà, on la remplace...
                    if (file_exists('../../img_ftp/' . $url_image2)) {
                        unlink('../../img_ftp/' . $url_image2);
                    }
                    if (is_uploaded_file($_FILES["url_image2"]["tmp_name"])) {
                        $tmp_image2 = $_FILES["url_image2"]["tmp_name"];
                        rename($tmp_image2, '../../img_ftp/' . $url_image2);
                        if (file_exists('../../img_ftp/' . $url_image2) && $url_image2 != '') {
                            chmod("../../img_ftp/{$url_image2}", 0644);
                        }
                    }
                    $article->url_image2 = $url_image2;
                }
            }
            for ($i = 1; $i <= 5; $i++) {
                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})";
                    $champ = 'fichier' . $i;
                    $article->{$champ} = '';
                } else {
                    if ($_FILES["fichier" . $i]["name"] != '') {
                        /*=============*/
                        Lib_myLog("Telechargement de la 2e vignette");
                        $fichier = Lib_nettoie($_FILES["fichier" . $i]["name"]);
                        $fichier = $article->id_article . '_' . $fichier;
                        // Si la vignette existait déjà, on la remplace...
                        if (file_exists('../../img_ftp/' . $fichier)) {
                            unlink('../../img_ftp/' . $fichier);
                        }
                        if (is_uploaded_file($_FILES["fichier" . $i]["tmp_name"])) {
                            $tmp_image = $_FILES["fichier" . $i]["tmp_name"];
                            rename($tmp_image, '../../img_ftp/' . $fichier);
                            if (file_exists('../../img_ftp/' . $fichier) && $fichier != '') {
                                chmod("../../img_ftp/{$fichier}", 0644);
                            }
                            // Redimensionnement, w=1000, priorite w
                            Lib_redimImage("../../img_ftp/{$fichier}", 1000, '', 'w');
                        }
                        $champ = 'fichier' . $i;
                        $article->{$champ} = $fichier;
                    }
                }
            }
            foreach ($GLOBALS['LANGUES'] as $langue) {
                if ($continue) {
                    /*=============*/
                    Lib_myLog("Ajout de l'article en {$langue}");
                    $article->lang = $langue;
                    $article->ADD();
                    if (!$article->isError()) {
                        $transaction->addElement($article);
                    } else {
                        $transaction->DEL();
                        $continue = false;
                    }
                }
            }
        }
        // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs
        Lib_writeCache('', "ARTICLES");
    }
    if ($continue) {
        if (isset($data_in['submit_valid'])) {
            $data_in['action'] = 'SiteStatique_Apercu';
        }
        call_user_func('SiteStatique_Apercu', $data_in);
    } else {
        if ($F5) {
            /*=============*/
            Lib_myLog("Tentative de F5!");
            $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
            $data_in['action'] = 'SiteStatique_Apercu';
            call_user_func('SiteStatique_Apercu', $data_in);
        } else {
            $data_in['action'] = 'SiteStatique_Apercu';
            call_user_func('SiteStatique_Apercu', $data_in);
        }
    }
}