phpBB2 : Partager une base de données entre plusieurs forums

Image non disponible


précédentsommairesuivant

II. Préliminaires

II-A. Étude de la structure de phpBB2

Avant de commencer, il est fondamental de comprendre comment est organisé phpBB2. Nous allons donc passer en revue les différentes tables de la base de données.

Certaines tables seront remplacées par des Vues SQL.

II-A-1. Les données spécifiques à chaque site

Ces informations n'ont aucune raison d'être transférées d'un site à l'autre :
  • phpbb_auth_access : Les autorisations d'accès des utilisateurs ou des groupes pour les catégories ou les forums ;
  • phpbb_config : La configuration d'un forum ;
  • phpbb_groups : Les groupes d'utilisateurs ;
  • phpbb_ranks : Les rangs des utilisateurs ;
  • phpbb_sessions : Les sessions utilisateurs ;
  • phpbb_sessions_keys : Une gestion supplémentaire des sessions utilisateurs ;
  • phpbb_smilies : Les smilies ;
  • phpbb_themes : Les styles/thèmes/skins ;
  • phpbb_themes_name : Les noms des styles/thèmes/skins ;
  • phpbb_user_group : Les relations entre les utilisateurs et les groupes.

Les tables spécifiques à un site n'ont besoin d'aucune intervention (phpBB les installe et nous n'avons pas besoin de les modifier). Elles contiennent la configuration de chaque site.

Les tables phpbb_sessions et phpbb_sessions_keys peuvent être conservées comme tables spécifiques (ie. l'exemple de ce tutoriel) ou bien gérées en tant que tables partagées. Dans mon cas, j'utilise un nom de domaine pour chaque site donc les sessions sont totalement indépendantes, mais vous pouvez les partager si vos forums sont sur le même domaine.

Si vous décidez de partager les sessions, cela évite à vos visiteurs de se connecter indépendemment pour chaque site. Attention, il est impossible de le faire lorsque les noms de domaine sont différents car le navigateur Web sépare leurs cookies.

II-A-2. Les données nomades

Seul le site affecté peut voir ces informations, mais on peut les transférer d'un site à l'autre :
  • phpbb_categories : Les catégories de niveau supérieur ;
  • phpbb_forums : Les forums ;
  • phpbb_forum_prune : Le délestage d'un forum ;
  • phpbb_posts : Les messages d'un forum ;
  • phpbb_posts_text : Le contenu des messages d'un forum ;
  • phpbb_topics : Les sujets de discussion ;
  • phpbb_topics_watch : Qui surveille quel sujet de discussion ;
  • phpbb_vote_desc : Les sondages ;
  • phpbb_vote_results : Les résultats des sondages ;
  • phpbb_vote_voters : Les votants aux sondages.

Nous accèderons à ces tables au moyen de Vues SQL. Nous leur ajouterons un identifiant de site, disponible dans une nouvelle table. Les scripts de configuration et de modification de données de chaque site doivent être modifiés pour référencer cet identifiant.

Les vues contiennent les informations qui ne concernent qu'un seul site de l'ensemble, tout en pouvant être déplacées d'un site à l'autre.

II-A-3. Les données partagées entre tous les sites

Tous les sites utilisent ces mêmes informations :
  • phpbb_banlist : Les utilisateurs bannis ;
  • phpbb_confirm : Confirmation d'inscription pour les nouveaux utilisateurs ;
  • phpbb_disallow : Les noms d'utilisateur interdits ;
  • phpbb_privmsgs : Les messages privés des utilisateurs ;
  • phpbb_privmsgs_text : Le contenu des messages privés des utilisateurs ;
  • phpbb_privmsgs_ignore Chaque utilisateur peut choisir d'ignorer les messages d'autres utilisateurs ;
  • phpbb_search_results : Les résultats des recherches ;
  • phpbb_search_wordlist : Les mots recherchés ;
  • phpbb_search_wordmatch : La correspondance entre les mots (cf. la table ci-dessus) et les messages dans lesquels ils sont utilisés ;
  • phpbb_words : Les mots censurés par l'administrateur.

Les tables de partage sont simplement des tables de phpBB renommées pour refléter leur caractère commun. La configuration des différents sites doit être modifiée pour y faire référence, ce qui nous évite de créer des vues.

II-A-4. Cas particulier : les Utilisateurs

Une partie des informations (sessions, thème, langue etc.) sont spécifiques à chacun des sites tandis qu'une autre partie (pseudo, mot de passe, etc.) leur est commune. La méthode utilisée pour les autres tables n'est donc pas adaptée, il faut trouver une parade.

Champs communs à tous les sites :
  • user_active : Si le profil est actif ;
  • username : Pseudonyme ;
  • user_pasword : Mot de passe ;
  • user_regdate : Date d'enregistrement ;
  • user_level : Invité, membre, administrateur ;
  • user_posts : Compteur de messages ;
  • user_timezone : Zone horaire ;
  • user_new_privmsg : S'il y a de nouveaux messags privés ;
  • user_unread_privmsg : S'il y a des messages privés non lus ;
  • user_last_privmsg : Quel est le dernier message privé ;
  • user_login_tries : Compteur de tentatives de connexion ;
  • user_last_login_try : Quand a eu lieu la dernière tentative de connexion ;
  • user_emailtime : ?
  • user_viewemail : Si l'adresse e-mail est publique ;
  • user_attachsig : Si la signature est ajoutée aux messages ;
  • user_allowhtml : Si le HTML est autorisé dans les messages ;
  • user_bbcode : Si le BBCode est autorisé dans les messages ;
  • user_smile : Si les smilies sont autorisés dans les messages ;
  • user_allowavatar : Si l'avatar est montré ;
  • user_allow_pm : Si le membre accepte les messages privés ;
  • user_allow_viewonline : Si le membre souhaite montrer sa présence en ligne ;
  • user_notify : Si le membre souhaite être prévenu par mail des réponses ;
  • user_notify_pm : Si le membre souhaite être prévenu par mail des messages privés ;
  • user_popup_pm : Si un popup est utilisé pour alerter de la présence de nouveaux messages privés ;
  • user_avatar : L'image avatar
  • user_avatar_type : D'où provient l'avatar (galerie, URI)
  • user_email : Adresse e-mail ;
  • user_icq : Numéro ICQ
  • user_website : Adresse du site Web ;
  • user_from : Localisation géographique ;
  • user_sig : Signature ;
  • user_sig_bbcode_uid : BBCode UID de la signature ;
  • user_aim : Contact AIM ;
  • user_yim : Contact Yahoo! Messenger ;
  • user_msnm : Contact Windows Live Messenger ;
  • user_occ : Occupation ;
  • user_interests : Centres d'intérêt ;
  • user_actkey : Clef d'enregistrement ;
  • user_newpasswd : Nouveau mot de passe.
Champs spécifiques à chaque site :
  • user_session_time : Date de la session ;
  • user_session_page : Page en cours ;
  • user_lastvisit : Dernière visite ;
  • user_style : Thème/gabarit choisi ;
  • user_lang : Langue du forum ;
  • user_dateformat : Format de la date ;
  • user_rank : Rang (r/r au nombre de messages)

II-B. Plan d'action

Nous allons commencer par la base de données en suivant le schéma ci-dessus, puis nous nous attaquerons aux scripts.

Nous mettrons ensuite en place une interface d'administration permettant à un administrateur de déplacer une catégorie depuis un site vers un autre site.

Enfin, il nous faudra apporter quelques corrections supplémentaires aux scripts des sites afin de tenir compte du référencement des catégories/forums/sujets/messages déplacés.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2007 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.