PhpBB forums : Groupe de news
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 sur phpbb-fr, j'ai tenté de retrouver les modifications que j'avais apporté au forum pour intégrer ces fonctions, et les voici à titre d'info pour s'en inspirer.
La structure de la DB PhpBB
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 InfobrolSvr | |||||||||||||
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 InfobrolSvr
|
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.
Le code pour PhpBB
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.
Code php (mod_news.php) (400 lignes)
<?php ######################################################## ## ## MOD Title: Newsgroup ## MOD Version: 0.0.2 ;-) ## PhpBB Version : 2.0.8 ## MOD Date : 11.12.2003 ## Auteur : Steph [>Infobrol<] - https://www.gaudry.be ## Démonstration : https://www.gaudry.be/forum/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> ?>
Ce code ne reprend pas 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 le souhaitent, 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.
Document créé le 11/12/2003, dernière modification le 16/07/2024
Source du document imprimé : https://www.gaudry.be/phpbb-modnews.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.