You must be registered for see images attach
Hey

Voici la troisième partie tutoriel qui va vous apprendre à créer un registre des membres bannis de la Shoutbox.
Première partie
Seconde partie
Dans la seconde partie, nous avions créer notre fichier d'Installation, maintenant nous allons nous occuper de la fonction va nous permettre d'ajouter un membre banni dans la table que nous avons déjà créée.
Tout d'abord, il va nous falloir créer un nouveau dossier que nous allons nommé DataWriter.
Je vous rappelle que ce dossier doit être créé dans le dossier BannedShoutboxMembers, que nous avons créé dans la première partie.
Et dans ce dossier (DataWriter), nous allons créé un fichier PHP nommé Shoutbox.php
Ouvrons le.
On va donc y insérer la base :
PHP:
<?php
Pour ensuite y ajouter notre class que l'on va étendre :
PHP:
class BannedShoutboxMembers_DataWriter_Shoutbox extends XenForo_DataWriter
On étend notre class par une class "mère" de XenForo pour pouvoir utiliser ses fonctions et les attribués à notre addon.
On va maintenant définir une protected function qui va récupérer les champs de notre table :
On va maintenant définir une protected function qui va récupérer les champs de notre table :
PHP:
protected function _getFields()
{
$visitor = XenForo_Visitor::getInstance();
return array(
'banned_shoutbox_members' => array(
'ban_id' => array('type' => self::TYPE_UINT, 'autoIncrement' => true),
'banned_user_id' => array('type' => self::TYPE_UINT, 'required' => true),
'ban_user_id' => array('type' => self::TYPE_UINT, 'required' => true, 'default' => $visitor['user_id']),
'ban_date' => array('type' => self::TYPE_UINT, 'required' => true, 'default' => XenForo_Application::$time)
)
);
}
Je ne pense pas avoir besoin d'expliquer, il suffit d'être assez bon en anglais pour comprendre (autoIncrement, default, required)
- $visitor = On récupère les données du membre connecté.
- banned_shoutbox_members = Nom de notre table dans la BDD.
- ban_id | banned_user_id | ban_user_id | ban_date = Tous les champs de notre table.
- XenForo_Application::$time = Horaire actuel en Unix TimeStamp.
Et on va ensuite y ajouter 3 nouvelles fonctions :
PHP:
protected function _getExistingData($data)
{
if (!$id = $this->_getExistingPrimaryKey($data, 'ban_id'))
{
return false;
}
return array('banned_shoutbox_members' => $this->_getShoutboxBanModel()->getBanById($id));
}
protected function _getUpdateCondition($tableName)
{
return 'ban_id = ' . $this->_db->quote($this->getExisting('ban_id'));
}
protected function _getShoutboxBanModel()
{
return $this->getModelFromCache('BannedShoutboxMembers_Model_Shoutbox');
}
Comme nous pouvons le voir, nous avons une fonction getBanById(), qui n'existe pas pour l'instant mais que nous allons l'ajouter plus tard...
Le fichier complet :
Le fichier complet :
PHP:
<?php
class BannedShoutboxMembers_DataWriter_Shoutbox extends XenForo_DataWriter
{
protected function _getFields()
{
$visitor = XenForo_Visitor::getInstance();
return array(
'banned_shoutbox_members' => array(
'ban_id' => array('type' => self::TYPE_UINT, 'autoIncrement' => true),
'banned_user_id' => array('type' => self::TYPE_UINT, 'required' => true),
'ban_user_id' => array('type' => self::TYPE_UINT, 'required' => true, 'default' => $visitor['user_id']),
'ban_date' => array('type' => self::TYPE_UINT, 'required' => true, 'default' => XenForo_Application::$time)
)
);
}
protected function _getExistingData($data)
{
if (!$id = $this->_getExistingPrimaryKey($data, 'ban_id'))
{
return false;
}
return array('banned_shoutbox_members' => $this->_getShoutboxBanModel()->getBanById($id));
}
protected function _getUpdateCondition($tableName)
{
return 'ban_id = ' . $this->_db->quote($this->getExisting('ban_id'));
}
protected function _getShoutboxBanModel()
{
return $this->getModelFromCache('BannedShoutboxMembers_Model_Shoutbox');
}
}
Sauvegardez le fichier.
Maintenant, on va créer notre fonction getBanById() pour éviter une erreur.
Pour ce faire on va donc créer un autre dossier dans BannedShoutboxMembers, que l'on va appeler : Model.
Et on va ensuite créer un fichier PHP, Shoutbox.php.
Ouvrons le et insérons y la base (comme toujours) :
PHP:
<?php
On va ensuite faire comme pour le DataWriter, on va étendre notre class par une class "mère" de XenForo :
PHP:
class BannedShoutboxMembers_Model_Shoutbox extends XenForo_Model
Ensuite, on va créer notre fonction getBanById(), comme nous l'avons mise dans notre DataWriter :
PHP:
public function getBanById($banId)
{
return $this->_getDb()->fetchRow('
SELECT *
FROM banned_shoutbox_members AS ban
LEFT JOIN xf_user AS user ON
(user.user_id = ban.banned_user_id)
WHERE ban.ban_id = ?
', $banId);
}
- $banId = ID du bannissement
- SELECT * = Sélection de tous les champs
- FROM banned_shoutbox_members AS ban = Sélection des champs depuis notre table dans la BDD
- LEFT JOIN xf_user AS user ON (user.user_id = ban.banned_user_id) = On joint la table xf_user (existe de base)
- WHERE ban.ban_id = ? = On sélectionne le bannissement en fonction de son ID.
PHP:
public function getAllBans(array $fetchOptions = array())
{
$limitOptions = $this->prepareLimitFetchOptions($fetchOptions);
return $this->_getDb()->fetchAll($this->limitQueryResults('
SELECT *
FROM banned_shoutbox_members AS ban
LEFT JOIN xf_user AS user ON
(user.user_id = ban.banned_user_id)
', $limitOptions['limit'], $limitOptions['offset']
));
}
- getAllBans = On récupère tous les bannissements
- $limitOptions = Pour ajouter une limite à notre liste qui sera affichée (nous allons faire un système de pagination)
Le fichier complet :
PHP:
<?php
class BannedShoutboxMembers_Model_Shoutbox extends XenForo_Model
{
public function getBanById($banId)
{
return $this->_getDb()->fetchRow('
SELECT *
FROM banned_shoutbox_members AS ban
LEFT JOIN xf_user AS user ON
(user.user_id = ban.banned_user_id)
WHERE ban.ban_id = ?
', $banId);
}
public function getAllBans(array $fetchOptions = array())
{
$limitOptions = $this->prepareLimitFetchOptions($fetchOptions);
return $this->_getDb()->fetchAll($this->limitQueryResults('
SELECT *
FROM banned_shoutbox_members AS ban
LEFT JOIN xf_user AS user ON
(user.user_id = ban.banned_user_id)
', $limitOptions['limit'], $limitOptions['offset']
));
}
}
NOTE : Ce fichier subira des modifications ultérieurement 
Sauvegardez
C'est ainsi que s'achève cette troisième partie
La quatrième partie arrive
...
© Good Topic Premium 2015 - Walky GTP
Sauvegardez
C'est ainsi que s'achève cette troisième partie
La quatrième partie arrive

© Good Topic Premium 2015 - Walky GTP
Dernière édition: