Fork me on GitHub




(1) 2 »


Module de message
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1176
Bonjours a tous,

je voulais savoir comment faire pour que l'expéditeur d'un message privé sache si le déstinataire la lu?
existe-il un module qui le fait déjà?

Merci d'avance

Posté le : 09/03/2006 22:56
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Bonjour et bienvenue,

Pour l'instant on ne dispose pas de cette information.
la seule chose que tu puisses faire, c'est comparer la date d'envoi de ton message avec la date de dernière connexion qui est affichée dans le profil du membre destinataire.

Posté le : 10/03/2006 00:38
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Semi pro
Inscrit: 27/08/2003 11:03
De Perpignan
Messages: 1255
effectivement... une option qui ne serait pas ininteressante...

Posté le : 10/03/2006 07:05

Si tu frappes sur ta tête avec une cruche et que ça sonne creux, n'en déduis pas forcément que c'est la cruche qui est vide. ...
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
bonjour,
A défaut d'avoir ce système tout intégré dans la messagerie privée de xoops, est-ce qu'un bloc contenant tes envois vers différents destinataires, avec indication de 'lu/non lu' te conviendrait ?

Sachant, que si la personne destinatrice supprime le pm, la personne émettrice ne le verra plus dans sa liste.
Ce n'est pas une véritable gestion de boîte aux lettres, juste un script qui reprend des données présentes dans la base de données de messagerie de xoops.

Ce bloc permet d'avoir une vue comme celle-ci :

En affichage central :

Open in new window

En affichage de côté :

Open in new window

Le pseudo du destinataire est cliquable.
Le sujet, la date et l'heure d'expédition sont disponibles.
Une icône apparaît si le message n'a pas été lu par la personne.
Tu peux placer ce bloc où tu veux, et donner les droits d'accès à qui tu veux.

Il faut coller le code suivant, dans un bloc php :

global $xoopsUser;
global 
$xoopsConfig;
$xoopsOption['pagetype'] = "pmsg";
include_once 
XOOPS_ROOT_PATH."/language/".$xoopsConfig['language']."/pmsg.php";
include_once 
XOOPS_ROOT_PATH."/mainfile.php";

if (!
is_object($xoopsUser)) {
    
$errormessage _PM_SORRY."<br />"._PM_PLZREG."";
    
redirect_header(XOOPS_URL."/user.php",2,$errormessage);
} else {
    
$pm_handler =& xoops_gethandler('privmessage');
    
$pm_arr =& $pm_handler->getObjects(new Criteria('from_userid'$xoopsUser->getVar('uid')));
    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> ";
        
$display0;
    } 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";
        
$display 1;
    }
    for (
$i 0$i $total_messages$i++) {

        if (
$pm_arr[$i]->getVar('read_msg') == 1) {
            echo 
"<td valign='top' width='5%' align='center'>&nbsp;</td>n";
        } else {
            echo 
"<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%'>";
        
// no need to show deleted users
        
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>";
}


Si tu veux limiter le nombre de PM envoyés (avec seulement les plus récents), affichés dans ce bloc, ça ne sera guère plus compliqué.
Je tâche de repasser modifier le code.

Je suis reparti d'un script fait à l'époque où une personne voulait voir ses PM dans un bloc.

Posté le : 10/03/2006 17:00
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1176
Merci pour ce code, je vais essayé de l'intégrer dans le fichier php de lecture de mp.
Je vous tiens au courant

Posté le : 10/03/2006 17:08
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
J'ai modifié une valeur du premier code, pour agrandir la taille de la 3ème colonne.
Et voici le code, qui permet de limiter l'affichage aux 3 derniers PM envoyés. (tu verras dans le code, une simple variable à changer pour choisir combien de PM afficher)

global $xoopsUser;
global 
$xoopsConfig;
$xoopsOption['pagetype'] = "pmsg";
include_once 
XOOPS_ROOT_PATH."/language/".$xoopsConfig['language']."/pmsg.php";
include_once 
XOOPS_ROOT_PATH."/mainfile.php";

if (!
is_object($xoopsUser)) {
    
$errormessage _PM_SORRY."<br />"._PM_PLZREG."";
    
redirect_header(XOOPS_URL."/user.php",2,$errormessage);
} else {
    
$pm_handler =& xoops_gethandler('privmessage');
    
$pm_arr =& $pm_handler->getObjects(new Criteria('from_userid'$xoopsUser->getVar('uid')));
    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> ";
        
$display0;
    } 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";
        
$display 1;
    }

$max_messages 0;
$mess_aff 3;//changer le chiffre par le nombre de messages que l'on veut afficher
if ($total_messages >$mess_aff
    {
    
$max_messages $total_messages-$mess_aff//
    
}

    for (
$i $max_messages$i $total_messages$i++) {

        if (
$pm_arr[$i]->getVar('read_msg') == 1) {
            echo 
"<td valign='top' width='5%' align='center'>&nbsp;</td>n";
        } else {
            echo 
"<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%'>";
        
// no need to show deleted users
        
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>";
}


Il me reste le tri à faire, pour placer le dernier envoi, en premier dans la liste.


Et voici ce que donnent ces 2 codes, en bloc central centré :

Open in new window

Posté le : 10/03/2006 17:16
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1176
C'est super ton code, je l'ai intégré dans le fichier Citation :
viewpmsg.php
. Ca va super bien! Je suis très intéressé par la fonction de tri, c'est une bonne idée.
Merci bcp pour ton aide

Posté le : 10/03/2006 19:38
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
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

Posté le : 11/03/2006 15:50

Edité par blueteen sur 11/03/2006 19:06:57
Edité par blueteen sur 11/03/2006 19:15:42
Edité par blueteen sur 11/03/2006 19:16:13
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Supporter Xoops
Inscrit: 07/06/2003 14:31
Messages: 572
Bonjour,

super blueteen,encore une option en plus pour le module messages.Peut etre a la force en va voir un vrai module de messagerie interne.

Mais en tous cas bravo pour ton travail.Peut etre qq1 t'arrive de convaincre de faire un module messagerie.Mais bon j'arrete de revé,car noel ce trop loin.

cordialment

silver74

Posté le : 11/03/2006 16:01
Partager Twitter Partagez cette article sur GG+
Re: Module de message
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
salut
ce n'est qu'un tout petit code pour dépanner

mais je ne sais plus si j'ai révé ou pas, mais il me semblait avoir déjà croisé un module avancé de messagerie privée pour xoops (avec gestion des messages envoyés...)

un vrai système de messagerie, enregistrerai les messages envoyés, afin que l'on puisse les consulter même si le destinataire les supprime de son compte.

mais il faut aussi prendre en compte la place que ça prendrait en base de données !

Posté le : 11/03/2006 16:06
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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