[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / forum / balise / formulaire_forum_prive.php
diff --git a/www/plugins-dist/forum/balise/formulaire_forum_prive.php b/www/plugins-dist/forum/balise/formulaire_forum_prive.php
new file mode 100644 (file)
index 0000000..e88c6ca
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2014                                                *
+ *  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;   #securite
+
+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
+ * #FORMULAIRE_FORUM_PRIVE seul calcule (objet, id_objet) depuis la boucle parente
+ * #FORMULAIRE_FORUM_PRIVE{#SELF} pour forcer l'url de retour
+ * #FORMULAIRE_FORUM_PRIVE{#SELF, article, 3} pour forcer l'objet et son identifiant
+ * http://doc.spip.org/@balise_FORMULAIRE_FORUM_PRIVE
+ *
+ * @param Object $p
+ * @return Object
+ */
+function balise_FORMULAIRE_FORUM_PRIVE ($p) {
+
+       /**
+        * On recupere $objet et $id_objet depuis une boucle englobante si possible
+        * Sinon, on essaie aussi de recuperer des id_xx dans l'URL qui pourraient indiquer
+        * sur quoi le formulaire porte.
+        * Enfin, on pourra aussi forcer objet et id_objet depuis l'appel du formulaire
+        */
+       $i_boucle  = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle;
+       if (isset($p->boucles[$i_boucle])) {
+               $_id_objet = $p->boucles[$i_boucle]->primary;
+               $_type     = $p->boucles[$i_boucle]->id_table;
+       } else {
+               $_id_objet = $_type = '';
+       }
+
+       /**
+        * On essaye de trouver les forums en fonction de l'environnement
+        * pour cela, on recupere l'ensemble des id_xxx possibles dans l'env
+        */
+       $ids = forum_get_objets_depuis_env();
+       $ids = array_values($ids);
+
+       $obtenir = array(
+               $_id_objet,
+               'id_forum',
+               'afficher_texte',
+               'statut',
+       );
+
+
+       if ($ids) {
+               $obtenir = array_merge($obtenir, $ids);
+       }
+
+       $p = calculer_balise_dynamique($p,'FORMULAIRE_FORUM_PRIVE', $obtenir,
+               array("'$_type'", count($ids))
+       );
+
+       return $p;
+}
+
+/**
+ * Chercher l'objet/id_objet et la configuration du forum
+ *
+ * http://doc.spip.org/@balise_FORMULAIRE_FORUM_PRIVE_stat
+ *
+ * @param array $args
+ * @param array $context_compil
+ * @return array|bool
+ */
+function balise_FORMULAIRE_FORUM_PRIVE_stat($args, $context_compil) {
+       // un arg peut contenir l'url sur lequel faire le retour
+       // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM_PRIVE{#SELF})]
+       // recuperer les donnees du forum auquel on repond.
+       // deux autres a la suite pour forcer objet et id_objet
+       // [(#FORMULAIRE_FORUM_PRIVE{#SELF, article, 8})]
+       //
+
+       // $args = (obtenir) + (ids) + (url, objet, id_objet)
+       $ido = array_shift($args);
+       $id_forum = intval(array_shift($args));
+       $afficher_texte = array_shift($args);
+       $statut = array_shift($args);
+
+       include_spip('balise/formulaire_forum');
+       // si statut privrac ou privadm, pas besoin d'objet !
+       $r = balise_forum_retrouve_objet($ido,$id_forum,$args,$context_compil,!in_array($statut,array('privrac','privadm')));
+       if (!$r)
+               return false;
+
+       list($objet, $id_objet, $retour) = $r;
+
+       return
+               array($objet, $id_objet, $id_forum, $afficher_texte, $statut, $retour);
+}
+
+?>