PhpBB2 est avant tout un forum comprenant un grand nombres de fonctionnalités dont l'une d'elle consiste en l'envoi d'un message privé d'un utilisateur à un autre.
Par défaut dans PhpBB2, les messages privés ont visuellement deux états possibles,
message non lu avec l'icône orange, et message lu avec l'icône blanche, mais dans PhpBB2 il en existe
un troisième non exploité graphiquement.
Pourquoi un troisième état possible si c'est pour ne pas s'en servir ?
Simplement car ce troisième état permet d'afficher ou non, un pop-up lorsque vous recevez un message.
Comment cela fonctionne ?
Lorsque vous recevez un message privé PhpBB2 lui donne à l'origine un code PRIVMSGS_NEW_MAIL tel que défini dans le fichier de constantes (voir plus bas),
Si vous avez au moins un MP ayant ce code, vous aurez un pop-up pour vous dire que vous avez un nouveau message privé (si vous avez autorisé les pop-ups et activé l'option dans votre profil evidemment)
Lorsque vous vous rendez sur votre boite de reception le code du message change et passe en PRIVMSGS_UNREAD_MAIL, dès lors même si vous ne lisez pas ce message vous n'aurez plus de pop-up pour vous avertir de sa présence.
Dans la boîte d'envoi de l'expediteur dans les deux cas le MP est marqué comme non lu.
Voila à quoi sert ce troisième état.
La modification de ce mod permet de rajouter pour les administrateurs et modérateurs la possibilité de voir avec une icone différente les messages pour lequel le destinataire est passé sur sa boîte de réception mais n'a pas lu le message.
II. Fonctionnemement
Pour des raisons de confidentialité cette fonctionnalité n'est possible que pour certains cas :
Pour les administrateurs
Pour les modérateurs, uniquement si le destinataire est un utilisateur sans droits de modération.
Les membres entre eux ne bénéficient pas de cette fonctionnalité, c'est un outil de modération.
Le code à modifier est donc très simple, il suffit de poser les conditions définies Il faut néanmoins vérifier avant toute chose que nous nous trouvons bien dans la boite d'envoi, car c'est cela que nous voulons modifier, ce qui en PHP se traduit comme ceci :
if ($folder == "outbox")
{
//Si l'expediteur n'est pas utilisateur normal //Si l'expediteur est admin -> tous//Sinon, si le destinataire est pas modo.//Par défaut a 2
$état=2;
if ($userdata['user_level']==ADMIN)
{
$état=3;
}
if ($userdata['user_level']==USER)
{
$état=2;
}
if ($userdata['user_level']==MOD & $row['user_level']==USER)
{
$état=3;
}
}
else
{
$état=2;
}
Il suffit ensuite de passer dans un "switch" pour choisir quel $état sera pris en compte puis affecter l'image de notre choix.
Voila la modification est fini, le code se divise donc en deux parties, l'une pour vérifier les règles de gestion que nous avons définies, et l'autre permet d'affecter la bonne image.
Pour information voilà les valeurs des constantes définies dans le fichier /includes/constants.php
if ( $row = $db->sql_fetchrow($result) )
{
$i = 0;
do
{
$privmsg_id = $row['privmsgs_id'];
$flag = $row['privmsgs_type'];
//<Modif Goshiz>//dans certains cas, on ne mets pas le controle// si on est pas dans outboxif ($folder == "outbox")
{
//Si l'expediteur n'est pas utilisateur normal //Si l'expediteur est admin -> tous//Sinon, si le destinataire est pas modo.//Par défaut a 2
$état=2;
if ($userdata['user_level']==ADMIN)
{
$état=3;
}
if ($userdata['user_level']==USER)
{
$état=2;
}
if ($userdata['user_level']==MOD & $row['user_level']==USER)
{
$état=3;
}
}
else
{
$état=2;
}
switch ($état)
{
case 2:
$icon_flag = ( $flag == PRIVMSGS_NEW_MAIL || $flag == PRIVMSGS_UNREAD_MAIL )
? $images['pm_unreadmsg'] : $images['pm_readmsg'];
//le passage à la ligne est fait pour des soucis de visibilité.break;
case 3:
switch ($flag)
{
case PRIVMSGS_NEW_MAIL :
$icon_flag = $images['pm_unreadmsg'];
break;
case PRIVMSGS_UNREAD_MAIL :
$icon_flag = $images['pm_viewmsg'];
break;
default :
$icon_flag = $images['pm_readmsg'];
break;
}
}
//</Modif Goshiz>
Il nous reste une dernière modification à faire du coté du template car nous avons ajouté une image, et il faut donc la déclarer ($images['pm_viewmsg'])
Pour cela ouvrons le fichier /templates/subSilver/subSilver.cfg et remplaçons :