Re: Module de message | Titre du sujet : Re: Module de message par blueteen sur 11/03/2006 15:50:15
bonjour, voici le code corrigé et à jour. à présent, cet unique code permet de gérer très simplement l'accès aux messages envoyés (tant que le destinataire ne les a pas effacé de sa boîte).
au début du script, il y a 2 variables qui permettent de choisir si tu veux afficher tous les messages ou un nombre défini. Ainsi que de choisir l'ordre d'affichage, trié par date (plus récent au plus ancien, et vice-versa)
code à coller dans un bloc php personnalisé par exemple (ou à incorporer dans viewmpsg.php comme tu l'as fait).
global $xoopsUser;
global $xoopsConfig;
$xoopsOption['pagetype'] = "pmsg";
include_once XOOPS_ROOT_PATH."/language/".$xoopsConfig['language']."/pmsg.php";
include_once XOOPS_ROOT_PATH."/mainfile.php";
$limit_mess_aff = 3; //changer le chiffre par le nombre de messages que l'on veut afficher - indiquer 0 pour afficher tous les PM
$pm_order = "desc"; //desc = plus récent au plus ancien – asc = plus ancien au plus récent
if (!is_object($xoopsUser)) {
$errormessage = _PM_SORRY."<br />"._PM_PLZREG."";
redirect_header(XOOPS_URL."/user.php",2,$errormessage);
} else {
$pm_handler =& xoops_gethandler('privmessage');
$criteria = new CriteriaCompo(new Criteria('from_userid', $xoopsUser->getVar('uid')));
$criteria->setSort('msg_time');
$criteria->setOrder($pm_order);
$pm_arr =& $pm_handler->getObjects($criteria);
echo "<table border='0' cellspacing='1' width='100%' class='outer'>n";
$total_messages = count($pm_arr);
if ( $total_messages == 0 ) {
echo "<tr><td class='even' align='center'>Aucun message envoyé</td></tr> ";
} else {
echo "<tr align='center' valign='middle'><th>Non lu</th><th>". _PM_TO ."</th><th>". _PM_SUBJECT ."</th><th align='center'>". _PM_DATE ."</th></tr>n";
}
if ($limit_mess_aff != 0)
{
if ($total_messages >$limit_mess_aff)
{
$max_messages = $total_messages-($total_messages -$limit_mess_aff);
}
else {$max_messages = $total_messages;}
}
else {$max_messages = $total_messages;}
for ($i = 0; $i < $max_messages; $i++) {
$class = ($i % 2 == 0) ? 'even' : 'odd';
if ($pm_arr[$i]->getVar('read_msg') == 1) {
echo "<tr align='left' class='$class'><td valign='top' width='5%' align='center'> </td>n";
} else {
echo "<tr align='left' class='$class'><td valign='top' width='5%' align='center'><img src=".XOOPS_URL."/images/read.gif alt='"._PM_NOTREAD."' /></td>n";
}
$postername = XoopsUser::getUnameFromId($pm_arr[$i]->getVar("to_userid"));
echo "<td valign='middle' width='10%'>";
// n'affiche pas le nom des membres supprimés
if ($postername) {
echo "<a href=".XOOPS_URL."/userinfo.php?uid=".$pm_arr[$i]->getVar("to_userid").">".$postername."</a>";
} else {
echo $xoopsConfig['anonymous'];
}
echo "</td>n";
echo "<td valign='middle'>".$pm_arr[$i]->getVar("subject")."</td>";
echo "<td valign='middle' align='center' width='30%'>".formatTimestamp($pm_arr[$i]->getVar("msg_time"))."</td></tr>";
}
echo "</table>";
}
Ci-dessous, 2 blocs contenant ce code : Le premier contient tous les messages envoyés, avec le plus ancien en tête. Le second bloc contient les 3 derniers messages envoyés, le plus récent en tête.
edit : quelques modifications pour corriger un lien vers l'image de l'enveloppe. Et utilisation du css pour colorer différement une ligne sur deux. Ca donne ça à présent :
|
|