Voici une petite noisette et une fonction qui répondent à un besoin qui avait déjà été formulé dans les forums de SPIP et sur la liste des utilisateurs. Quel est le besoin ? Avertir un auteur qu’il a reçu un message privé depuis la partie publique d’un site SPIP. Pour y arriver, nous allons avoir besoin de la balise session qui est disponible sous forme de plugin.

Première étape, créez un fichier inc-message.html et collez-y ce code :

#CACHE{0}
[(#SESSION{id_auteur}|avertissement_messagerie_compatible)]

Puis collez ce code dans le fichier mes_fonctions.php afin de définir le filtre avertissement_messagerie_compatible :

<?php

//1
charger_fonction('commencer_page', 'inc');

//2
function avertissement_messagerie_compatible($id_auteur){

        //3
        $GLOBALS[connect_id_auteur] = $id_auteur;

        //4
        return avertissement_messagerie($id_auteur);
}

?>

Ensuite, il suffit d’inclure la noisette inc-message dans les squelettes de son site comme ceci :

<INCLURE{fond=inc-message}>

Le code de la fonction

Description du code de la fonction qui définit le filtre avertissement_messagerie_compatible :

  1. on charge le fichier inc/commencer_page.php à l’aide la fonction charger_fonction (voir la doc de cette fonction sur doc.spip.org)
  2. on définit la fonction du filtre avertissement_messagerie_compatible qui recevra comme paramètre l’id_ateur généré par la balise #SESSION.
  3. on affecte la valeur de la variable id_auteur à la variable globale connect_id_auteur qui sera utilisée dans la fonction avertissement_messagerie
  4. on appelle la fonction avertissement_messagerie en lui passant quand même le paramètre id_auteur pour compatibilité avec la version SVN de SPIP. En effet, la fonction avertissement_messagerie est différente dans cette version de SPIP.

Dans la version 192 on a : avertissement_messagerie()

Et dans la version SVN : avertissement_messagerie($id_auteur)

La fonction avertissement_messagerie_compatible est un filtre intermédiaire qui passe la variable id_auteur à la fonction avertissement_messagerie. Cela permet au filtre de fonctionner avec la version 192 et la version SVN. De plus, le plugin balise session n’est pas nécessaire avec la version SVN car cette balise y est disponible par défaut.

Merci beaucoup à Fil pour toutes ces informations.