PHPBB-News sur PHPBB3

44 réponses - 33045 vues
Salut à tous, Je suis un p'tit nouveau sur cette communauté et j'y suis arrivé car je cherchais un script rapide pour faire le display de news sur mon site à partir du PHPBB.
Alors pour expliquer mon problème: j'ai installé recement un forum PHPBB2 mais suite à de nombreux spam j'ai décidé de passer à la version 3.0 un peu plus sécurisée.
J'ai installé le script de PHPBB-News sur mon ancien forum et il marche très bien. Par contre quand j'essaie de le passer dans la nouvelle version ben rien ne s'affiche.
Je touche un peu le PHP depuis quelques années mais n'ai pas envie de me lancer dans un reverse engineering de PHPBB3 pour voir d'ou vient le prob.
Voici les principales modif que j'ai faite (PHPBB2)
**:**
> define('IN_PHPBB', true);
$phpbb_root_path = 'forums/';
$theme = 'subSilver';
include_once($phpbb_root_path.'includes/template.php');
include($phpbb_root_path.'includes/functions.php');
$template = new Template($phpbb_root_path.'templates/'.$theme);
include_once($phpbb_root_path.'includes/bbcode.php');
$host = 'localhost';
$user = 'xxx';
$pass = 'xxx';
$bdd = 'xxx'; // votre base de donnée

mysql_connect($host, $user, $pass);
mysql_select_db($bdd) or die('Impossible de se connecter');
$table_prefix = 'phpbb_';
$sql = "SELECT t.topic_id, t.forum_id, t.topic_title, t.topic_time, t.topic_replies, t.topic_last_post_id, t.topic_views, t.topic_vote, u.username, u.user_id, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_allowsmile, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid
FROM " . $table_prefix. "forums f, " . $table_prefix. "topics t, " . $table_prefix. "posts p, " . $table_prefix. "users u, " . $table_prefix. "posts_text pt
WHERE f.forum_news = '" . TRUE . "'
AND t.forum_id = f.forum_id
AND p.topic_id = t.topic_id
AND p.post_id = t.topic_first_post_id
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id
AND t.topic_type = '0'
ORDER BY topic_time DESC";
Version PHPBB3
**:**
> define('IN_PHPBB', true);
$phpbb_root_path = 'phpbb3/';
$theme = 'subSilver2';
include_once($phpbb_root_path.'includes/template.php');
include($phpbb_root_path.'includes/functions.php');
$template = new Template($phpbb_root_path.'styles/'.$theme.'template/');
include_once($phpbb_root_path.'includes/bbcode.php');
$host = 'localhost';
$user = 'xxx';
$pass = 'xxx';
$bdd = 'xxx'; // votre base de donnée

mysql_connect($host, $user, $pass);
mysql_select_db($bdd) or die('Impossible de se connecter');
$table_prefix = 'phpbb3_';
$sql = "SELECT t.topic_id, t.forum_id, t.topic_title, t.topic_time, t.topic_replies, t.topic_last_post_id, t.topic_views, t.topic_vote, u.username, u.user_id, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_allowsmile, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid
FROM " . $table_prefix. "forums f, " . $table_prefix. "topics t, " . $table_prefix. "posts p, " . $table_prefix. "users u, " . $table_prefix. "posts_text pt
WHERE f.forum_news = '" . TRUE . "'
AND t.forum_id = f.forum_id
AND p.topic_id = t.topic_id
AND p.post_id = t.topic_first_post_id
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id
AND t.topic_type = '0'
ORDER BY topic_time DESC";
Apparement les tables n'ont pas réellement changé car la requête ne retourne aucune erreur, mais le système de template quand à lui oui, donc finalement rien ne s'affiche.
Si quelqu'un a une piste ou une solution, je suis très intéressé.
**:** > $table_prefix = 'phpbb3_';
$sql = "SELECT t.topic_id, t.forum_id, t.topic_title, t.topic_time, t.topic_first_post_id, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid, p.*
FROM " . $table_prefix. "forums f, " . $table_prefix. "topics t, " . $table_prefix. "posts p, " . $table_prefix. "users u
WHERE f.forum_news = '" . TRUE . "'
AND t.forum_id = f.forum_id
AND p.topic_id = t.topic_id
AND p.post_id = t.topic_first_post_id
AND u.user_id = p.poster_id
ORDER BY topic_time DESC";
Voici la manière dont j'ai réussi a avoir les, la table des posts a été enlevée dans la nouvelle version... Donc il y a une petite modification à faire du coté de la récupération du message.
**:**
> $message = bbencode_second_pass($data['post_text'], $data['bbcode_uid']);
Salut, Intéressant d'essayer de porter le script pour phpBB 3, à croire que ce script intéresse vraiment beaucoup de personne :-)
Effectivement, si le système de template à changer, cela ne fonctionnera plus. Il faudrai analyser une page type de phpBB 3 pour comprendre comment le nouveau système fonctionne.
Je suis sur que ce sont les quelques lignes avant la connexion à la BDD qui foirent.
Tu cherches de ton côté?
Bonsoir, étant moi même sur le point de passer à phpBB 3 je suis *très* intéressée par la compatibilité de ce script avec le nouveau forum (si ça peut motiver quelqu'un pour concocter le code magique !) :)
Si je pouvais avoir des nouvelles de moontek :-) J'essaierai d'y jeter un oeil quand j'aurai le temps ...
Salute, je suis toujours sur le coup (j'ai du mettre ca de coté depuis un moment) mais vu que des personnes sont intéressées je vais peut etre continuer.
J'ai un problème de compatibilité du bbcode malheureusement...
Salut, Ce n'est pas très dur de faire l'équivalant du script pour phpBB 3, j'ai poster des "info" dessus chez developpez.net
http://php.developpez.com/faq/?page=phpbb3
**Code **
``<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './chemin';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$host = 'localhost';
$user = 'root';
$pass = '';
$bdd = 'dev_phpbb3'; // votre base de donnée
mysql_connect($host, $user, $pass);
mysql_select_db($bdd) or die('Impossible de se connecter');
$table_prefix = 'annuaire_';
$sql = "SELECT p.*, t.topic_replies
FROM annuaire_posts p, annuaire_forums f, annuaire_topics t
WHERE p.topic_id = t.topic_id
AND p.forum_id = f.forum_id
AND f.forum_id = t.forum_id";
$req = mysql_query($sql);
//Initialisation de la variable "qui compte les news"

$j = 1;
// Instantiate BBCode if need be
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
while($data = @mysql_fetch_array($req))
{
$subject = $data['post_subject'];
//Affichage du titre
echo '<h2>'.$subject.'</h2>';
$message = $data['post_text'];
// Second parse bbcode here
if ($data['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($message, $data['bbcode_uid'], $data['bbcode_bitfield']);
}
$message = bbcode_nl2br($message);
//Affichage du contenu de la news
echo '<p>'.$message.'</p>';
//Affichage de l'auteur
echo '<h3>Poster par <a href="'.$phpbb_root_path;
echo 'profile.php?mode=viewprofile&u='.$data['user_id'].'">'.$data['username'].'</a>';
//De l'heure
echo ' le '.date('d/m/y', $data['post_time']).' - ';
//Des commentaires
echo '<a href="'.$phpbb_root_path.'viewtopic.php?t=';
echo $data['topic_id'].'">['.$data['topic_replies'].'] commentaire(s)</a></h3>';
//Si on atteints 5 news, on arrête
if($j >= 5)
{
break;
}
$j++;
}
@mysql_free_result($req);
?>``
Tester rapidement, j'ai fait au plus simple pour la requêtes j'ai pas fait de test je prend la liste de tout les postes.
Attention à l'encodage utf8 powaa
Il faut aussi modifier "chemin" pour indiquer le path du forum ;)
C'est vraiment experimental, je me suis pas plus plongé dans le code que ça :)
De même, ce forum m'interesse particuilièrement. Un système de news compatible avec phpbb3, c'est cool. Je voudrai savoir si il est possible d'intègrer la news au milieu de la page avec son template sans que toutes la page prennent le même templates?
Salut, pas le temps de regarder plus avant, j'ai fait ça rapidement en 5min mais c'est juste pour avoir une idée de comment ça fonctionne.
Le systeme de phpBB3 est un peu plus complexe que la version 2 et comme dit je n'ai pas vraiment regardé le code de cette nouvelle version.
Le code de Oyo fonctionne en effet mais le problème est qu'il retourne une erreur interne du système de template de PHPBB3. Evidement tout l'intérêt du script est que ca soit interfacable n'importe ou et surtout sans système de template. De mon coté j'ai investigué un petit peu et GENERATE_TEXT_FOR_DISPLAY est une fonction qui revient souvent sur les forums. Je n'ai pas encore eu l'occasion de l'expérimenter (dans mon ancien système ou celui de Oyo.

(44 résultats)


Catégories


Tags


Liens