Je poste ici car il s'agit d'une question assez technique.
Je travaille en ce moment à la migration d'un forum phpBB vers SPIP.
J'ai écrit à cet effet un script qui effectue la traduction et j'ai quasiment terminé les squelettes
J'en suis à l'affichage des avatars dans les messages. Les avatars phpBB ont été passés en fichier autonxxx.jpg (logo de l'auteur). Il y a un aussi squelette avatar.html qui est écrit comme suit :
le filtre avatar fait une requête SQL pour aller chercher les infos de l'auteur à partir de l'id_forum
infos_auteur récupère le nb de messages postés par cet auteur.
Je suis un peu embêté par le fait que SPIP ne fixe pas de contexte id_auteur dans une boucle FORUM car ça multiplie les exemplaires du squelette avatar dans le cache (entre autre).
Pour contourner le pb, j'ai essayé de coder directement le PHP suivant dans le squelette qui inclus avatar.php3 :
Ça ne fonctionne malheureusement pas mais je ne m'explique pas pourquoi.
l'absence de contexte id_auteur dans les boucle FORUMS est-elle voulue ? si non quel serait l'effort (je suis prêt à le faire si on m'explique un peu par où attaquer) pour l'ajouter à SPIP
Je suis un peu embêté par le fait que SPIP ne fixe pas de contexte
id_auteur dans une boucle FORUM car ça multiplie les exemplaires du
squelette avatar dans le cache (entre autre).
En effet il manque pas mal de contexte dans cette table ; je crois que BoOz
avait proposé des modifs qu'il devait compléter.... si on ajoute le contexte
il faut penser aussi à la mise à niveau de la base à coups de SQL... penser
alors peut-être à ajouter un id_thread qui donne le "pied" de la
conversation ?
Est-il nécessaire de mettre la BDD à niveau étant donné qu'id_auteur existe déjà dans la table spip_forum et qu'un message ne peut avoir qu'un seul auteur ?
PS : pour faisant ma trad phpBB -> SPIP, j'ai ciblé une structure de forums comme celle de BoOz. Je m'étais un peu pris les pieds dans le tapis : chaque message avait sont id_article renseigné. Quand j'ai commencé à travailler sur les squelettes, j'ai écrit des boucles pour récupérer les derniers messages (sujet ou réponse) d'un article particulier (un forum phpBB = un article SPIP) :
<B_derniers>
<ul>
<BOUCLE_derniers(FORUMS){id_article}{plat}{par date}{inverse}{0,20}>
<li><a href="message[(#ID_FORUM|num_page{8})].html"><span class="messtitre">[(#TITRE|supprime_bb)]</span></a> par [(#ID_FORUM|auteur_message)], <span class="dateheure">[(#DATE|affdate|aujourdhui)] à [(#DATE|affheure)]</span></li>
</BOUCLE_derniers>
</ul>
</B_derniers>
et tout marchait bien
Quand j'ai fait le squelette pour posté de nouveau message, je me suis aperçu que mes réponses à des sujets n'apparaissaient pas dans les derniers messages pour découvrir que SPIP ne renseigne que id_parent pour une réponse.
Du coup j'ai fait une légère modif dans inc-forum.php3 pour que id_article (ou id_rubrique ou id_breve, etc) soit renseigné aussi.
D'après mes test, les boucles forums fonctionnent comme avant avec en plus la possibilité que je voulais. Voici la modif (insérée à la ligne 421 de inc-forum.php3):
//
// ajout de jlb pour que l'article/rubrique/breve soit pris en compte même s'il s'agit d'une réponse
// à un autre message
//
if ($forum_id_article == 0 && isset($_GET['id_article'])) {
$forum_id_article = $_GET['id_article']; // --jlb
}
if ($forum_id_rubrique == 0 && isset($_GET['id_rubrique'])) {
$forum_id_rubrique = $_GET['id_rubrique']; // --jlb
}
if ($forum_id_breve == 0 && isset($_GET['id_breve'])) {
$forum_id_breve = $_GET['id_breve']; // --jlb
}
//
// fin de l'ajout
//
j'ai aussi fait quelques rectifs (remplacement de <br> par <br /> et suppression de <font face ...) dans inc-formulaires.php3
A noter qu'il ne s'agit pas de la dernière version de traduction de la base, là, le titre du sujet n'était pas également stocké dans le titre de la réponse d'où des réponses qui n'ont pas de titre
En gros il me semble qu'il manque pour les forums :
- id_thread effectivement
- la possibilité de limiter les tris des messages des articles à un secteur ou une branche.
Et, si on veut pouvoir faire comme les forums célèbres :
- la possibilité de connaitre la date de mise à jour d'une discussion (date d'ajout du dernier message) pour faire remonter les discussions en haut de la liste des qu'un messages est posté dedant.