Fork me on GitHub

Rapport de message :*
 

Re: hack boite au lettre

Titre du sujet : Re: hack boite au lettre
par slider84 sur 24/08/2005 22:19:19

Bonjour,

Ayant besoin d'une fonctionnalité similaire, n'en trouvant pas et n'aimant pas flash j'ai décidé de mettre un peu la main à la pâte !!.
Aprés quelques recherches sur le net, je me suis intéressé aux classes XHR et JSRS permettant l'interrogation de bases de données (MySQL entre autre) depuis Javascript. Aprés de nombreux essais j'ai trouvé une solution que je décrit ci-dessous utilisant les classes JSRS . Si celà peut intéresser quelqu'un......

Télécharger les classes JSRS vous pouvez les trouver <a href=http://ns3686.ovh.net/~nwn/JSRS/>ici</a>

Copier les fichiers JSRSClient.js, JSRSServer.php et server.php dans la racine du site (/)

Modifier le fichier server.php comme suit:

< ?PHP
include_once "mainfile.php";
include XOOPS_ROOT_PATH.'/JSRSServer.php';
$SERVER = new JSRSServer();

function getUserName($idUser)
{
$conn = mysql_connect(XOOPS_DB_HOST,XOOPS_DB_USER,XOOPS_DB_PASS);
if(!$conn) return false;
if(!mysql_select_db(XOOPS_DB_NAME,$conn)) return false;
$res = mysql_query("SELECT msg_id FROM ".XOOPS_DB_PREFIX."_priv_msgs WHERE to_userid='".$idUser."' AND read_msg='0'");
if(!$res || mysql_num_rows($res) == 0) return "";
$userName = mysql_num_rows($res);
return $userName;
}
?>


Dans la partie BODY du fichier theme.html de votre théme insérer le script suivant:

< script>
function alertUserName()
{
if (!client) {
var client = new JSRSClient('<{$xoops_url}>'+"/server.php","POST");
client.define("getUserName");
var userName = getUserName('<{$xoops_userId}>');
if(!userName)
document.getElementById('NewMsgs').innerHTML = " ";
document.getElementById('NewMsgs').innerHTML = userName;
}
}
/* relance la requete toute les 60 secondes */
setInterval("alertUserName()",60000);
< /script >


Dans /modules/system/templates/blocks: modifier le fichier system_block_user.html.

modifier (en rouge) la condition qui permet d'afficher le nombre de messages reçus dans le menu user:

<{if $block.new_messages > 0}>
< a href="<{$xoops_url}>/viewpmsg.php"><{$block.lang_inbox}> [ < span style="color:#ff0000; font-weight: bold;" id="NewMsgs"><{$block.new_messages}>< /span> ]</a>
<{else}>
< a href="<{$xoops_url}>/viewpmsg.php"><{$block.lang_inbox}> [ < span style="color:#ff0000; font-weight: bold;" id="NewMsgs">< /span> ]</a>
<{/if}>

Attention: le lien vers les messages dans le template ne doit pas être le dernier de la liste (sinon petit bug d'affichage avec IE lors du rafraichissement de la valeur).

Tout n'est sûrement pas parfait (il y a 3 jours, je ne connaissais rien a javascript) et il faudrait sûrement déplacer les fichiers dans le répertoire 'include' de xoops de plus, je ne sais pas si celà engendre des failles de sécurité !! mais ça fonctionne. Je l'ai testé avec Mozilla, Netscape et IE je pense que celà doit fonctionner avec les autres types de navigateurs supportant javascript (si quelqu'un veut essayer.....). Tous les commentaires seront les bienvenus.

PS: si vous faites un copier/coller des codes précédents, pensez à retirer les espaces dans les balises ?PHP, script et span
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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