Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/jobs/plugins-dist/forum/balise/ |
<?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. * \***************************************************************************/ /** * 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]; }