1 | <?php |
---|
2 | |
---|
3 | /***************************************************************************\ |
---|
4 | * SPIP, Systeme de publication pour l'internet * |
---|
5 | * * |
---|
6 | * Copyright (c) 2001-2014 * |
---|
7 | * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
---|
8 | * * |
---|
9 | * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
---|
10 | * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
---|
11 | \***************************************************************************/ |
---|
12 | |
---|
13 | /** |
---|
14 | * Gestion du formulaire Forum Privé et de sa balise |
---|
15 | * |
---|
16 | * @package SPIP\Forum\Balises |
---|
17 | **/ |
---|
18 | if (!defined("_ECRIRE_INC_VERSION")) { |
---|
19 | return; |
---|
20 | } #securite |
---|
21 | |
---|
22 | include_spip('inc/acces'); |
---|
23 | include_spip('inc/texte'); |
---|
24 | include_spip('inc/forum'); |
---|
25 | |
---|
26 | |
---|
27 | /** |
---|
28 | * Compile la balise `#FORMULAIRE_FORUM_PRIVE` qui affiche un formulaire d'ajout |
---|
29 | * de commentaire pour l'espace privé |
---|
30 | * |
---|
31 | * Signature : `#FORMULAIRE_FORUM_PRIVE{[redirection[, objet, id_objet]]}` |
---|
32 | * |
---|
33 | * Particularité du contexte du formulaire pour permettre une saisie |
---|
34 | * de mots-clés dans les forums : si la variable de personnalisation |
---|
35 | * `$afficher_groupe[]` est définie dans le fichier d'appel, et si la table |
---|
36 | * de référence est OK, la liste des mots-clés est alors proposée. |
---|
37 | * |
---|
38 | * @balise |
---|
39 | * @see balise_FORMULAIRE_FORUM() |
---|
40 | * @example |
---|
41 | * ``` |
---|
42 | * #FORMULAIRE_FORUM_PRIVE seul calcule (objet, id_objet) depuis la boucle parente |
---|
43 | * #FORMULAIRE_FORUM_PRIVE{#SELF} pour forcer l'url de retour |
---|
44 | * #FORMULAIRE_FORUM_PRIVE{#SELF, article, 3} pour forcer l'objet et son identifiant |
---|
45 | * ``` |
---|
46 | * |
---|
47 | * @param Champ $p |
---|
48 | * Pile au niveau de la balise |
---|
49 | * @return Champ |
---|
50 | * Pile complétée par le code à générer |
---|
51 | */ |
---|
52 | function balise_FORMULAIRE_FORUM_PRIVE($p) { |
---|
53 | |
---|
54 | /** |
---|
55 | * On recupere $objet et $id_objet depuis une boucle englobante si possible |
---|
56 | * Sinon, on essaie aussi de recuperer des id_xx dans l'URL qui pourraient indiquer |
---|
57 | * sur quoi le formulaire porte. |
---|
58 | * Enfin, on pourra aussi forcer objet et id_objet depuis l'appel du formulaire |
---|
59 | */ |
---|
60 | $i_boucle = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle; |
---|
61 | if (isset($p->boucles[$i_boucle])) { |
---|
62 | $_id_objet = $p->boucles[$i_boucle]->primary; |
---|
63 | $_type = $p->boucles[$i_boucle]->id_table; |
---|
64 | } else { |
---|
65 | $_id_objet = $_type = ''; |
---|
66 | } |
---|
67 | |
---|
68 | /** |
---|
69 | * On essaye de trouver les forums en fonction de l'environnement |
---|
70 | * pour cela, on recupere l'ensemble des id_xxx possibles dans l'env |
---|
71 | */ |
---|
72 | $ids = forum_get_objets_depuis_env(); |
---|
73 | $ids = array_values($ids); |
---|
74 | |
---|
75 | $obtenir = array( |
---|
76 | $_id_objet, |
---|
77 | 'id_forum', |
---|
78 | 'forcer_previsu', |
---|
79 | 'statut', |
---|
80 | ); |
---|
81 | |
---|
82 | |
---|
83 | if ($ids) { |
---|
84 | $obtenir = array_merge($obtenir, $ids); |
---|
85 | } |
---|
86 | |
---|
87 | $p = calculer_balise_dynamique($p, 'FORMULAIRE_FORUM_PRIVE', $obtenir, |
---|
88 | array("'$_type'", count($ids)) |
---|
89 | ); |
---|
90 | |
---|
91 | return $p; |
---|
92 | } |
---|
93 | |
---|
94 | /** |
---|
95 | * Chercher l'objet/id_objet et la configuration du forum |
---|
96 | * |
---|
97 | * @param array $args |
---|
98 | * @param array $context_compil |
---|
99 | * @return array|bool |
---|
100 | */ |
---|
101 | function balise_FORMULAIRE_FORUM_PRIVE_stat($args, $context_compil) { |
---|
102 | // un arg peut contenir l'url sur lequel faire le retour |
---|
103 | // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM_PRIVE{#SELF})] |
---|
104 | // recuperer les donnees du forum auquel on repond. |
---|
105 | // deux autres a la suite pour forcer objet et id_objet |
---|
106 | // [(#FORMULAIRE_FORUM_PRIVE{#SELF, article, 8})] |
---|
107 | // |
---|
108 | |
---|
109 | // $args = (obtenir) + (ids) + (url, objet, id_objet) |
---|
110 | $ido = array_shift($args); |
---|
111 | $id_forum = intval(array_shift($args)); |
---|
112 | $forcer_previsu = array_shift($args); |
---|
113 | $statut = array_shift($args); |
---|
114 | |
---|
115 | include_spip('balise/formulaire_forum'); |
---|
116 | // si statut privrac ou privadm, pas besoin d'objet ! |
---|
117 | $r = balise_forum_retrouve_objet($ido, $id_forum, $args, $context_compil, |
---|
118 | !in_array($statut, array('privrac', 'privadm'))); |
---|
119 | if (!$r) { |
---|
120 | return false; |
---|
121 | } |
---|
122 | |
---|
123 | list($objet, $id_objet, $retour) = $r; |
---|
124 | |
---|
125 | return |
---|
126 | array($objet, $id_objet, $id_forum, $forcer_previsu, $statut, $retour); |
---|
127 | } |
---|
128 | |
---|
129 | ?> |
---|