Le sujet d'origine sur la mutualisation de la 1.3 se trouve sur ibf . Ayant conversé avec Gilles dernièrement suite à un problème sur un sujet ou je parlais de ce sujet de mutualisation , il me disait qu'il songeait a supprimer les quelques sujets et forum "mod" se trouvant la-bas. Je viens donc donné ici la copie de la façon de mutualiser la 2.xxx . (le fichier de référence étant différent de la 1.3, j'ai fait les modifs dans le sujet d'origine)
Je l'ai fait et cela fonctionne... Le sujet d'origine a été posté par "dash"
-----------------------------------------------------------------------------------
Puisque plusieurs personnes le demandent, re-voici commnent faire pour mutualiser plusieurs forums.
AVERTISSEMENT: si vous ne comprennez pas les explications qui suivent, ou si vous ne savez pas ce que vous faites : abstenez-vous
Objectif :
* mutualiser plusieurs forums IPB, c'est à dire, partager, mettre en commun certaines tables SQL.
pre-requis :
* les forums utilisent les memes tables (cad meme version)
* les forums utilisent tous la meme base de donnees (meme serveur, meme db, meme login, meme passwd, mais differents prefixes de tables).
* le forum de reference sera designe ici par "forum maitre"
* les forums annexes seront designes ici par "forums esclaves" : il faudra modifier leur code source pour les faire dependre du "forum maitre"
* je suppose que le prefixe des tables utilises par le "forum maitre" est "ibf_"
* je suppose que les prefixes des tables utilises par les "forums escalves" sont differents de "ibf_" (prefixe reserve pour le "forum maitre")
étapes :
1°/ reperez les tables que vous voulez synchroniser (aidez vous du dictionnaire des donnees au besoin)
2°/ Pour chaque "forum esclave", ouvrez le fichier ./ips_kernel/class_db_mysql.php
et trouvez le code :
QUOTE
if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed )
{
$the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query);
}
{
$the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query);
}
ajoutez, le code en rouge :
QUOTE
if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed )
{
$the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query);
}
$common_tables=array('members', 'member_extra', 'pfields_data', 'pfields_content');
$sql_tbl_prefix_reference= 'ibf_';
foreach ($common_tables as $table)
if ( strpos($the_query, $this->obj['sql_tbl_prefix'].$table) )
{
$the_query = preg_replace("/".$this->obj['sql_tbl_prefix'].$table."/", $sql_tbl_prefix_reference.$table, $the_query);
}
{
$the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query);
}
$common_tables=array('members', 'member_extra', 'pfields_data', 'pfields_content');
$sql_tbl_prefix_reference= 'ibf_';
foreach ($common_tables as $table)
if ( strpos($the_query, $this->obj['sql_tbl_prefix'].$table) )
{
$the_query = preg_replace("/".$this->obj['sql_tbl_prefix'].$table."/", $sql_tbl_prefix_reference.$table, $the_query);
}
3°/ adaptez selon vos objectifs de synchronisation : il vous suffit de mettre dans le tableau $common_tables toutes les tables (sans prefixe) du "forum maitre" à partager.
4°/
CODE
$sql_tbl_prefix_reference= 'ibf_';
n'oubliez pas de changer le préfixe de la table du forum maître si besoin. Chez moi : ibf3_4°/ repetez cette modification pour chaque "forum esclave", enregistrez, uploadez.
5°/ dites merci (à Dash)
conclusion :
C'est a vous a adapter $common_tables pour determiner quelles tables du "forum maitre" vous voulez partager avec les "forums esclaves".
En tenant compte des relations existants entre les tables. Par exemple, si vous mutualisez ibf_forums, et pas ibf_topics, vous provoquerez des incohenrences, et ainsi de suite.
Bref, si vous ne savez pas vous y prendre : abstenez-vous
Je n'ai pas teste ce principe de mutualisation : inutile de me demander du support.
Vous avez a votre disposition : ces explications, un descriptif des tables SQL, la base de Connaissance, etc. Si tout cela ne vous suffit pas, c'est tant pis pour vous.
Merci de votre comprehension .
---------------------------------------------------------------------
Note de jean-mi : A quoi peut servie cette mutualisation ? A avoir plusieurs pages d'index pour un seul forum. La version 2.0 ne permettant pas d'avoir plusieurs catégories dans un sous forum.
Voir mes sites :
Créacroque
Croquelavie
ces deux forums partage (pour l'instant) :
CODE
'members', 'member_extra', 'membre_converge', 'admin_logs', 'admin_sessions', 'sessions ', 'groups', 'shoutbox', 'shoutbox_colors','shoutbox_exports', 'shoutbox_ignored', 'shoutbox_savedshouts', 'shoutbox_settings', 'shoutbox_stats', 'links', 'links_cats', 'links_comments', 'links_ratings',
J'ai donc récemment mutualisé aussi la shoutbox et la mod "links" ça marche impeccable !
-----------------------------------------------------------------------
Le sujet d'origine pour mutualiser la 1.3 :
C'est ICI sur I.B.F
jean-mi
