예제 #1
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, $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 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 SiteDynamique_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 va permettre de stocker tous les objets rajoutés à la base
    // pour pouvoir les supprimer si nécessaire
    $transaction = new Collection();
    // Cas de VIDAGE d'un article de la base
    if ($continue && isset($data_in['submit_clear'])) {
        /*=============*/
        Lib_myLog("Vidage de l'article");
        $article = Article_recuperer($data_in['id_article']);
        $article->contenu = '';
        $article->UPD();
        $data_out['message_ok'] = $MSG['fr']['%%UPD%%'];
        // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs
        Lib_writeCache('', "ARTICLES");
        // On remet à 0 le fichier contenant le "cache" de l'arborescence
        Lib_writeCache('', "ARBO");
        $continue = false;
    }
    // Cas d'ANNULATION du brouillon si celui-ci existe
    if ($continue && isset($data_in['submit_cancel'])) {
        // On récupère tous les anciens articles correspondant au type d'article pour les supprimer
        $args_articles['id_article'] = $data_in['id_article'];
        $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("Recuperation de la categorie dans laquelle se retrouvera l'article");
        if (isset($data_in['id_arbo_pere']) && $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_pere = $data_in['id_arbo_pere'];
            $id_categorie = $data_in['id_arbo_pere'];
            // Si l'id_arbo_fils est positionné, il "surclasse" l'id_arbo_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'];
                $id_categorie = $data_in['id_arbo_fils'];
            }
        }
        /*=============*/
        Lib_myLog("Recuperation et mise a jour de l'article");
        $article = Article_recuperer($data_in['id_article']);
        /*=============*/
        Lib_myLog("Mise a jour l'article");
        $article->id_article = $data_in['id_article'];
        $article->id_categorie = $id_categorie_pere;
        $article->titre_page = $data_in['titre_page'];
        $article->titre = $data_in['titre'];
        $article->meta_titre = $data_in['meta_titre'] != '' ? $data_in['meta_titre'] : $data_in['titre'];
        $article->meta_description = $data_in['meta_description'];
        $article->meta_mots_clefs = $data_in['meta_mots_clefs'];
        $article->meta_url = $data_in['meta_url'] != '' ? Lib_urlRewrite($data_in['meta_url']) : Lib_urlRewrite($data_in['titre']);
        $article->contenu = $data_in['text1'];
        if (isset($data_in['data1'])) {
            $article->data1 = $data_in['data1'];
        }
        if (isset($data_in['data2'])) {
            $article->data2 = $data_in['data2'];
        }
        if (isset($data_in['data3'])) {
            $article->data3 = $data_in['data3'];
        }
        if (isset($data_in['data4'])) {
            $article->data4 = $data_in['data4'];
        }
        if (isset($data_in['data5'])) {
            $article->data5 = $data_in['data5'];
        }
        if (isset($data_in['data6'])) {
            $article->data6 = $data_in['data6'];
        }
        if (isset($data_in['titre_data1'])) {
            $article->titre_data1 = $data_in['titre_data1'];
        }
        if (isset($data_in['titre_data2'])) {
            $article->titre_data2 = $data_in['titre_data2'];
        }
        if (isset($data_in['titre_data3'])) {
            $article->titre_data3 = $data_in['titre_data3'];
        }
        if (isset($data_in['titre_data4'])) {
            $article->titre_data4 = $data_in['titre_data4'];
        }
        if (isset($data_in['titre_data5'])) {
            $article->titre_data5 = $data_in['titre_data5'];
        }
        if (isset($data_in['titre_data6'])) {
            $article->titre_data6 = $data_in['titre_data6'];
        }
        if ($url_reel_vignette != '') {
            $article->url_vignette = $vignette;
        }
        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"]["name"] != '') {
            //$valid = Lib_isValidFile($_FILES["url_vignette"]["name"], array("jpg", "jpeg", "png", "gif"));
            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})";
                $new->url_vignette = '';
            } else {
                if ($valid == 1) {
                    /*=============*/
                    Lib_myLog("Fichier non autorise");
                    $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
                } else {
                    /*=============*/
                    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=483, priorite w
                        // Lib_redimImage("../../img_ftp/$file", 483, '', 'w');
                    }
                    $article->url_vignette = $url_vignette;
                }
            }
        }
        $article->UPD();
        if ($data_in['lang'] == 'fr') {
            $arbo = Arbo_recuperer_par_element($article->id_article, 'article', $data_in['code_arbo']);
            //					$famille_initiale = $arbo->famille;
            //					// Il faut d'abord vérifier si on ne travaille pas avec une catégorie et si l'article va changer de famille ou pas !
            //					if ($arbo->id_arbo_pere == 0 && !empty($args_arbos['famille']) && $famille_initiale != $args_arbos['famille']) {
            //						/*=============*/ Lib_myLog("Changement de categorie : {$famille_initiale} => {$args_arbos['famille']}");
            //						$old_pos = $arbo->ordre;
            //						$arbo->famille = $args_arbos['famille'];
            //						$arbo->code_arbo = $data_in['code_arbo'];
            //						$ordres = Arbos_chercher($args_arbos);
            //						$pos = 0;
            //						foreach ($ordres as $ordre)
            //							if ($ordre['ordre'] > $pos) $pos = $ordre['ordre'];
            //						$pos++;
            //						$arbo->ordre = $pos;
            //						$arbo->famille = $args_arbos['famille'];
            //						/*=============*/ Lib_myLog("Nouvelle position : {$pos}");
            //
            //						/*=============*/ Lib_myLog("Retablissement de l'ordre sans coupure dans l'arborescence initiale ({$famille_initiale})");
            //						$args_arbos = '';
            //						$args_arbos['famille'] = $famille_initiale;
            //						$args_arbos['code_arbo'] = $data_in['code_arbo'];
            //						$ordres = Arbos_chercher($args_arbos);
            //						foreach($ordres as $ordre) {
            //							// On ne prend en compte que les elements ayant un ordre supérieur à celui de l'élément !
            //							if ($ordre['ordre'] < $old_pos) continue;
            //							$arbo_upd = Arbo_recuperer($ordre['id_arbo']);
            //							$arbo_upd->ordre = $arbo_upd->ordre -1;
            //							$arbo_upd->UPD();
            //						}
            //					}
            $arbo->intitule = $data_in['titre'];
            $arbo->UPD();
        }
        if (empty($data_out['message_ko'])) {
            $data_out['message_ok'] = $MSG['fr']['%%UPD%%'];
        }
        // On remet à 0 le fichier contenant le "cache" de l'arborescence
        Lib_writeCache('', "ARBO");
        // 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'])) {
            if (isset($data_in['code_arbo'])) {
                header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/actions.php?action=Arbo_Accueil&code_arbo={$data_in['code_arbo']}");
            } else {
                $data_in['action'] = 'SiteDynamique_Apercu';
                call_user_func('SiteDynamique_Apercu', $data_in);
            }
        }
        if (!isset($data_in['submit_valid']) && !isset($data_in['submit_cancel']) && !isset($data_in['submit_clear'])) {
            $data_in['action'] = 'SiteDynamique_Preview';
        }
        call_user_func('SiteDynamique_Preview', $data_in);
    } else {
        if ($F5) {
            /*=============*/
            Lib_myLog("Tentative de F5!");
            $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
            $data_in['action'] = 'SiteDynamique_Apercu';
            call_user_func('SiteDynamique_Apercu', $data_in);
        } else {
            $data_in['action'] = 'SiteDynamique_Apercu';
            call_user_func('SiteDynamique_Apercu', $data_in);
        }
    }
}
예제 #3
0
function Docs_Document_UPD($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("Modification de l'article");
    $article = Article_recuperer($data_in['id_article']);
    $article->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'article de toutes façons...
    $article->titre = $data_in['titre_page'];
    $article->lang = 'fr';
    $article->etat = 'actif';
    if ($_FILES["url_vignette"]["name"] != '') {
        //$valid = Lib_isValidFile($_FILES["url_vignette"]["name"], array("jpg", "jpeg", "png", "gif"));
        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 ($valid == 1) {
                /*=============*/
                Lib_myLog("Fichier non autorise");
                $data_out['message_ko'] = $MSG['fr']['%%Fichier_non_autorise%%'];
            } else {
                /*=============*/
                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);
                    chmod("../../img_ftp/{$url_vignette}", 0644);
                    // Redimensionnement, w=483, priorite w
                    // Lib_redimImage("../../img_ftp/$file", 483, '', 'w');
                }
                $article->url_vignette = $url_vignette;
            }
        }
    }
    $article->UPD();
    // On remet à 0 le fichier contenant le "cache" des articles pour l'affichage des blocs
    Lib_writeCache('', "ARTICLES");
    // On remet à 0 le fichier contenant le "cache" de l'arborescence
    Lib_writeCache('', "ARBO");
    //Enregistrement d'un zip par dossier racine contenant les fichiers
    $arbo = Arbo_recuperer_par_element($data_in['id_article'], 'article', '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=Docs_Accueil&code_arbo={$data_in['code_arbo']}");
    }
}
예제 #4
0
function Arbo_Element_DEL($data_in = array())
{
    Lib_myLog("action: " . $data_in['action']);
    foreach ($GLOBALS['tab_globals'] as $global) {
        global ${$global};
    }
    Lib_myLog("IN: ", $data_in);
    Lib_myLog("FILE: ", __FILE__);
    /*=============*/
    Lib_myLog("Recuperation de 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_writeCache('', "ARBO");
    $data_in['action'] = 'Arbo_Accueil';
    call_user_func('Arbo_Accueil', $data_in);
}
예제 #5
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;
    }
}