/** baz_gestion_listes() affiche le listing des listes et permet de les modifier * @return string le code HTML */ function baz_gestion_listes() { $res = ''; // affichage de la liste des templates a modifier ou supprimer (dans le cas ou il n'y a pas d'action selectionnee) if (!isset($_GET['action'])) { // il y a des listes à importer if (isset($_POST['imported-list'])) { foreach ($_POST['imported-list'] as $nomwikiliste => $value) { // on sauve les valeurs d'une liste dans une PageWiki, pour garder l'historique $GLOBALS['wiki']->SavePage($nomwikiliste, $value); // on cree un triple pour specifier que la PageWiki creee est une liste $GLOBALS['wiki']->InsertTriple($nomwikiliste, 'http://outils-reseaux.org/_vocabulary/type', 'liste', '', ''); } $res .= '<div class="alert alert-success">' . _t('BAZ_LIST_IMPORT_SUCCESSFULL') . '.</div>' . "\n"; } // requete pour obtenir l'id et le label des types d'annonces $requete = 'SELECT resource FROM ' . $GLOBALS['wiki']->config['table_prefix'] . 'triples ' . 'WHERE property="http://outils-reseaux.org/_vocabulary/type" AND value="liste" ORDER BY resource'; $resultat = $GLOBALS['wiki']->LoadAll($requete); $tab_lists = array('lists' => array()); foreach ($resultat as $ligne) { $valeursliste = baz_valeurs_liste($ligne['resource']); $tab_lists['lists'][$ligne['resource']]['titre_liste'] = $valeursliste['titre_liste']; $tab_lists['lists'][$ligne['resource']]['can_edit'] = $GLOBALS['wiki']->HasAccess('write', $ligne['resource']); $tab_lists['lists'][$ligne['resource']]['can_delete'] = $GLOBALS['wiki']->UserIsAdmin() || $GLOBALS['wiki']->UserIsOwner($ligne['resource']); $elements_liste = ''; foreach ($valeursliste['label'] as $val) { $elements_liste .= '<option>' . $val . '</option>' . "\n"; } if ($elements_liste != '') { $tab_lists['lists'][$ligne['resource']]['values'] = '<select class="form-control input-sm" id="liste_' . $ligne['resource'] . '">' . "\n" . '<option>' . _t('BAZ_CHOISIR') . '</option>' . "\n" . $elements_liste . '</select>' . "\n"; } else { $tab_lists['lists'][$ligne['resource']]['values'] = ''; } } // on rajoute les bibliothèques js nécéssaires $GLOBALS['wiki']->addJavascriptFile('tools/bazar/libs/bazar.edit_lists.js'); // On cherche un template personnalise dans le repertoire themes/tools/bazar/templates $templatetoload = 'themes/tools/bazar/templates/lists_table.tpl.html'; if (!is_file($templatetoload)) { $templatetoload = 'tools/bazar/presentation/templates/lists_table.tpl.html'; } include_once 'tools/bazar/libs/squelettephp.class.php'; $templatelists = new SquelettePhp($templatetoload); $templatelists->set($tab_lists); $res .= $templatelists->analyser(); } elseif ($_GET['action'] == BAZ_ACTION_MODIFIER_LISTE) { // il y a une liste a modifier, recuperation des informations $valeursliste = baz_valeurs_liste($_GET['idliste']); $res .= baz_formulaire_des_listes(BAZ_ACTION_MODIFIER_LISTE_V, $valeursliste); } elseif ($_GET['action'] == BAZ_ACTION_NOUVELLE_LISTE) { //il y a une nouvelle liste a saisir $res .= baz_formulaire_des_listes(BAZ_ACTION_NOUVELLE_LISTE_V); } elseif ($_GET['action'] == BAZ_ACTION_NOUVELLE_LISTE_V) { //il y a des donnees pour ajouter une nouvelle liste unset($_POST['valider']); $nomwikiliste = genere_nom_wiki('Liste ' . $_POST['titre_liste']); //on supprime les valeurs vides et on encode en utf-8 pour reussir a encoder en json $i = 1; $valeur['label'] = array(); foreach ($_POST['label'] as $label) { if (($label != null || $label != '') && ($_POST['id'][$i] != null || $_POST['id'][$i] != '')) { $valeur['label'][$_POST['id'][$i]] = $label; $i++; } } if (TEMPLATES_DEFAULT_CHARSET != 'UTF-8') { $valeur['label'] = array_map('utf8_encode', $valeur['label']); $valeur['titre_liste'] = utf8_encode($_POST['titre_liste']); } else { $valeur['titre_liste'] = $_POST['titre_liste']; } //on sauve les valeurs d'une liste dans une PageWiki, pour garder l'historique $GLOBALS['wiki']->SavePage($nomwikiliste, json_encode($valeur)); //on cree un triple pour specifier que la PageWiki creee est une liste $GLOBALS['wiki']->InsertTriple($nomwikiliste, 'http://outils-reseaux.org/_vocabulary/type', 'liste', '', ''); //on redirige vers la page contenant toutes les listes, et on confirme par message la bonne saisie de la liste $GLOBALS['wiki']->SetMessage(_t('BAZ_NOUVELLE_LISTE_ENREGISTREE')); $GLOBALS['wiki']->Redirect($GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES, false)); } elseif ($_GET['action'] == BAZ_ACTION_MODIFIER_LISTE_V && $GLOBALS['wiki']->HasAccess('write', $_POST['NomWiki'])) { //il y a des donnees pour modifier une liste unset($_POST['valider']); //on supprime les valeurs vides et on encode en utf-8 pour reussir a encoder en json $i = 1; $valeur['label'] = array(); foreach ($_POST['label'] as $label) { if (($label != null || $label != '') && ($_POST['id'][$i] != null || $_POST['id'][$i] != '')) { $valeur['label'][$_POST['id'][$i]] = $label; $i++; } } if (TEMPLATES_DEFAULT_CHARSET != 'UTF-8') { $valeur['label'] = array_map('utf8_encode', $valeur['label']); $valeur['titre_liste'] = utf8_encode($_POST['titre_liste']); } else { $valeur['titre_liste'] = $_POST['titre_liste']; } /* ----------------- TODO: suppressions de valeurs dans les fiches pour l'integrite des donnees //on verifie si les valeurs des listes ont changees afin de garder de l'integrite de la base des fiches foreach ($_POST["ancienlabel"] as $key => $value) { //si la valeur de la liste a ete changee, on repercute les changements pour les fiches contenant cette valeur if ( isset($_POST["label"][$key]) && $value != $_POST["label"][$key] ) { //TODO: fonction baz_modifier_metas_liste($_POST['NomWiki'], $value, $_POST['label'][$key]); } } //on supprime les valeurs des listes supprimees des fiches possedants ces valeurs foreach ($_POST["a_effacer_ancienlabel"] as $key => $value) { //TODO: fonction baz_effacer_metas_liste($_POST['NomWiki'], $value); } --------------------- */ //on sauve les valeurs d'une liste dans une PageWiki, pour garder l'historique $GLOBALS['wiki']->SavePage($_POST['NomWiki'], json_encode($valeur)); //on redirige vers la page contenant toutes les listes, et on confirme par message la modification de la liste $GLOBALS['wiki']->SetMessage(_t('BAZ_LISTE_MODIFIEE')); $GLOBALS['wiki']->Redirect($GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES, false)); } elseif ($_GET['action'] == BAZ_ACTION_SUPPRIMER_LISTE && isset($_GET['idliste']) && $_GET['idliste'] != '' && ($GLOBALS['wiki']->UserIsAdmin() || $GLOBALS['wiki']->UserIsOwner($_GET['idliste']))) { // il y a un id de liste a supprimer $GLOBALS['wiki']->DeleteOrphanedPage($_GET['idliste']); $sql = 'DELETE FROM ' . $GLOBALS['wiki']->config['table_prefix'] . 'triples ' . 'WHERE resource = "' . htmlspecialchars($_GET['idliste'], ENT_COMPAT | ENT_HTML401, TEMPLATES_DEFAULT_CHARSET) . '" '; $GLOBALS['wiki']->Query($sql); // Envoie d un mail aux administrateurs if (BAZ_ENVOI_MAIL_ADMIN) { include_once 'tools/contact/libs/contact.functions.php'; $lien = str_replace('/wakka.php?wiki=', '', $GLOBALS['wiki']->config['base_url']); $sujet = remove_accents('[' . str_replace('http://', '', $lien) . '] liste supprimee : ' . $_GET['idliste']); $text = 'IP utilisee : ' . $_SERVER['REMOTE_ADDR'] . ' (' . $GLOBALS['wiki']->GetUserName() . ')'; $texthtml = $text; $fichier = 'tools/bazar/presentation/styles/bazar.css'; $style = file_get_contents($fichier); $style = str_replace('url(', 'url(' . $lien . '/tools/bazar/presentation/', $style); $html = '<html><head><style type="text/css">' . $style . '</style></head><body>' . $texthtml . '</body></html>'; //on va chercher les admins $requeteadmins = 'SELECT value FROM ' . $GLOBALS['wiki']->config['table_prefix'] . 'triples WHERE resource="ThisWikiGroup:admins" AND property="http://www.wikini.net/_vocabulary/acls" LIMIT 1'; $ligne = $GLOBALS['wiki']->LoadSingle($requeteadmins); $tabadmin = explode("\n", $ligne['value']); foreach ($tabadmin as $line) { $admin = $GLOBALS['wiki']->LoadUser(trim($line)); send_mail(BAZ_ADRESSE_MAIL_ADMIN, BAZ_ADRESSE_MAIL_ADMIN, $admin['email'], $sujet, $text, $html); } } //on redirige vers la page contenant toutes les listes, avec un message de confirmation $GLOBALS['wiki']->SetMessage(_t('BAZ_LISTES_SUPPRIMEES')); $GLOBALS['wiki']->Redirect($GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES, false)); } return $res; }
/** baz_gestion_listes() affiche le listing des listes et permet de les modifier * * @return string le code HTML */ function baz_gestion_listes() { $res = ''; //titre if ($GLOBALS['_BAZAR_']['affiche_menu'] == "0") { $res .= '<h2 class="titre_gestion_liste">' . BAZ_GESTION_LISTES . '</h2>' . "\n"; } // affichage de la liste des templates a modifier ou supprimer (dans le cas ou il n'y a pas d'action selectionnee) if (!isset($_GET['action'])) { //requete pour obtenir l'id et le label des types d'annonces $requete = 'SELECT resource FROM ' . $GLOBALS['wiki']->config['table_prefix'] . 'triples WHERE property="http://outils-reseaux.org/_vocabulary/type" AND value="liste" ORDER BY resource'; $resultat = $GLOBALS['wiki']->LoadAll($requete); $liste = array(); foreach ($resultat as $ligne) { $valeursliste = baz_valeurs_liste($ligne['resource']); $liste[$valeursliste['titre_liste']] = '<li>'; if (baz_a_le_droit('saisie_liste')) { $liste[$valeursliste['titre_liste']] .= '<a class="BAZ_lien_supprimer" href="' . $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES . '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_SUPPRIMER_LISTE . '&idliste=' . $ligne['resource']) . '" onclick="javascript:return confirm(\'' . BAZ_CONFIRM_SUPPRIMER_LISTE . ' ?\');"></a>' . "\n"; } $elements_liste = ''; foreach ($valeursliste['label'] as $val) { $elements_liste .= '<option>' . $val . '</option>'; } if ($elements_liste != '') { $affichage_liste = ' - ' . BAZ_VALEURS_LISTE . ' : <select id="liste_' . $ligne['resource'] . '">' . "\n" . '<option>' . BAZ_CHOISIR . '</option>' . "\n" . $elements_liste . "\n" . '</select>' . "\n"; } else { $affichage_liste = ''; } if (baz_a_le_droit('saisie_liste')) { $liste[$valeursliste['titre_liste']] .= '<a class="BAZ_lien_modifier" href="' . $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES . '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_MODIFIER_LISTE . '&idliste=' . $ligne['resource']) . '">' . $valeursliste['titre_liste'] . '</a>' . $affichage_liste . "\n"; } else { $liste[$valeursliste['titre_liste']] .= $valeursliste['titre_liste'] . $affichage_liste . "\n"; } $liste[$valeursliste['titre_liste']] .= '</li>' . "\n"; } if (count($liste > 0)) { ksort($liste); $res .= '<div class="info_box">' . BAZ_INTRO_MODIFIER_LISTE . '</div>' . "\n"; $res .= '<ul class="BAZ_liste">' . "\n"; foreach ($liste as $listederoulante) { $res .= $listederoulante; } $res .= '</ul>' . "\n"; } else { $res .= '<div class="info_box">' . BAZ_PAS_DE_LISTES . '</div>' . "\n"; } //ajout du lien pour creer un nouveau formulaire if (baz_a_le_droit('saisie_liste')) { $lien_formulaire = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES . '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_NOUVELLE_LISTE); $res .= '<a class="BAZ_lien_nouveau" href="' . $lien_formulaire . '">' . BAZ_NOUVELLE_LISTE . '</a>' . "\n"; } } elseif ($_GET['action'] == BAZ_ACTION_MODIFIER_LISTE) { //recuperation des informations de la liste $valeursliste = baz_valeurs_liste($_GET['idliste']); $res .= baz_formulaire_des_listes(BAZ_ACTION_MODIFIER_LISTE_V, $valeursliste); } elseif ($_GET['action'] == BAZ_ACTION_NOUVELLE_LISTE) { $res .= baz_formulaire_des_listes(BAZ_ACTION_NOUVELLE_LISTE_V); } elseif ($_GET['action'] == BAZ_ACTION_NOUVELLE_LISTE_V) { unset($_POST["valider"]); $nomwikiliste = genere_nom_wiki('Liste ' . $_POST['titre_liste']); //on supprime les valeurs vides et on encode en utf-8 pour reussir a encoder en json $i = 1; $valeur["label"] = array(); foreach ($_POST["label"] as $label) { if (($label != NULL || $label != '') && ($_POST["id"][$i] != NULL || $_POST["id"][$i] != '')) { $valeur["label"][$_POST["id"][$i]] = $label; $i++; } } $valeur["label"] = array_map("utf8_encode", $valeur["label"]); $valeur["titre_liste"] = utf8_encode($_POST["titre_liste"]); //on sauve les valeurs d'une liste dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($nomwikiliste, json_encode($valeur)); //on cree un triple pour specifier que la PageWiki creee est une liste $GLOBALS["wiki"]->InsertTriple($nomwikiliste, 'http://outils-reseaux.org/_vocabulary/type', 'liste', '', ''); //on redirige vers la page contenant toutes les listes, et on confirme par message la bonne saisie de la liste $GLOBALS["wiki"]->SetMessage(BAZ_NOUVELLE_LISTE_ENREGISTREE); $GLOBALS["wiki"]->Redirect($GLOBALS["wiki"]->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES, false)); } elseif ($_GET['action'] == BAZ_ACTION_MODIFIER_LISTE_V && baz_a_le_droit(BAZ_ACTION_MODIFIER_LISTE_V)) { unset($_POST["valider"]); //on supprime les valeurs vides et on encode en utf-8 pour reussir a encoder en json $i = 1; $valeur["label"] = array(); foreach ($_POST["label"] as $label) { if (($label != NULL || $label != '') && ($_POST["id"][$i] != NULL || $_POST["id"][$i] != '')) { $valeur["label"][$_POST["id"][$i]] = $label; $i++; } } $valeur["label"] = array_map("utf8_encode", $valeur["label"]); $valeur["titre_liste"] = utf8_encode($_POST["titre_liste"]); /* ----------------- TODO: gerer les suppressions de valeurs dans les fiches associees pour garantir l'integrite des donnees //on verifie si les valeurs des listes ont changees afin de garder de l'integrite de la base des fiches foreach ($_POST["ancienlabel"] as $key => $value) { //si la valeur de la liste a ete changee, on repercute les changements pour les fiches contenant cette valeur if ( isset($_POST["label"][$key]) && $value != $_POST["label"][$key] ) { //TODO: fonction baz_modifier_metas_liste($_POST['NomWiki'], $value, $_POST['label'][$key]); } } //on supprime les valeurs des listes supprimees des fiches possedants ces valeurs foreach ($_POST["a_effacer_ancienlabel"] as $key => $value) { //TODO: fonction baz_effacer_metas_liste($_POST['NomWiki'], $value); } --------------------- */ //on sauve les valeurs d'une liste dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($_POST['NomWiki'], json_encode($valeur)); //on redirige vers la page contenant toutes les listes, et on confirme par message la bonne modification de la liste $GLOBALS["wiki"]->SetMessage(BAZ_LISTE_MODIFIEE); $GLOBALS["wiki"]->Redirect($GLOBALS["wiki"]->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES, false)); } elseif ($_GET['action'] == BAZ_ACTION_SUPPRIMER_LISTE && baz_a_le_droit(BAZ_ACTION_SUPPRIMER_LISTE)) { $GLOBALS["wiki"]->DeleteOrphanedPage($_GET['idliste']); $sql = 'DELETE FROM ' . $GLOBALS['wiki']->config["table_prefix"] . 'triples ' . 'WHERE resource = "' . addslashes($_GET['idliste']) . '" '; $GLOBALS["wiki"]->Query($sql); //on redirige vers la page contenant toutes les listes, et on confirme par message la bonne suppression de la liste $GLOBALS["wiki"]->SetMessage(BAZ_LISTES_SUPPRIMEES); $GLOBALS["wiki"]->Redirect($GLOBALS["wiki"]->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_LISTES, false)); } return $res; }