[XENFORO] Faire un registre des membres bannis de la shoutbox (#4)

Statut
N'est pas ouverte pour d'autres réponses.

Walky 🇫🇷

Cryptoboy
Ancien staff
Inscription
18 Octobre 2012
Messages
1 278
Réactions
1 188
Points
23 400
RGCoins
45
You must be registered for see images attach


Hi :DJ:

Voici la quatrième partie tutoriel qui va vous apprendre à créer un registre des membres bannis de la Shoutbox.

Première partie
Seconde partie
Troisième partie

Précédemment, dans la troisième partie nous avions fait notre DataWriter ainsi qu'une partie du Model, maintenant nous allons nous concentrer sur la partie Controller, celle qui va nous permettre lors du bannissement, d'ajouter notre utilisateur dans notre table.

On va donc commencer par la création d'un nouveau dossier (et oui encore :p), on va l'appeler : ControllerPublic.
Je vous rappelle que ce dossier doit être créé dans le dossier BannedShoutboxMembers, que nous avons créé dans la première partie.

Une fois ce nouveau dossier créé, nous allons y ajouter un fichier : Shoutbox.php.
Ouvrons le.

Comme d'habitude, on y insère la base :​
PHP:
<?php
Ensuite, on ajoute notre class que l'on étend par la même en y ajoutant XFCP_ devant :​
PHP:
class BannedShoutboxMembers_ControllerPublic_Shoutbox extends XFCP_BannedShoutboxMembers_ControllerPublic_Shoutbox
On étend notre class par la même car l'on va ajouter un Auditeur D'événement dessus ;)
Là on reprend la fonction actionBan() de la Shoutbox que l'on va donc étendre pour y ajouter notre code :​
PHP:
public function actionBan()
{
    $response = parent::actionBan();
     
    if (isset($response->redirectType) && $response->redirectType == XenForo_ControllerResponse_Redirect::SUCCESS)
    {
        $taigamodel = $this->_getTaigaChatModel();
        $messageId = $this->_input->filterSingle('id', XenForo_Input::UINT);
        $message = $taigamodel->getMessageById($messageId);
         
        $dw = XenForo_DataWriter::create('BannedShoutboxMembers_DataWriter_Shoutbox');
        $dw->set('banned_user_id', $message['user_id']);
        $dw->save();
    }
     
    return $response;
}
Une explication s'impose :)
  • $response = On récupère le parent de la class originale pour la fonction actionBan()
  • $taigamodel = Model original de la Shoutbox
  • $messageId = ID du message
  • $message = Récupération du message via son ID
  • $dw = On récupère notre DataWriter
  • $dw->set('..') = On définit la valeur du champ banned_user_id
  • $dw->save() = On sauvegarde la valeur dans notre table sur la BDD
  • return $response = On retourne le parent
Le fichier complet :​
PHP:
<?php

class BannedShoutboxMembers_ControllerPublic_Shoutbox extends XFCP_BannedShoutboxMembers_ControllerPublic_Shoutbox
{
    public function actionBan()
    {
        $response = parent::actionBan();
     
        if (isset($response->redirectType) && $response->redirectType == XenForo_ControllerResponse_Redirect::SUCCESS)
        {
            $taigamodel = $this->_getTaigaChatModel();
            $messageId = $this->_input->filterSingle('id', XenForo_Input::UINT);
           $message = $taigamodel->getMessageById($messageId);
         
            $dw = XenForo_DataWriter::create('BannedShoutboxMembers_DataWriter_Shoutbox');
            $dw->set('banned_user_id', $message['user_id']);
            $dw->save();
        }
     
        return $response;
    }
}

Pour faire fonctionner tous ça, il va maintenant falloir créer notre Auditeur D'événement, c'est très simple ;)
Pour ce faire, créer un fichier nommé : Listener.php dans le dossier BannedShoutboxMembers :
Ouvrons le.

Bon on y insère la base :​
PHP:
<?php
Ensuite, on définit la class :​
PHP:
class BannedShoutboxMembers_Listener
On ajoute notre fonction statique :​
PHP:
public static function loadController($class, array &$extend)
{
    if ($class == "Dark_TaigaChat_ControllerPublic_TaigaChat")
    {
        $extend[] = "BannedShoutboxMembers_ControllerPublic_Shoutbox";
    }
}
Explications :​
  • $class = Nom de la class à étendre
  • $extend = Nom de notre class grâce à laquelle on étend la class donné par $class
Le fichier complet :​
PHP:
<?php

class BannedShoutboxMembers_Listener
{
    public static function loadController($class, array &$extend)
    {
        if ($class == "Dark_TaigaChat_ControllerPublic_TaigaChat")
        {
            $extend[] = "BannedShoutboxMembers_ControllerPublic_Shoutbox";
        }
    }
}
Mais ce n'est pas tout ! Il va falloir créer cet Auditeur dans l'Admin CP !
On accède facilement au formulaire de création d'Auditeurs via ce lien : admin.php?code-event-listeners/add
Remplissez les champs
(les champs sont en anglais pour moi, mais je les fais dans l'ordre) comme ceci :​
  • Listen to Event = load_class_controller
  • Event Hint = Laissez vide
  • Execute callback = BannedShoutboxMembers_Listener::loadController
  • Callback execution order = 10
  • Enable callback execution = Laissez coché
  • Description = Je laisse vide pour ma part
  • Add-on = Membres bannis de la shoutbox
Sauvegardez.

Vous pouvez tester :p Quand vous bannissez quelqu'un il apparaît dans votre table sur la BDD :D
Screenshot :
You must be registered for see images attach


Merci d'avoir suivi cette quatrième partie :neo:
On se retrouve au plus vite pour la cinquième :DJ:

© Good Topic Premium 2015 - Walky GTP
 
You must be registered for see images attach


Hi :DJ:

Voici la quatrième partie tutoriel qui va vous apprendre à créer un registre des membres bannis de la Shoutbox.

Première partie
Seconde partie
Troisième partie

Précédemment, dans la troisième partie nous avions fait notre DataWriter ainsi qu'une partie du Model, maintenant nous allons nous concentrer sur la partie Controller, celle qui va nous permettre lors du bannissement, d'ajouter notre utilisateur dans notre table.

On va donc commencer par la création d'un nouveau dossier (et oui encore :p), on va l'appeler : ControllerPublic.
Je vous rappelle que ce dossier doit être créé dans le dossier BannedShoutboxMembers, que nous avons créé dans la première partie.

Une fois ce nouveau dossier créé, nous allons y ajouter un fichier : Shoutbox.php.
Ouvrons le.

Comme d'habitude, on y insère la base :​
PHP:
<?php
Ensuite, on ajoute notre class que l'on étend par la même en y ajoutant XFCP_ devant :​
PHP:
class BannedShoutboxMembers_ControllerPublic_Shoutbox extends XFCP_BannedShoutboxMembers_ControllerPublic_Shoutbox
On étend notre class par la même car l'on va ajouter un Auditeur D'événement dessus ;)
Là on reprend la fonction actionBan() de la Shoutbox que l'on va donc étendre pour y ajouter notre code :​
PHP:
public function actionBan()
{
    $response = parent::actionBan();
    
    if (isset($response->redirectType) && $response->redirectType == XenForo_ControllerResponse_Redirect::SUCCESS)
    {
        $taigamodel = $this->_getTaigaChatModel();
        $messageId = $this->_input->filterSingle('id', XenForo_Input::UINT);
        $message = $taigamodel->getMessageById($messageId);
        
        $dw = XenForo_DataWriter::create('BannedShoutboxMembers_DataWriter_Shoutbox');
        $dw->set('banned_user_id', $message['user_id']);
        $dw->save();
    }
    
    return $response;
}
Une explication s'impose :)
  • $response = On récupère le parent de la class originale pour la fonction actionBan()
  • $taigamodel = Model original de la Shoutbox
  • $messageId = ID du message
  • $message = Récupération du message via son ID
  • $dw = On récupère notre DataWriter
  • $dw->set('..') = On définit la valeur du champ banned_user_id
  • $dw->save() = On sauvegarde la valeur dans notre table sur la BDD
  • return $response = On retourne le parent
Le fichier complet :​
PHP:
<?php

class BannedShoutboxMembers_ControllerPublic_Shoutbox extends XFCP_BannedShoutboxMembers_ControllerPublic_Shoutbox
{
    public function actionBan()
    {
        $response = parent::actionBan();
    
        if (isset($response->redirectType) && $response->redirectType == XenForo_ControllerResponse_Redirect::SUCCESS)
        {
            $taigamodel = $this->_getTaigaChatModel();
            $messageId = $this->_input->filterSingle('id', XenForo_Input::UINT);
           $message = $taigamodel->getMessageById($messageId);
        
            $dw = XenForo_DataWriter::create('BannedShoutboxMembers_DataWriter_Shoutbox');
            $dw->set('banned_user_id', $message['user_id']);
            $dw->save();
        }
    
        return $response;
    }
}

Pour faire fonctionner tous ça, il va maintenant falloir créer notre Auditeur D'événement, c'est très simple ;)
Pour ce faire, créer un fichier nommé : Listener.php dans le dossier BannedShoutboxMembers :
Ouvrons le.

Bon on y insère la base :​
PHP:
<?php
Ensuite, on définit la class :​
PHP:
class BannedShoutboxMembers_Listener
On ajoute notre fonction statique :​
PHP:
public static function loadController($class, array &$extend)
{
    if ($class == "Dark_TaigaChat_ControllerPublic_TaigaChat")
    {
        $extend[] = "BannedShoutboxMembers_ControllerPublic_Shoutbox";
    }
}
Explications :​
  • $class = Nom de la class à étendre
  • $extend = Nom de notre class grâce à laquelle on étend la class donné par $class
Le fichier complet :​
PHP:
<?php

class BannedShoutboxMembers_Listener
{
    public static function loadController($class, array &$extend)
    {
        if ($class == "Dark_TaigaChat_ControllerPublic_TaigaChat")
        {
            $extend[] = "BannedShoutboxMembers_ControllerPublic_Shoutbox";
        }
    }
}
Mais ce n'est pas tout ! Il va falloir créer cet Auditeur dans l'Admin CP !
On accède facilement au formulaire de création d'Auditeurs via ce lien : admin.php?code-event-listeners/add
Remplissez les champs
(les champs sont en anglais pour moi, mais je les fais dans l'ordre) comme ceci :​
  • Listen to Event = load_class_controller
  • Event Hint = Laissez vide
  • Execute callback = BannedShoutboxMembers_Listener::loadController
  • Callback execution order = 10
  • Enable callback execution = Laissez coché
  • Description = Je laisse vide pour ma part
  • Add-on = Membres bannis de la shoutbox
Sauvegardez.

Vous pouvez tester :p Quand vous bannissez quelqu'un il apparaît dans votre table sur la BDD :D
Screenshot :
You must be registered for see images attach


Merci d'avoir suivi cette quatrième partie :neo:
On se retrouve au plus vite pour la cinquième :DJ:

© Good Topic Premium 2015 - Walky GTP
Compliqué tout ça, merci quand meme :ok:
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut