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 )






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 :
<dl>
<dt><label for="mp_mail">Recevoir un avis de message privé par mail ?</label><br /><span>Permet de recevoir des avis de nouveaux messages à 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>
 



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.

Cette page a été consultée 2092 fois