Etre prévenu par mail de nouveaux messages privés
Révision infoking1 du 27/04/2012
Introduction
Ce tutoriel initiera un avertissement de la réception par E-mail de vos Mps (messages privés). Cette fonction s'activera via la page de votre profil.
Ce tutoriel a été mis en forme et réécrit par celle qui a demandé cette modification : Harper !! Que nous remercions au passage pour avoir éclairci et débroussaillé le sujet initial créé sur le forum : Messages privés, être averti(e) par mail.
ATTENTION !
Il est plus que risqué de faire ces modifs en l'état.
Faites des sauvegardes avant toutes modifications, de la base de données et des fichiers.
Dans la base de données : En premier lieu, ajouter une colonne avec phpmyadmin dans la table xxxxx_member
Field :user_notif_mail
Type : TINYINT
Length/Values : 1
Default :As defined : 0
(forcer la valeur de défaut a 0 )
Type : TINYINT
Length/Values : 1
Default :As defined : 0
(forcer la valeur de défaut a 0 )
Modification des fichiers :
Le fichier : pm.php
Dans /member/pm.php vers la ligne 282
Juste après:
Code PHP :
//Envoi du message privé. $Privatemsg->send($user_id_dest, $pm_id_get, $contents, $User->get_attribute('user_id'), $status);
Ajouter :
Code PHP :
// ici include pour l'envoi du mail si c'est voulu par la conf! $mp_send_mail = $Sql->query("SELECT user_notif_mail FROM " . DB_TABLE_MEMBER . " WHERE user_id = '" . $user_id_dest . "'", __LINE__, __FILE__); if($mp_send_mail == 1) { // 1 => envoi du mail pour prévenir que l on a un mp! global $CONFIG ; $mail_receip = $Sql->query("SELECT user_mail FROM " . DB_TABLE_MEMBER . " WHERE user_id = '" . $user_id_dest . "'", __LINE__, __FILE__); import('io/mail'); $mail = new Mail(); if ($mail->send_from_properties($mail_receip, 'Nouveau message privé', $contents, $CONFIG['mail'], 'From: Messagerie <'.$CONFIG['mail'] .'>' , 'Messagerie automatique')) { //Succès mail $get_error = 'success'; }else{ //Erreur mail $get_error = 'error'; } // on passe par une mise en variable pour éviter les erreurs !! c'est pas tres ... mais ça fonctionne :) }
N.B : on peut tout à fait personnaliser le message 'nouveau message privé' ainsi que 'Messagerie'
Le fichier : member.tpl
Dans /member/templates/member.tpl ligne 236
Remplacer :
Code TPL :
</fieldset>
Par :
Code TPL :
<dl> <dt><label for="mp_mail">Recevoir un avis de message privé par mail ?</label><br /><span>Permet de recevoir un avis de nouveau message à l'adresse mail que vous avez indiquée</span></dt> <dd><label><input type="checkbox" {MP_MAIL_CHECKED} name="mp_mail" id="mp_mail" /></label></dd> </dl> </fieldset>
Le fichier : member.php
Dans /member/member.php à la ligne 62 :
Remplacer :
Code PHP :
$row = $Sql->query_array(DB_TABLE_MEMBER, 'user_lang', 'user_theme', 'user_mail', 'user_local', 'user_web', 'user_occupation', 'user_hobbies', 'user_avatar', 'user_show_mail', 'user_editor', 'user_timezone', 'user_sex', 'user_born', 'user_sign', 'user_desc', 'user_msn', 'user_yahoo', "WHERE user_id = '" . $User->get_attribute('user_id') . "'", __LINE__, __FILE__);
Par :
Code PHP :
$row = $Sql->query_array(DB_TABLE_MEMBER, 'user_lang', 'user_theme', 'user_mail', 'user_local', 'user_web', 'user_occupation', 'user_hobbies', 'user_avatar', 'user_show_mail', 'user_editor', 'user_timezone', 'user_sex', 'user_born', 'user_sign', 'user_desc', 'user_msn', 'user_yahoo', 'user_notif_mail', "WHERE user_id = '" . $User->get_attribute('user_id') . "'", __LINE__, __FILE__);
Après la ligne 91 ... Ajouter:
Code PHP :
'MP_MAIL_CHECKED' => ($row['user_notif_mail'] == 1) ? 'checked="checked"' : '', // ici on est en inverse attention 1 = oui 0 = non
Après la ligne 441 ci dessous ...
Code PHP :
$user_timezone = retrieve(POST, 'user_timezone', '');
Ajouter :
Code PHP :
$user_mp_mail = !empty($_POST['mp_mail']) ? '1' : '0'; // on est inversé !!
Vers la ligne 535... Rechercher :
Code PHP :
$Sql->query_inject("UPDATE " . DB_TABLE_MEMBER . " SET user_lang = '" . $user_lang . "', user_theme = '" . $user_theme . "', " . $user_mail . "user_show_mail = '" . $user_show_mail . "', user_editor = '" . $user_editor . "', user_timezone = '" . $user_timezone . "', user_local = '" . $user_local . "', " . $user_avatar . "user_msn = '" . $user_msn . "', user_yahoo = '" . $user_yahoo . "', user_web = '" . $user_web . "', user_occupation = '" . $user_occupation . "', user_hobbies = '" . $user_hobbies . "', user_desc = '" . $user_desc . "', user_sex = '" . $user_sex . "', user_born = '" . $user_born . "', user_sign = '" . $user_sign . "' WHERE user_id = '" . numeric($User->get_attribute('user_id')) . "'", __LINE__, __FILE__);
Et modifier par :
Code PHP :
$Sql->query_inject("UPDATE " . DB_TABLE_MEMBER . " SET user_lang = '" . $user_lang . "', user_theme = '" . $user_theme . "', " . $user_mail . "user_show_mail = '" . $user_show_mail . "', user_editor = '" . $user_editor . "', user_timezone = '" . $user_timezone . "', user_local = '" . $user_local . "', " . $user_avatar . "user_msn = '" . $user_msn . "', user_yahoo = '" . $user_yahoo . "', user_web = '" . $user_web . "', user_occupation = '" . $user_occupation . "', user_hobbies = '" . $user_hobbies . "', user_desc = '" . $user_desc . "', user_sex = '" . $user_sex . "', user_born = '" . $user_born . "',user_notif_mail = '".$user_mp_mail."', user_sign = '" . $user_sign . "' WHERE user_id = '" . numeric($User->get_attribute('user_id')) . "'", __LINE__, __FILE__);
<span class="note">
Les n° des lignes peuvent être un peu différentes (+/- à 3 lignes près ...) c'est pour cela que j'ai mis les avant modifs pour repérage.</span>
Modification des fichiers de la page d'administration:
Le fichier : admin-member.php
Dans /admin/admin_members.php après la ligne 94 ajouter la ligne :
Code PHP :
$user_mp_mail = !empty($_POST['mp_mail']) ? '1' : '0'; // on est inversé !!
A la Ligne 220, modifier la requête pour avoir :
Code PHP :
$Sql->query_inject("UPDATE " . DB_TABLE_MEMBER . " SET login = '" . $login . "', level = '" . $MEMBER_LEVEL . "', user_lang = '" . $user_lang . "', user_theme = '" . $user_theme . "', user_mail = '" . $user_mail . "', user_show_mail = " . $user_show_mail . ", user_editor = '" . $user_editor . "', user_timezone = '" . $user_timezone . "', user_local = '" . $user_local . "', " . $user_avatar . "user_msn = '" . $user_msn . "', user_yahoo = '" . $user_yahoo . "', user_web = '" . $user_web . "', user_occupation = '" . $user_occupation . "', user_hobbies = '" . $user_hobbies . "', user_desc = '" . $user_desc . "', user_sex = '" . $user_sex . "', user_born = '" . $user_born . "', user_sign = '" . $user_sign . "', user_warning = '" . $user_warning . "', user_readonly = '" . $user_readonly . "', user_ban = '" . $user_ban . "', user_aprob = '" . $user_aprob . "', user_notif_mail = '" . $user_mp_mail . "' WHERE user_id = '" . $id_post . "'", __LINE__, __FILE__);
Juste sous le crochet à la ligne 311, en dessous du commentaire... Ajouter :
Code PHP :
$user_mp_mail = !empty($_POST['mp_mail']) ? '1' : '0'; // on est inversé !!
Ce qui devrait vous donner :
Code PHP :
if (check_mail($mail)) { //Vérirication de l'unicité du membre et du mail $user_mp_mail = !empty($_POST['mp_mail']) ? '1' : '0'; // on est inversé !!
Ensuite à la ligne 326 :
Code PHP :
//On insere le nouveau membre. $Sql->query_inject("INSERT INTO " . DB_TABLE_MEMBER . " (login,password,level,user_groups,user_lang,user_theme,user_mail,user_timezone,user_show_mail,timestamp,user_avatar,user_msg,user_local,user_msn,user_yahoo,user_web,user_occupation,user_hobbies,user_desc,user_sex,user_born,user_sign,user_pm,user_warning,user_readonly,last_connect,test_connect,activ_pass,new_pass,user_ban,user_aprob) VALUES('" . $login . "', '" . $password_hash . "', '" . $level . "', '', '" . $CONFIG['lang'] . "', '', '" . $mail . "', '" . $CONFIG['timezone'] . "', '1', '" . time() . "', '', 0, '', '', '', '', '', '', '', 0, '0000-00-00', '', 0, 0, 0, 0, 0, '', '', 0, 1)", __LINE__, __FILE__);
Modifier la requête SQL tel que :
Code PHP :
//On insere le nouveau membre. $Sql->query_inject("INSERT INTO " . DB_TABLE_MEMBER . " (login,password,level,user_groups,user_lang,user_theme,user_mail,user_timezone,user_show_mail,timestamp,user_avatar,user_msg,user_local,user_msn,user_yahoo,user_web,user_occupation,user_hobbies,user_desc,user_sex,user_born,user_sign,user_pm,user_warning,user_readonly,last_connect,test_connect,activ_pass,new_pass,user_ban,user_aprob,user_notif_mail) VALUES('" . $login . "', '" . $password_hash . "', '" . $level . "', '', '" . $CONFIG['lang'] . "', '', '" . $mail . "', '" . $CONFIG['timezone'] . "', '1', '" . time() . "', '', 0, '', '', '', '', '', '', '', 0, '0000-00-00', '', 0, 0, 0, 0, 0, '', '', 0, 1,'.$user_mp_mail.')", __LINE__, __FILE__);
Entre la ligne 629 et 630:
Code PHP :
$Template->assign_vars(array( 'C_USERS_MANAGEMENT' => true,
on ajoute :
Code PHP :
$Template->assign_vars(array( 'MP_MAIL_CHECKED' => ($mbr['user_notif_mail'] == 1) ? 'checked="checked"' : '', // ici on est en inverse attention 1 = oui 0 = non 'C_USERS_MANAGEMENT' => true,
Le fichier : admin_members_management2.tpl
Dans templates/default/admin/admin_members_management2.tpl
Modifier à la ligne 259, juste avant le </fieldset> " , Ajouter :
Code TPL :
Par défaut l'option dans l'administration, ne sera pas coché, et ne sera donc pas active. C'est vous qui l'activerez...
Rédigé le 13/03/2012, par Harper.