Fork me on GitHub

Rapport de message :*
 

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 == ) {
        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 == 0) ? 'even' 'odd';
        if (
$pm_arr[$i]->getVar('read_msg') == 1) {
            echo 
"<tr align='left' class='$class'><td valign='top' width='5%' align='center'>&nbsp;</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.

Open in new window


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 :

Open in new window
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

108 Personne(s) en ligne (78 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 108 | Plus ...