Extension sur le tirage de dés

Aide aux auteurs d'extensions pour phpBB

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Répondre
Troumad
Posteur néophyte
Posteur néophyte
Messages : 16
Enregistré le : 18 janv. 2026 à 09:21

Extension sur le tirage de dés

Message par Troumad »

Bonjour

J'ai essayé, mais je me suis cassé les dents !
Je m'y connais en programmation, mais l'anglais m'est plutôt indigeste. C'est un gros problème pour la programmation !

remarque : si on me propose un code qui marche pour phpbb 3.3.15, je suis preneur et je ne tente pas la programmation !

J'ai essayé de faire une extension de tirage de dés. Le Listener.php est bien appelé car un die() à l'emplacement 1 interrompt tout. Mais, le die() présent au début de la fonction appelée n'est jamais appliqué.

Voici le code, qui peut m'aider ?

Code : Tout sélectionner

Listener.php 
<?php
namespace troumad\des\event;

use phpbb\event\data;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class Listener implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
       /* emplacement 1*/
        return [
            //'core.modify_text_for_display' => 'process_dice_rolls',
        // Le texte est encore brut (BB‑code). On le transforme avant l’enregistrement.
        'core.submit_post_before' => 'process_dice_rolls',
        // On empêche l’édition ultérieure.
        'core.modify_edit_post_auth' => 'protect_dice_posts',
        ];
    }

    /** @param data $event */
    public function process_dice_rolls(data $event)
    {
        die("oui");
    $message = $event['data']['message'];   // <-- clé correcte pour le texte du post
Zoddo
Equipe site
Equipe site
Messages : 7129
Enregistré le : 16 mars 2011 à 17:44
Localisation : Laval, France
Contact :

Extension sur le tirage de dés

Message par Zoddo »

Bonjour et Bienvenue sur phpBB-fr.com ! :)
Troumad a écrit : 18 janv. 2026 à 19:02 Mais, le die() présent au début de la fonction appelée n'est jamais appliqué.
C'est normal, l'événement core.submit_post_before n'existe tout simplement pas dans phpBB.

Tu peux trouver la liste des évènements ici : https://area51.phpbb.com/docs/dev/3.3.x ... _list.html
Ou si tu regardes le code de phpBB, ce sont les lignes qui ressemble à ça (précédés d'un gros bloc de commentaire qui décrit l'événement) :

Code : Tout sélectionner

extract($phpbb_dispatcher->trigger_event('core.example_event', compact($vars)));
Personnellement, je fonctionne plutôt en regardant le code de phpBB, puis une fois que j'ai trouvé à quel endroit je dois intervenir, je cherche les évènements les plus proches.

Dans ton cas, si tu veux analyser les messages avant que les BBCodes soient parsés, tu veux probablement utiliser l'événement core.posting_modify_post_data ou core.posting_modify_message_text.

Idem, tu utilises l'événement core.modify_edit_post_auth qui n'existe pas. Tu souhaites probablement utiliser core.posting_modify_cannot_edit_conditions si tu veux empêcher la modification d'un message posté.

Tous les évènements que j'ai listé sont définis dans posting.php, si tu veux voir comment ils s'intègrent dans le code de phpBB.
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Avatar du membre
sylver35
Extensions
Extensions
Messages : 8409
Enregistré le : 26 févr. 2008 à 14:58
Localisation : West coast BZH
Contact :

Extension sur le tirage de dés

Message par sylver35 »

Bonjour,

L'event correct au moment de la soumission d'un message est core.submit_post_end

Code : Tout sélectionner

public function process_dice_rolls(data $event)
Enlève la partie data qui n'a rien à faire là...
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
Zoddo
Equipe site
Equipe site
Messages : 7129
Enregistré le : 16 mars 2011 à 17:44
Localisation : Laval, France
Contact :

Extension sur le tirage de dés

Message par Zoddo »

sylver35 a écrit : 19 janv. 2026 à 08:58 L'event correct au moment de la soumission d'un message est core.submit_post_end
Le message est déjà enregistré dans la BDD au moment de cet événement. Si le but est de modifier le message avant enregistrement, c'est trop tard ;)
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Troumad
Posteur néophyte
Posteur néophyte
Messages : 16
Enregistré le : 18 janv. 2026 à 09:21

Extension sur le tirage de dés

Message par Troumad »

Bonne remarque de Zoddo
Que je n'aurais pas trouvé par moi-même !

Je cherche à installer phpbb avec nginx sur mon PC sous mageia alors que pour mageia, tout semble prévu pour apache !
J'avais planté le hpbb en faisant mes tests :(
Troumad
Posteur néophyte
Posteur néophyte
Messages : 16
Enregistré le : 18 janv. 2026 à 09:21

Extension sur le tirage de dés

Message par Troumad »

J'ai un problème avec token_get_all() de façon générale... J'ai pu configurer mon forum, mais, je ne peux rentrer dans un fil de message, ni en poster un nouveau. J'ai pourtant tokeniser installé d'après phpinfo.

Mon installation n'est donc pas géniale ! Il va falloir que je travaille encire php/nginx :(
Modifié en dernier par Troumad le 21 janv. 2026 à 18:20, modifié 5 fois.
Troumad
Posteur néophyte
Posteur néophyte
Messages : 16
Enregistré le : 18 janv. 2026 à 09:21

Extension sur le tirage de dés

Message par Troumad »

Bonjour

Je suis arrivé à faire mon tirage de dés : https://troumad.org/OOo/tirage.zip : vous pouvez en faire ce que vous voulez. Je suis preneur de toute amélioration.

Je copie le début de Listener.php pour expliquer rapidement comment elle marche :

Code : Tout sélectionner

/***************************
 * licence GPL v3
 *  Entre les balises [des] et [/des]
 * voici les éléments qui peuvent additionnés ou soustraits :
 * {nombre de dés}d{nombre de faces}
 * {nombre de dés}d{nombre de faces}m{nombre de dés de malus}
 * {nombre de dés}d{nombre de faces}b{nombre de dés de bonus}
 * {bonus ou malus final}
 * exemple :
 * [des]3d6-2d6b1+3d10m2+13[/des]
 * ceci donne : 3d6 : la somme de 3 dés 6
 * moins 2d6b1 la somme des 2 meilleurs dés 6 sur un tirage de 3=2+1 dé
 * plus 3d10m2 la somme 3 plus mauvais dés 10 sur un tirage de 5=(3+2) dés
 * plus +13
 * ***************************/
Il y a une protection minime : on ne peux effacer un jet effectué. Par contre, on peut générer un affichage comme un vrai jet de dé. Je n'ai pas d'idée faisable pour certifier que c'est un vrai jet. 
 
Ajouté 14 heures 4 minutes 50 secondes après :
 
 Bonjour

je cherche encore, je voudrais un événement qui me permette de modifier l'affichage du message tout en conservant ce qui devrait être afficher : une balise qui n'apparait pas par exemple.

Je regarde ici :
Zoddo a écrit : 18 janv. 2026 à 23:31Tu peux trouver la liste des évènements ici : https://area51.phpbb.com/docs/dev/3.3.x ... _list.html
Il faudrait un mode d'emploi à cette page : quels sont les paramètres disponibles dans $event, quels sont leurs champ et ils servent à quoi ?
Zoddo a écrit : 18 janv. 2026 à 23:31Tous les évènements que j'ai listé sont définis dans posting.php, si tu veux voir comment ils s'intègrent dans le code de phpBB.
C'est quoi le posting.php ?
Modifié en dernier par Zoddo le 24 janv. 2026 à 19:27, modifié 1 fois.
Raison : Utilisation de la balise [code] pour améliorer la mise en forme du message
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1691
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Extension sur le tirage de dés

Message par pierredu »

Bonjour,

Le contenu de chaque $event diffère. Il faut regarder ce qu'il y a dans la troisième colonne de la page d'aide et faire des essais avec un var_dump bien placé.
Zoddo
Equipe site
Equipe site
Messages : 7129
Enregistré le : 16 mars 2011 à 17:44
Localisation : Laval, France
Contact :

Extension sur le tirage de dés

Message par Zoddo »

Troumad a écrit : 24 janv. 2026 à 08:17 C'est quoi le posting.php ?
Le fichier posting.php de phpBB (à la racine du forum).
Tu peux aussi le visualiser sur GitHub ici : https://github.com/phpbb/phpbb/blob/rel ... osting.php
Troumad a écrit : 24 janv. 2026 à 08:17 je cherche encore, je voudrais un événement qui me permette de modifier l'affichage du message tout en conservant ce qui devrait être afficher : une balise qui n'apparait pas par exemple.
Il y a plusieurs événements possibles suivant ce que tu souhaites faire.
Par exemple core.viewtopic_modify_post_row qui expose une variable post_row contenant toutes les données prêtes à être envoyées au template pour affichage.
post_row est un array défini dans viewtopic.php juste ici, il contient notamment la valeur MESSAGE qui est le code HTML du message prêt à être affiché.
Troumad a écrit : 24 janv. 2026 à 08:17 Je regarde ici :
Zoddo a écrit : 18 janv. 2026 à 23:31Tu peux trouver la liste des évènements ici : https://area51.phpbb.com/docs/dev/3.3.x ... _list.html
Il faudrait un mode d'emploi à cette page : quels sont les paramètres disponibles dans $event, quels sont leurs champ et ils servent à quoi ?
Effectivement, la page est bien pour identifier rapidement une liste d'évènements possibles, mais la documentation des paramètres n'y apparait pas, ça pourrait être amélioré. Tu peux regarder dans le code source de phpBB, la description de chaque paramètre y est indiqué.
Par exemple, pour core.viewtopic_modify_post_row dont je parlais juste au-dessus : https://github.com/phpbb/phpbb/blob/rel ... 2117-L2139

Code : Tout sélectionner

/**
 * Modify the posts template block
 *
 * @event core.viewtopic_modify_post_row
 * @var    int      start                Start item of this page
 * @var    int      current_row_number   Number of the post on this page
 * @var    int      end                  Number of posts on this page
 * @var    int      total_posts          Total posts count
 * @var    int      poster_id            Post author id
 * @var    array    row                  Array with original post and user data
 * @var    array    cp_row               Custom profile field data of the poster
 * @var    array    attachments          List of attachments
 * @var    array    user_poster_data     Poster's data from user cache
 * @var    array    post_row             Template block array of the post
 * @var    array    topic_data           Array with topic data
 * @var    array    user_cache           Array with cached user data
 * @var    array    post_edit_list       Array with post edited list
 * @since 3.1.0-a1
 * @changed 3.1.0-a3 Added vars start, current_row_number, end, attachments
 * @changed 3.1.0-b3 Added topic_data array, total_posts
 * @changed 3.1.0-RC3 Added poster_id
 * @changed 3.2.2-RC1 Added user_cache and post_edit_list
 */
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Troumad
Posteur néophyte
Posteur néophyte
Messages : 16
Enregistré le : 18 janv. 2026 à 09:21

Extension sur le tirage de dés

Message par Troumad »

Merci

Il me semble que 'core.modify_text_for_display_before' pourrait faire l'affaire pour modifier l'affichage. je travaille dessus.
'core.viewtopic_modify_post_row' arrive à supprimer les boutons "effacer" et "modifier". Peut-être que le premier pourra faire les deux. Je teste petit à petit, c'est donc pour plus tard. 
 
Ajouté 10 heures 3 minutes 8 secondes après :
 
 https://troumad.org/OOo/tirage.zip semble faire ce que je souhaite.
Vous êtes libre de tester et de le partager.

J'ai mis une licence GPL V3. C'est donné dans l'entête du fichier Listener.
J'utilise la [des] et la balise [com_des], mais, cette dernière est invisible aux utilisateur du forum. 
Répondre

Retourner vers « Aide au développement »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité