�
Pourquoi un groupe de news ? Simplement pour profiter des options ofertes par phpBB pour pouvoir informer les membres qui le désirent des nouveautés sur le site.
Une option dans le profil des membres est ajoutée, qui leur permet de déterminer à tout moment s'ils désirent recevoir les infos ou non.
Le fait de sélectionner cette option les ajoute automatiquement dans un groupe que nous allons nommer "News", ce qui nous permettra d'envoyer via l'administration phpBB un message à tout les membres de ce groupe.
Tout nouveau membre est par défaut ajouté dans ce groupe.
Suite à la demande de Doctor Z, j'ai tenté de retrouver les modifications que j'avais apporté au forum pour intégrer ces fonctions, et je vous les livre telles quelles.
Ne travaillant pas avec les noms de champs par défaut dans la base de données, je les ai remplacés ici par le préfixe prévu (phpbb_).
Si vous êtes dans le même cas que moi, vous pouvez indiquer ici votre préfixe, et la page sera adaptée à vos besoins.
La première chose à faire est de créer un nouveau groupe qui acceuillera les membres désireux d'être informés des nouvelles du site. Cette opération peut se faire par l'administration phpBB.
Ensuite, nous devons déterminer l'identifiant du nouveau groupe par cette requête :
Infobrol | Base de données Infobrol - Table phpbb_groups sur le serveur localhost | |||||||||||||||||||
Insérer un nouvel enregistrement | ||||||||||||||||||||
Nous devons ensuite ajouter un champ user_infobrol_upd dans la table phpbb_users
Base de données Infobrol - Table phpbb_users sur le serveur localhost
|
J'ai repris l'idée des mods, mais tant qu'à présent cela ne reste qu'une manière de vous présenter les différents codes. Plus tard, il est possible que je réalise un mod.
<?php ######################################################## ## ## MOD Title: Newsgroup ## MOD Version: 0.0.2 ;-) ## PhpBB Version : 2.0.8 ## MOD Date : 11.12.2003 ## Auteur : Steph [>Infobrol<] - http://www.gaudry.be ## Démonstration : http://www.gaudry.be/f/index.php ## ## Difficulté d'installation : Moyen ## Temps d'installation : 20 Minutes ## ## Fichier a editer : 8 ## ## - config.php ## - admin/admin_users.php ## - includes/usercp_register.php ## - includes/emailer.php ## - templates/nom_du template/profile_add_body.tpl ## - language/lang_english/lang_main.php ## - language/lang_french/lang_main.php ## - language/lang_english/admin_send_email.tpl ## - language/lang_french/admin_send_email.tpl ## ## Fichiers inclus : 0 ## ## Historique : ## - 30 Mars 2004 : adaptation du mail html à la version phpBB 2.08 ## ######################################################## # #-----[ OUVRIR ]---------------------------------------- # config.php # #-----[ TROUVER ]---------------------------------------- # # #-----[ AJOUTER APRES ]---------------------------------- # $groupe_news_no = 324; /* REMARQUE : 324 est le numéro du groupe dans la table phpbb_groups. Nous pouvons le trouver par cette requête : SELECT `group_id` FROM `phpbb_groups` WHERE `group_name` = 'News' */ # #-----[ OUVRIR ]---------------------------------------- # admin/admin_users.php # #-----[ TROUVER ]---------------------------------------- # $viewemail = ( isset( $HTTP_POST_VARS['viewemail']) ) ? ( ( $HTTP_POST_VARS['viewemail'] ) ? TRUE : 0 ) : 0; # #-----[ AJOUTER AVANT ]---------------------------------- # $infobrol_upd = ( isset( $HTTP_POST_VARS['infobrol_upd']) ) ? ( ( $HTTP_POST_VARS['infobrol_upd'] ) ? TRUE : 0 ) : 0; # #-----[ TROUVER ]---------------------------------------- # SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) . "', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_viewemail = $viewemail, # #-----[ AJOUTER APRES ]---------------------------------- # user_infobrol_upd = $infobrol_upd, # #-----[ TROUVER ]---------------------------------------- # $viewemail = $this_userdata['user_viewemail']; # #-----[ AJOUTER AVANT ]---------------------------------- # $infobrol_upd = $this_userdata['infobrol_upd']; # #-----[ TROUVER ]---------------------------------------- # $s_hidden_fields .= '<input type="hidden" name="viewemail" value="' . $viewemail . '" />'; # #-----[ AJOUTER AVANT ]---------------------------------- # $s_hidden_fields .= '<input type="hidden" name="infobrol_upd" value="' . $infobrol_upd . '" />'; # #-----[ TROUVER ]---------------------------------------- # 'VIEW_EMAIL_YES' => ($viewemail) ? 'checked="checked"' : '', # #-----[ AJOUTER AVANT ]---------------------------------- # 'INFOBROL_UPD_YES' => ($infobrol_upd) ? 'checked="checked"' : '', 'INFOBROL_UPD_NO' => (!$infobrol_upd) ? 'checked="checked"' : '', # #-----[ TROUVER ]---------------------------------------- # 'L_PUBLIC_VIEW_EMAIL' => $lang['Public_view_email'], # #-----[ AJOUTER AVANT ]---------------------------------- # 'L_INFOBROL_UPD' => $lang['Infobrol_upd'], # #-----[ OUVRIR ]---------------------------------------- # includes/usercp_register.php # #-----[ TROUVER ]---------------------------------------- # $viewemail = ( isset($HTTP_POST_VARS['viewemail']) ) ? ( ($HTTP_POST_VARS['viewemail']) ? TRUE : 0 ) : 0; # #-----[ AJOUTER AVANT ]---------------------------------- # $infobrol_upd = ( isset($HTTP_POST_VARS['infobrol_upd']) ) ? ( ($HTTP_POST_VARS['infobrol_upd']) ? TRUE : 0 ) : TRUE; # #-----[ TROUVER ]---------------------------------------- # SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, # #-----[ AJOUTER APRES ]---------------------------------- # user_infobrol_upd = $infobrol_upd, # #-----[ TROUVER ]---------------------------------------- # if ( !$user_active ) { // // The users account has been deactivated, send them an email with a new activation key // # #-----[ AJOUTER AVANT ]---------------------------------- # // infobrol_upd : entrée ou retrait du groupe de news if ($infobrol_upd==1) { $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending) VALUES (".$groupe_news_no.", $user_id, 0)"; if ( !($db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Erreur : impossible de vous ajouter au groupe news ', '', __LINE__, __FILE__, $sql); } } else { $sql = "DELETE FROM " . USER_GROUP_TABLE . " WHERE group_id = ".$groupe_news_no." AND user_id = $user_id"; if ( !($db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Erreur : impossible de modifier le groupe news ', '', __LINE__, __FILE__, $sql); } } // fin infobrol_upd # #-----[ TROUVER ]---------------------------------------- # INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, # #-----[ AJOUTER APRES ]---------------------------------- # user_infobrol_upd, # #-----[ TROUVER ]---------------------------------------- # VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, # #-----[ AJOUTER APRES ]---------------------------------- # $infobrol_upd, # #-----[ TROUVER ]---------------------------------------- # include($phpbb_root_path . 'includes/emailer.'.$phpEx); # #-----[ AJOUTER AVANT ]---------------------------------- # // infobrol_upd : ajout automatique dans le groupe if ($infobrol_upd==1) { $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending) VALUES (".$groupe_news_no.", $user_id, 0)"; if ( !($db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Erreur : impossible de rentrer automatiquement dans le groupe news ', '', __LINE__, __FILE__, $sql); } } // fin infobrol_upd # #-----[ TROUVER ]---------------------------------------- # $viewemail = $userdata['user_viewemail']; # #-----[ AJOUTER AVANT ]---------------------------------- # $infobrol_upd = $userdata['user_infobrol_upd']; # #-----[ TROUVER ]---------------------------------- # display_avatar_gallery($mode, $avatar_category, $user_id, $email, $current_email, $coppa, $username, $email, &$new_password, &$cur_password, $password_confirm, $icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature, $viewemail, # #-----[ AJOUTER APRES ]---------------------------------- # $infobrol_upd, # #-----[ TROUVER ]---------------------------------- # 'VIEW_EMAIL_YES' => ( $viewemail ) ? 'checked="checked"' : '', # #-----[ AJOUTER AVANT ]---------------------------------- # 'INFOBROL_UPD_YES' => ( $infobrol_upd ) ? 'checked="checked"' : '', 'INFOBROL_UPD_NO' => ( !$infobrol_upd ) ? 'checked="checked"' : '', # #-----[ TROUVER ]---------------------------------- # 'L_PUBLIC_VIEW_EMAIL' => $lang['Public_view_email'], # #-----[ AJOUTER AVANT ]---------------------------------- # 'L_INFOBROL_UPD' => $lang['Infobrol_upd'], # #-----[ OUVRIR ]---------------------------------------- # language/lang_english/lang_main.php # #-----[ TROUVER ]---------------------------------- # $lang['Public_view_email'] = 'Always show my e-mail address'; # #-----[ AJOUTER AVANT ]---------------------------------- # $lang['Infobrol_upd'] = 'Notify (e-mail) on news from infobrol'; # #-----[ Début mail html ]------------------------------- #-----[ OUVRIR ]---------------------------------------- # includes/emailer.php # #-----[ TROUVER ]---------------------------------- # // Build header $this->extra_headers = (($this->reply_to != '') ? "Reply-to: $this->reply_to\n" : '') . (($this->from != '') ? "From: $this->from\n" : "From: " . $board_config['board_email'] . "\n") . "Return-Path: " . $board_config['board_email'] . "\nMessage-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">\nMIME-Version: 1.0\nContent-type: text/plain; charset=" . $this->encoding . "\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . $this->extra_headers . (($cc != '') ? "Cc: $cc\n" : '') . (($bcc != '') ? "Bcc: $bcc\n" : ''); # #-----[ REMPLACER ]---------------------------------------- # Content-type: text/plain; # #-----[ PAR ]---------------------------------------- # Content-type: text/html; # #-----[ OUVRIR ]---------------------------------------- # language/lang_french/email/admin_send_email.tpl language/lang_english/email/admin_send_email.tpl # #-----[ REMPLACER le contenu par un contenu html]-------- #-----[ Fin mail html ]---------------------------------- # # #-----[ OUVRIR ]---------------------------------------- # language/lang_french/lang_main.php # #-----[ TROUVER ]---------------------------------- # $lang['Public_view_email'] = 'Toujours montrer son adresse e-mail'; # #-----[ AJOUTER AVANT ]---------------------------------- # $lang['Infobrol_upd'] = 'M\'avertir par e-mail des nouvelles du site (nouvelles pages, etc.)'; # #-----[ OUVRIR ]---------------------------------------- # templates/subSilver/profile_add_body.tpl # #-----[ TROUVER ]---------------------------------- # <tr> <th class="thSides" colspan="2" height="25" valign="middle">{L_PREFERENCES}</th> </tr> # #-----[ AJOUTER APRES ]---------------------------------- # <tr> <td class="row1"><span class="gen">{L_INFOBROL_UPD}:</span></td> <td class="row2"> <input type="radio" name="infobrol_upd" value="1" {INFOBROL_UPD_YES} /> <span class="gen">{L_YES}</span> <input type="radio" name="infobrol_upd" value="0" {INFOBROL_UPD_NO} /> <span class="gen">{L_NO}</span> </td> </tr> ?>
Je n'ai pas encore retrouvé les modifications à apporter aux templates, vu que je ne travaille pas de la même manière que phpBB (le style est indépendant des templates, car il est géré pour l'ensemble du site).
Pour ceux qui ne peuvent attendre, il suffit de rechercher dans les templates toutes les références à l'option montrer son adresse e-mail, et d'ajouter la nouvelle option.
�
�
Apparence :
Membres :
ConnexionNouveaux :
S'enregistrer�
Infos :
15180 documents (?)