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.
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/12/2003 gemaakt, de laatste keer de 16/07/2024 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/phpbb-modnews.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.