/** baz_gestion_formulaire() affiche le listing des formulaires et permet de les modifier
 *   @return  string    le code HTML
 */
function baz_gestion_formulaire()
{
    // la gestion des formulaires est réservée aux identifiés
    if ($GLOBALS['wiki']->GetUser()) {
        $res = '';
        if (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif') {
            // il y a un formulaire a modifier
            // recuperation des informations du type de formulaire
            $ligne = baz_valeurs_formulaire($_GET['idformulaire']);
            $formulaire = baz_formulaire_des_formulaires('modif_v');
            $formulaire->setDefaults($ligne);
            $res .= $formulaire->toHTML();
        } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new') {
            // il y a un nouveau formulaire a saisir
            $formulaire = baz_formulaire_des_formulaires('new_v');
            $res .= $formulaire->toHTML();
        } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new_v') {
            // il y a des donnees pour ajouter un nouveau formulaire
            $requete = 'INSERT INTO ' . BAZ_PREFIXE . 'nature (`bn_id_nature` ,`bn_ce_i18n` ,`bn_label_nature` ,`bn_template` ,`bn_description` ,`bn_condition`, `bn_label_class` ,`bn_type_fiche`)' . ' VALUES (' . baz_nextId(BAZ_PREFIXE . 'nature', 'bn_id_nature', $GLOBALS['wiki']) . ', "fr-FR", "' . addslashes(_convert($_POST['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '")';
            $resultat = $GLOBALS['wiki']->query($requete);
            $res .= '<div class="alert alert-success">' . "\n" . '<a data-dismiss="alert" class="close" type="button">&times;</a>' . _t('BAZ_NOUVEAU_FORMULAIRE_ENREGISTRE') . '</div>' . "\n";
        } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif_v' && baz_a_le_droit('saisie_formulaire')) {
            //il y a des donnees pour modifier un formulaire
            $requete = 'UPDATE ' . BAZ_PREFIXE . 'nature SET `bn_label_nature`="' . addslashes(_convert($_POST['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_template`="' . addslashes(_convert($_POST['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_description`="' . addslashes(_convert($_POST['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_condition`="' . addslashes(_convert($_POST['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_label_class`="' . addslashes(_convert($_POST['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_type_fiche`="' . addslashes(_convert($_POST['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '"' . ' WHERE `bn_id_nature`=' . $_POST['bn_id_nature'];
            $resultat = $GLOBALS['wiki']->query($requete);
            $res .= '<div class="alert alert-success">' . "\n" . '<a data-dismiss="alert" class="close" type="button">&times;</a>' . _t('BAZ_FORMULAIRE_MODIFIE') . '</div>' . "\n";
        } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'delete' && baz_a_le_droit('saisie_formulaire')) {
            // il y a un id de formulaire a supprimer, suppression de l'entree dans la table nature
            $requete = 'DELETE FROM ' . BAZ_PREFIXE . 'nature WHERE bn_id_nature=' . $_GET['idformulaire'];
            $resultat = $GLOBALS['wiki']->query($requete);
            //TODO : suppression des fiches associees au formulaire
            $res .= '<div class="alert alert-success">' . "\n" . '<a data-dismiss="alert" class="close" type="button">&times;</a>' . _t('BAZ_FORMULAIRE_ET_FICHES_SUPPRIMES') . '</div>' . "\n";
        }
        // affichage de la liste des templates a modifier ou supprimer
        if (!isset($_GET['action_formulaire']) || $_GET['action_formulaire'] != 'modif' && $_GET['action_formulaire'] != 'new') {
            $tab_forms['forms'] = array();
            $forms = baz_valeurs_tous_les_formulaires($GLOBALS['params']['categorienature']);
            // il y a des formulaires à importer
            if (isset($_POST['imported-form'])) {
                foreach ($_POST['imported-form'] as $id => $value) {
                    $value = json_decode($value, true);
                    $searchformname = multiArraySearch($forms, 'bn_label_nature', $value['bn_label_nature']);
                    // si un formulaire du même nom existe, on le remplace
                    if (count($searchformname) > 0) {
                        $localform = array_pop($searchformname);
                        $value['bn_id_nature'] = $localform['bn_id_nature'];
                        $requete = 'UPDATE ' . BAZ_PREFIXE . 'nature SET `bn_label_nature`="' . addslashes(_convert($value['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_template`="' . addslashes(_convert($value['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_description`="' . addslashes(_convert($value['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_condition`="' . addslashes(_convert($value['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_label_class`="' . addslashes(_convert($value['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_type_fiche`="' . addslashes(_convert($value['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '"' . ' WHERE `bn_id_nature`=' . $value['bn_id_nature'];
                        $forms[$value['bn_type_fiche']][$value['bn_id_nature']] = $value;
                    } else {
                        // si un formulaire existant porte le meme id on enregistre un nouvel id
                        $searchformid = multiArraySearch($forms, 'bn_id_nature', $id);
                        if (count($searchformid) > 0) {
                            $id = baz_nextId(BAZ_PREFIXE . 'nature', 'bn_id_nature', $GLOBALS['wiki']);
                        }
                        $requete = 'INSERT INTO ' . BAZ_PREFIXE . 'nature (`bn_id_nature` ,`bn_ce_i18n` ,`bn_label_nature` ,`bn_template` ,`bn_description` ,`bn_condition`, `bn_label_class` ,`bn_type_fiche`)' . ' VALUES (' . $id . ', "fr-FR", "' . addslashes(_convert($value['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '")';
                        // on ajoute le formulaire à la liste des formulaires existants
                        $forms[$value['bn_type_fiche']][$id] = $value;
                    }
                    $resultat = $GLOBALS['wiki']->query($requete);
                }
                ksort($forms);
                $res .= '<div class="alert alert-success">' . _t('BAZ_FORM_IMPORT_SUCCESSFULL') . '.</div>' . "\n";
            }
            foreach ($forms as $cat => $form) {
                foreach ($form as $key => $ligne) {
                    $tab_forms['forms'][$ligne['bn_id_nature']]['title'] = $ligne['bn_label_nature'];
                    $tab_forms['forms'][$ligne['bn_id_nature']]['description'] = $ligne['bn_description'];
                    $tab_forms['forms'][$ligne['bn_id_nature']]['category'] = $cat;
                    $tab_forms['forms'][$ligne['bn_id_nature']]['can_edit'] = baz_a_le_droit('saisie_formulaire');
                    $tab_forms['forms'][$ligne['bn_id_nature']]['can_delete'] = $GLOBALS['wiki']->UserIsAdmin();
                }
            }
            // on rajoute les bibliothèques js nécéssaires
            $GLOBALS['wiki']->addJavascriptFile('tools/bazar/libs/bazar.edit_forms.js');
            // On cherche un template personnalise dans le repertoire themes/tools/bazar/templates
            $templatetoload = 'themes/tools/bazar/templates/forms_table.tpl.html';
            if (!is_file($templatetoload)) {
                $templatetoload = 'tools/bazar/presentation/templates/forms_table.tpl.html';
            }
            include_once 'tools/bazar/libs/squelettephp.class.php';
            $templateforms = new SquelettePhp($templatetoload);
            $templateforms->set($tab_forms);
            $res .= $templateforms->analyser();
        }
    } else {
        $res = '<div class="alert alert-danger alert-error">' . _t('BAZ_ONLY_REGISTERED_USERS_CAN_ACCESS') . '.</div>' . "\n";
    }
    return $res;
}
/** baz_gestion_formulaire() affiche le listing des formulaires et permet de les modifier
*
*   @return  string    le code HTML
*/
function baz_gestion_formulaire()
{
    $res = '';
    //titre
    if ($GLOBALS['_BAZAR_']['affiche_menu'] == "0") {
        $res .= '<h2 class="titre_gestion_formulaire">' . BAZ_GESTION_FORMULAIRE . '</h2>' . "\n";
    }
    // il y a un formulaire a modifier
    if (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif') {
        //on verifie que la page en question est bien une PageWiki de type formulaire
        if ($GLOBALS['wiki']->GetTripleValue($_GET['idformulaire'], 'http://outils-reseaux.org/_vocabulary/type', '', '') == 'formulaire') {
            $valjson = $GLOBALS['wiki']->LoadPage($_GET['idformulaire']);
            $valeurs_formulaire = json_decode($valjson["body"], true);
            $valeurs_formulaire = array_map("utf8_decode", $valeurs_formulaire);
            $res .= baz_formulaire_des_formulaires('modif_v', $valeurs_formulaire);
        } else {
            return '<div class="error_box">' . BAZ_PAGEWIKI_PAS_FORMULAIRE . '</div>';
        }
        //il y a un nouveau formulaire a saisir
    } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new') {
        $res .= baz_formulaire_des_formulaires('new_v');
        //il y a des donnees pour ajouter un nouveau formulaire
    } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new_v') {
        unset($_POST["valider"]);
        //on genere un NomWiki a partir du titre du formulaire
        $nomwikiformulaire = genere_nom_wiki('Formulaire ' . $_POST["bn_label_nature"]);
        //on encode en utf-8 pour reussir a encoder en json
        $valeurs_formulaire = array_map("utf8_encode", $_POST);
        //on sauve les valeurs du formulaire dans une PageWiki, pour garder l'historique
        $GLOBALS["wiki"]->SavePage($nomwikiformulaire, json_encode($valeurs_formulaire));
        //on cree un triple pour specifier que la PageWiki creee est un formulaire
        $GLOBALS["wiki"]->InsertTriple($nomwikiformulaire, 'http://outils-reseaux.org/_vocabulary/type', 'formulaire', '', '');
        $res .= '<div class="info_box">' . BAZ_NOUVEAU_FORMULAIRE_ENREGISTRE . '</div>' . "\n";
        //il y a des donnees pour modifier un formulaire
    } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif_v' && baz_a_le_droit('saisie_formulaire')) {
        unset($_POST["valider"]);
        //on encode en utf-8 pour reussir a encoder en json
        $valeurs_formulaire = array_map("utf8_encode", $_POST);
        //on sauve les valeurs du formulaire dans une PageWiki, pour garder l'historique
        $GLOBALS["wiki"]->SavePage($_POST['idformulaire'], json_encode($valeurs_formulaire));
        $res .= '<div class="info_box">' . BAZ_FORMULAIRE_MODIFIE . '</div>' . "\n";
        // il y a un id de formulaire a supprimer
    } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'delete' && baz_a_le_droit('saisie_formulaire')) {
        //suppression de la PageWiki du formulaire et de son triple associe
        $GLOBALS["wiki"]->DeleteOrphanedPage($_GET['idformulaire']);
        $GLOBALS["wiki"]->DeleteTriple($_GET['idformulaire'], 'http://outils-reseaux.org/_vocabulary/type', NULL, '', '');
        //suppression des fiches associees au formulaire
        $tab_fiches_a_supprimer = baz_requete_recherche_fiches('', '', $_GET['idformulaire'], '', 1, '', '');
        foreach ($tab_fiches_a_supprimer as $fiche) {
            $valeurs_fiche = json_decode($fiche[0], true);
            baz_suppression($valeurs_fiche['id_fiche']);
        }
        $res .= '<div class="info_box">' . BAZ_FORMULAIRE_ET_FICHES_SUPPRIMES . '</div>' . "\n";
    }
    // affichage de la liste des templates a modifier ou supprimer (on l'affiche dans tous les cas, sauf cas de modif de formulaire)
    if (!isset($_GET['action_formulaire']) || $_GET['action_formulaire'] != 'modif' && $_GET['action_formulaire'] != 'new') {
        $tab_formulaires = baz_valeurs_tous_les_formulaires($GLOBALS['_BAZAR_']['categorie_nature']);
        if (count($tab_formulaires) > 0) {
            $res .= '<div class="info_box">' . BAZ_INTRO_MODIFIER_FORMULAIRE . '</div>' . "\n";
            $liste = '';
            $type_formulaire = '';
            foreach ($tab_formulaires as $type_fiche => $formulaire) {
                $res .= '<h3 class="titre_categorie_fiche">' . $type_fiche . '</h3>' . "\n";
                $res .= '<ul class="BAZ_liste">' . "\n";
                foreach ($formulaire as $nomwiki => $ligne) {
                    $lien_formulaire = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_FORMULAIRE . '&amp;idformulaire=' . $nomwiki);
                    $res .= '<li>' . "\n";
                    if (baz_a_le_droit('saisie_formulaire')) {
                        $res .= '<a class="BAZ_lien_supprimer" href="' . $lien_formulaire . '&amp;action_formulaire=delete" onclick="javascript:return confirm(\'' . BAZ_CONFIRM_SUPPRIMER_FORMULAIRE . ' ?\');"></a>' . "\n";
                    }
                    if (baz_a_le_droit('saisie_formulaire')) {
                        $res .= '<a class="BAZ_lien_modifier" href="' . $lien_formulaire . '&amp;action_formulaire=modif">' . $ligne['bn_label_nature'] . '</a>' . "\n";
                    } else {
                        $res .= $ligne['bn_label_nature'] . "\n";
                    }
                    $res .= '</li>' . "\n";
                }
                $res .= '</ul>' . "\n";
            }
        } else {
            $res .= '<div class="info_box">' . BAZ_PAS_DE_FORMULAIRES_TROUVES . '</div>' . "\n";
        }
        //ajout du lien pour creer un nouveau formulaire
        if (baz_a_le_droit('saisie_formulaire')) {
            $res .= '<a class="BAZ_lien_nouveau" href="' . $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_FORMULAIRE . '&action_formulaire=new') . '">' . BAZ_NOUVEAU_FORMULAIRE . '</a>' . "\n";
        }
    }
    return $res;
}