[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / balise / formulaire_forum.php
diff --git a/www/ecrire/balise/formulaire_forum.php b/www/ecrire/balise/formulaire_forum.php
new file mode 100644 (file)
index 0000000..cdbd6b0
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2011                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('inc/acces');
+include_spip('inc/texte');
+include_spip('inc/forum');
+
+/*******************************/
+/* GESTION DU FORMULAIRE FORUM */
+/*******************************/
+
+// Contexte du formulaire
+// Mots-cles dans les forums :
+// Si la variable de personnalisation $afficher_groupe[] est definie
+// dans le fichier d'appel, et si la table de reference est OK, proposer
+// la liste des mots-cles
+
+// http://doc.spip.org/@balise_FORMULAIRE_FORUM
+function balise_FORMULAIRE_FORUM ($p) {
+
+       $p = calculer_balise_dynamique($p,'FORMULAIRE_FORUM', array('id_rubrique', 'id_forum', 'id_article', 'id_breve', 'id_syndic', 'ajouter_mot', 'ajouter_groupe', 'afficher_texte'));
+
+       // Ajouter le code d'invalideur specifique aux forums
+       include_spip('inc/invalideur');
+       if (function_exists($i = 'code_invalideur_forums'))
+               $p->code = $i($p, $p->code);
+
+       return $p;
+}
+
+//
+// Chercher le titre et la configuration d'un forum
+// valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement
+// Donner aussi la table de reference pour afficher_groupes[]
+
+// http://doc.spip.org/@balise_FORMULAIRE_FORUM_stat
+function balise_FORMULAIRE_FORUM_stat($args, $context_compil) {
+
+       // le denier arg peut contenir l'url sur lequel faire le retour
+       // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})]
+
+       // recuperer les donnees du forum auquel on repond.
+       list ($idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url) = $args;
+       $idr = intval($idr);
+       $idf = intval($idf);
+       $ida = intval($ida);
+       $idb = intval($idb);
+       $ids = intval($ids);
+
+       $type = substr($GLOBALS['meta']["forums_publics"],0,3);
+
+       if ($ida) {
+               $titre = sql_fetsel('accepter_forum AS type, titre', 'spip_articles', "statut = 'publie' AND id_article = $ida");
+               if ($titre) {
+                       if ($titre['type']) $type = $titre['type'];
+                       $table = "articles";
+               }
+               if ($type == 'non') return false;
+       } else {
+               if ($type == 'non') return false;
+               if ($idb) {
+                       $titre = sql_fetsel('titre', 'spip_breves', "statut = 'publie' AND id_breve = $idb");
+                       $table = "breves";
+               } else if ($ids) {
+                       $titre = sql_fetsel('nom_site AS titre', 'spip_syndic', "statut = 'publie' AND id_syndic = $ids");
+                       $table = "syndic";
+               } else if ($idr) {
+                       $titre = sql_fetsel('titre', 'spip_rubriques', "statut = 'publie' AND id_rubrique = $idr");
+                       $table = "rubriques";
+               }
+       }
+
+       if (!$titre) return false; // inexistant ou non public
+
+       if ($idf>0) {
+               $titre_m = sql_fetsel('titre', 'spip_forum', "id_forum = $idf");
+               if (!$titre_m) return false; // URL fabriquee
+               $titre = $titre_m;
+       }
+
+       if ($GLOBALS['meta']["mots_cles_forums"] != "oui")
+               $table = '';
+
+       $titre = supprimer_numero($titre['titre']);
+
+       // Sur quelle adresse va-t-on "boucler" pour la previsualisation ?
+       // si vide : self()
+       $script = '';
+
+       return
+               array($titre, $table, $type, $script,
+               $idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url);
+}
+
+?>