File "formulaire_forum_prive.php"
Full path: /home/argothem/www/v4_old/plugins-dist/forum/balise/formulaire_forum_prive.php
File size: 3.92 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Gestion du formulaire Forum Privé et de sa balise
*
* @package SPIP\Forum\Balises
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
} #securite
include_spip('inc/acces');
include_spip('inc/texte');
include_spip('inc/forum');
/**
* Compile la balise `#FORMULAIRE_FORUM_PRIVE` qui affiche un formulaire d'ajout
* de commentaire pour l'espace privé
*
* Signature : `#FORMULAIRE_FORUM_PRIVE{[redirection[, objet, id_objet]]}`
*
* Particularité du contexte du formulaire pour permettre une saisie
* de mots-clés dans les forums : si la variable de personnalisation
* `$afficher_groupe[]` est définie dans le fichier d'appel, et si la table
* de référence est OK, la liste des mots-clés est alors proposée.
*
* @balise
* @see balise_FORMULAIRE_FORUM()
* @example
* ```
* #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
* ```
*
* @param Champ $p
* Pile au niveau de la balise
* @return Champ
* Pile complétée par le code à générer
*/
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->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 = [
$_id_objet,
'id_forum',
'forcer_previsu',
'statut',
];
if ($ids) {
$obtenir = array_merge($obtenir, $ids);
}
$p = calculer_balise_dynamique(
$p,
'FORMULAIRE_FORUM_PRIVE',
$obtenir,
["'$_type'", count($ids)]
);
return $p;
}
/**
* Chercher l'objet/id_objet et la configuration du forum
*
* @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));
$forcer_previsu = 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, ['privrac', 'privadm'])
);
if (!$r) {
return false;
}
[$objet, $id_objet, $retour] = $r;
return
[$objet, $id_objet, $id_forum, $forcer_previsu, $statut, $retour];
}